[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"solution-scenes-menu":3,"tech-detail-2445":4},true,{"id":5,"articleType":6,"articleInfoId":7,"tagIds":8,"title":9,"keyWords":10,"htmlDescribe":11,"type":12,"picUrl":13,"content":14,"htmlUrl":15,"enableFlag":6,"sort":16,"createFlag":6,"isDeleted":16,"creator":17,"modifier":17,"gmtCreate":18,"gmtModified":18},"2445",1,"821","83,84,9","畅联云平台丨InspireFace GPU (CUDA) 编译避坑指南(1)","美畅，美畅物联，畅联，畅联云平台，视频监控云平台，云视频监控，视频云平台，视频开放平台，视频感知云，视频接入网关，AIoT综合接入网关，视频中台，物联网中台，无插件播放，H265播放，Ehome，ISUP， GB28181，人脸识别，提取人脸特征码，向量库 ","原创技术分享丨美畅物联武工",6,"https:\u002F\u002Fqu-link.oss-cn-hangzhou.aliyuncs.com\u002F2026\u002F05\u002F06\u002Faabdfbdf-944d-4151-b552-fca00c2bd155.jpg","\u003Cp style=\"text-align: center;\">\u003Cimg src=\"https:\u002F\u002Fqu-link.oss-cn-hangzhou.aliyuncs.com\u002F2026\u002F05\u002F06\u002Fd044a869-f5ea-4ca9-ab0c-c6f515003c2e.png\" alt=\"\" data-href=\"https:\u002F\u002Fqu-link.oss-cn-hangzhou.aliyuncs.com\u002F2026\u002F05\u002F06\u002Fd044a869-f5ea-4ca9-ab0c-c6f515003c2e.png\" style=\"\">\u003C\u002Fp>\u003Cp style=\"text-align: center;\">\u003Cimg src=\"https:\u002F\u002Fqu-link.oss-cn-hangzhou.aliyuncs.com\u002F2026\u002F05\u002F06\u002F1888c31c-837f-46ba-a084-6079eef65e33.png\" alt=\"\" data-href=\"https:\u002F\u002Fqu-link.oss-cn-hangzhou.aliyuncs.com\u002F2026\u002F05\u002F06\u002F1888c31c-837f-46ba-a084-6079eef65e33.png\" style=\"width: 950.00px;height: 123.46px;\">\u003C\u002Fp>\u003Cp style=\"text-align: start;\">目前 InspireFace 社区版本仅支持 CPU 推理，在实际使用中，单次人脸识别耗时约 1 秒，仍然达不到预期效果。因此我下载了源码，尝试自行编译优化。过程中多次遇到编译结果仍是 CPU 版本的问题，踩了不少坑，最终总算成功。特此记录一下，希望能帮助后来者少走弯路。\u003C\u002Fp>\u003Cp style=\"text-align: start;\">\u003Cbr>\u003C\u002Fp>\u003Cp style=\"text-align: start;\">&gt; 适用环境：Linux x86_64 + NVIDIA GPU + CUDA 12.x + MNN CUDA 静态库 &nbsp;\u003C\u002Fp>\u003Cp style=\"text-align: start;\">&gt; 验证环境：Ubuntu 22.04 \u002F Tesla T4 \u002F CUDA 12.8 \u002F GCC 12.4\u003C\u002Fp>\u003Cp style=\"text-align: center;\">\u003Cimg src=\"https:\u002F\u002Fqu-link.oss-cn-hangzhou.aliyuncs.com\u002F2026\u002F05\u002F06\u002Fb288c111-4696-482f-b57b-c02a5c6a6b51.png\" alt=\"\" data-href=\"https:\u002F\u002Fqu-link.oss-cn-hangzhou.aliyuncs.com\u002F2026\u002F05\u002F06\u002Fb288c111-4696-482f-b57b-c02a5c6a6b51.png\" style=\"width: 957.00px;height: 415.44px;\">\u003C\u002Fp>\u003Cp style=\"text-align: start;\">一、前置条件\u003C\u002Fp>\u003Cp style=\"text-align: start;\">| 依赖 | 要求 | 验证命令 |\u003C\u002Fp>\u003Cp style=\"text-align: start;\">|------|------|----------|\u003C\u002Fp>\u003Cp style=\"text-align: start;\">| NVIDIA GPU | Compute Capability ≥ 6.0 | nvidia-smi |\u003C\u002Fp>\u003Cp style=\"text-align: start;\">| CUDA Toolkit | 12.x | nvcc --version|\u003C\u002Fp>\u003Cp style=\"text-align: start;\">| GCC | 12（推荐）| g++-12 --version |\u003C\u002Fp>\u003Cp style=\"text-align: start;\">| CMake | ≥ 3.20 | cmake --version |\u003C\u002Fp>\u003Cp style=\"text-align: start;\">| MNN | 带 CUDA 支持编译 | 见下方验证步骤 |\u003C\u002Fp>\u003Cp style=\"text-align: start;\"> 二、MNN CUDA 库编译与验证（最关键的一步！）\u003C\u002Fp>\u003Cp style=\"text-align: start;\">\u003Cbr>\u003C\u002Fp>\u003Cp style=\"text-align: start;\">2.1 编译 MNN\u003C\u002Fp>\u003Cp style=\"text-align: start;\"> &nbsp; 前提工作：\u003C\u002Fp>\u003Cp style=\"text-align: start;\"> &nbsp; &nbsp;cd \u002F你的路径\u002FMNN\u003C\u002Fp>\u003Cp style=\"text-align: start;\"> &nbsp; &nbsp;rm -rf build &amp;&amp; mkdir build &amp;&amp; cd build\u003C\u002Fp>\u003Cp style=\"text-align: start;\"> &nbsp; &nbsp; 配置：\u003C\u002Fp>\u003Cp style=\"text-align: center;\">\u003Cimg src=\"https:\u002F\u002Fqu-link.oss-cn-hangzhou.aliyuncs.com\u002F2026\u002F05\u002F06\u002Fd9ebd548-a1e8-4dbb-b013-9a633af5ede9.png\" alt=\"\" data-href=\"https:\u002F\u002Fqu-link.oss-cn-hangzhou.aliyuncs.com\u002F2026\u002F05\u002F06\u002Fd9ebd548-a1e8-4dbb-b013-9a633af5ede9.png\" style=\"\">\u003C\u002Fp>\u003Cp style=\"text-align: start;\">执行编译：\u003C\u002Fp>\u003Cp style=\"text-align: start;\"> \u003Cem>make -j$(nproc)\u003C\u002Fem>\u003C\u002Fp>\u003Cp style=\"text-align: center;\">\u003Cimg src=\"https:\u002F\u002Fqu-link.oss-cn-hangzhou.aliyuncs.com\u002F2026\u002F05\u002F06\u002F84aa2499-49ed-49c4-8257-d0447128fb44.png\" alt=\"\" data-href=\"https:\u002F\u002Fqu-link.oss-cn-hangzhou.aliyuncs.com\u002F2026\u002F05\u002F06\u002F84aa2499-49ed-49c4-8257-d0447128fb44.png\" style=\"\">\u003C\u002Fp>\u003Cp style=\"text-align: start;\">注意信息：\u003C\u002Fp>\u003Cp style=\"text-align: start;\"> &gt; -DCMAKE_CUDA_ARCHITECTURES 必须与 GPU 匹配：\u003C\u002Fp>\u003Cp style=\"text-align: start;\">&gt; - Tesla T4 → 75\u003C\u002Fp>\u003Cp style=\"text-align: start;\">&gt; - RTX 3090 → 86\u003C\u002Fp>\u003Cp style=\"text-align: start;\">&gt; - RTX 4090 → 89\u003C\u002Fp>\u003Cp style=\"text-align: start;\">&gt; - A100 → 80\u003C\u002Fp>\u003Cp style=\"text-align: center;\">\u003Cimg src=\"https:\u002F\u002Fqu-link.oss-cn-hangzhou.aliyuncs.com\u002F2026\u002F05\u002F06\u002F838ed566-07bd-4821-81b2-a4d02abe3937.png\" alt=\"\" data-href=\"https:\u002F\u002Fqu-link.oss-cn-hangzhou.aliyuncs.com\u002F2026\u002F05\u002F06\u002F838ed566-07bd-4821-81b2-a4d02abe3937.png\" style=\"\">\u003C\u002Fp>\u003Cp style=\"text-align: start;\">编译完成。\u003C\u002Fp>\u003Cp style=\"text-align: start;\">\u003Cstrong>2.2 &nbsp;坑\u003C\u002Fstrong> \u003Cstrong>libMNN.a 不包含 CUDA 实现\u003C\u002Fstrong>\u003C\u002Fp>\u003Cp style=\"text-align: start;\">\u003Cstrong>现象\u003C\u002Fstrong>：\u003C\u002Fp>\u003Cp style=\"text-align: center;\">\u003Cimg src=\"https:\u002F\u002Fqu-link.oss-cn-hangzhou.aliyuncs.com\u002F2026\u002F05\u002F06\u002Fffd408d4-ece9-41d4-8adb-9bcd4a7e61ec.png\" alt=\"\" data-href=\"https:\u002F\u002Fqu-link.oss-cn-hangzhou.aliyuncs.com\u002F2026\u002F05\u002F06\u002Fffd408d4-ece9-41d4-8adb-9bcd4a7e61ec.png\" style=\"\">\u003C\u002Fp>\u003Cp style=\"text-align: start;\">nm libMNN.a | grep CUDARuntimeWrapper\u003C\u002Fp>\u003Cp style=\"text-align: start;\"># 输出 U（未定义）而非 T（已定义）\u003C\u002Fp>\u003Cp style=\"text-align: start;\">\u003Cbr>\u003C\u002Fp>\u003Cp style=\"text-align: start;\">\u003Cstrong>原因：\u003C\u002Fstrong>\u003C\u002Fp>\u003Cp style=\"text-align: start;\">CUDA 后端代码在 source\u002Fbackend\u002Fcuda\u002F 目录下编译为 libMNN_Cuda_Main.so（动态库），不会自动生成 .a 静态库。\u003C\u002Fp>\u003Cp style=\"text-align: start;\">\u003Cstrong>解决：\u003C\u002Fstrong>\u003C\u002Fp>\u003Cp style=\"text-align: start;\">#从 .o 文件手动打包静态库：\u003C\u002Fp>\u003Cp style=\"text-align: start;\">cd &nbsp;你的路\u002FMNN\u002Fbuild\u002Fsource\u002Fbackend\u002Fcuda\u002FCMakeFiles\u002FMNN_Cuda_Main.dir\u003C\u002Fp>\u003Cp style=\"text-align: start;\"># 打包所有 .o 为静态库\u003C\u002Fp>\u003Cp style=\"text-align: start;\">find . -name \"*.o\" | xargs ar rcs \u002Fusr\u002Flocal\u002Flib\u002FlibMNN_Cuda_Main.a\u003C\u002Fp>\u003Cp style=\"text-align: start;\"># 验证：必须是 T\u003C\u002Fp>\u003Cp style=\"text-align: start;\">nm \u002Fusr\u002Flocal\u002Flib\u002FlibMNN_Cuda_Main.a | grep CUDARuntimeWrapper\u003C\u002Fp>\u003Cp style=\"text-align: start;\"># 期望输出：\u003C\u002Fp>\u003Cp style=\"text-align: center;\">\u003Cimg src=\"https:\u002F\u002Fqu-link.oss-cn-hangzhou.aliyuncs.com\u002F2026\u002F05\u002F06\u002F5ca3573e-6b36-4285-988e-4f5fa3d18a26.png\" alt=\"\" data-href=\"https:\u002F\u002Fqu-link.oss-cn-hangzhou.aliyuncs.com\u002F2026\u002F05\u002F06\u002F5ca3573e-6b36-4285-988e-4f5fa3d18a26.png\" style=\"\">\u003C\u002Fp>\u003Cp style=\"text-align: start;\">#将两个库都安装到系统目录：\u003C\u002Fp>\u003Cp style=\"text-align: start;\">cp \u002Fpath\u002Fto\u002FMNN\u002Fbuild\u002FlibMNN.a \u002Fusr\u002Flocal\u002Flib\u002F\u003C\u002Fp>\u003Cp style=\"text-align: start;\">\u003Cbr>\u003C\u002Fp>\u003Cp style=\"text-align: start;\">\u003Cstrong>2.3 验证清单\u003C\u002Fstrong>\u003C\u002Fp>\u003Cp style=\"text-align: start;\"> # 两个库都存在\u003C\u002Fp>\u003Cp style=\"text-align: start;\"> ls -la \u002Fusr\u002Flocal\u002Flib\u002FlibMNN.a \u002Fusr\u002Flocal\u002Flib\u002FlibMNN_Cuda_Main.a\u003C\u002Fp>\u003Cp style=\"text-align: start;\"> # libMNN.a 包含 CUDA 注册入口（U 是正常的）\u003C\u002Fp>\u003Cp style=\"text-align: start;\"> nm \u002Fusr\u002Flocal\u002Flib\u002FlibMNN.a | grep -i cuda | head -5\u003C\u002Fp>\u003Cp style=\"text-align: start;\"> # libMNN_Cuda_Main.a 包含 CUDA 实现（必须是 T）\u003C\u002Fp>\u003Cp style=\"text-align: start;\"> nm \u002Fusr\u002Flocal\u002Flib\u002FlibMNN_Cuda_Main.a | grep CUDARuntimeWrapper\u003C\u002Fp>","http:\u002F\u002Fwww.meichang.cc\u002Fweb-index\u002FO1RI8M1.html",0,"1","2026-05-06 10:03:18"]