[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"solution-scenes-menu":3,"tech-detail-2447":4},true,{"id":5,"title":6,"content":7,"picUrl":8,"tagIds":9,"keyWords":10,"htmlDescribe":11,"htmlUrl":12,"gmtCreate":13,"gmtModified":13,"articleInfoId":14},"2447","畅联云平台丨InspireFace GPU (CUDA) 编译避坑指南(1)","\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=\"\" loading=\"lazy\" \u002F>\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=\"\" loading=\"lazy\" \u002F>\u003C\u002Fp>\u003Cp>目前 InspireFace 社区版本仅支持 CPU 推理，在实际使用中，单次人脸识别耗时约 1 秒，仍然达不到预期效果。因此我下载了源码，尝试自行编译优化。过程中多次遇到编译结果仍是 CPU 版本的问题，踩了不少坑，最终总算成功。特此记录一下，希望能帮助后来者少走弯路。\u003C\u002Fp>\u003Cp>\u003Cbr \u002F>\u003C\u002Fp>\u003Cp>&gt; 适用环境：Linux x86_64 + NVIDIA GPU + CUDA 12.x + MNN CUDA 静态库  \u003C\u002Fp>\u003Cp>&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=\"\" loading=\"lazy\" \u002F>\u003C\u002Fp>\u003Cp>一、前置条件\u003C\u002Fp>\u003Cp>| 依赖 | 要求 | 验证命令 |\u003C\u002Fp>\u003Cp>|------|------|----------|\u003C\u002Fp>\u003Cp>| NVIDIA GPU | Compute Capability ≥ 6.0 | nvidia-smi |\u003C\u002Fp>\u003Cp>| CUDA Toolkit | 12.x | nvcc --version|\u003C\u002Fp>\u003Cp>| GCC | 12（推荐）| g++-12 --version |\u003C\u002Fp>\u003Cp>| CMake | ≥ 3.20 | cmake --version |\u003C\u002Fp>\u003Cp>| MNN | 带 CUDA 支持编译 | 见下方验证步骤 |\u003C\u002Fp>\u003Cp> 二、MNN CUDA 库编译与验证（最关键的一步！）\u003C\u002Fp>\u003Cp>\u003Cbr \u002F>\u003C\u002Fp>\u003Cp>2.1 编译 MNN\u003C\u002Fp>\u003Cp>   前提工作：\u003C\u002Fp>\u003Cp>    cd \u002F你的路径\u002FMNN\u003C\u002Fp>\u003Cp>    rm -rf build &amp;&amp; mkdir build &amp;&amp; cd build\u003C\u002Fp>\u003Cp>     配置：\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=\"\" loading=\"lazy\" \u002F>\u003C\u002Fp>\u003Cp>执行编译：\u003C\u002Fp>\u003Cp> \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=\"\" loading=\"lazy\" \u002F>\u003C\u002Fp>\u003Cp>注意信息：\u003C\u002Fp>\u003Cp> &gt; -DCMAKE_CUDA_ARCHITECTURES 必须与 GPU 匹配：\u003C\u002Fp>\u003Cp>&gt; - Tesla T4 → 75\u003C\u002Fp>\u003Cp>&gt; - RTX 3090 → 86\u003C\u002Fp>\u003Cp>&gt; - RTX 4090 → 89\u003C\u002Fp>\u003Cp>&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=\"\" loading=\"lazy\" \u002F>\u003C\u002Fp>\u003Cp>编译完成。\u003C\u002Fp>\u003Cp>\u003Cstrong>2.2  坑\u003C\u002Fstrong> \u003Cstrong>libMNN.a 不包含 CUDA 实现\u003C\u002Fstrong>\u003C\u002Fp>\u003Cp>\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=\"\" loading=\"lazy\" \u002F>\u003C\u002Fp>\u003Cp>nm libMNN.a | grep CUDARuntimeWrapper\u003C\u002Fp>\u003Cp># 输出 U（未定义）而非 T（已定义）\u003C\u002Fp>\u003Cp>\u003Cbr \u002F>\u003C\u002Fp>\u003Cp>\u003Cstrong>原因：\u003C\u002Fstrong>\u003C\u002Fp>\u003Cp>CUDA 后端代码在 source\u002Fbackend\u002Fcuda\u002F 目录下编译为 libMNN_Cuda_Main.so（动态库），不会自动生成 .a 静态库。\u003C\u002Fp>\u003Cp>\u003Cstrong>解决：\u003C\u002Fstrong>\u003C\u002Fp>\u003Cp>#从 .o 文件手动打包静态库：\u003C\u002Fp>\u003Cp>cd  你的路\u002FMNN\u002Fbuild\u002Fsource\u002Fbackend\u002Fcuda\u002FCMakeFiles\u002FMNN_Cuda_Main.dir\u003C\u002Fp>\u003Cp># 打包所有 .o 为静态库\u003C\u002Fp>\u003Cp>find . -name \"*.o\" | xargs ar rcs \u002Fusr\u002Flocal\u002Flib\u002FlibMNN_Cuda_Main.a\u003C\u002Fp>\u003Cp># 验证：必须是 T\u003C\u002Fp>\u003Cp>nm \u002Fusr\u002Flocal\u002Flib\u002FlibMNN_Cuda_Main.a | grep CUDARuntimeWrapper\u003C\u002Fp>\u003Cp># 期望输出：\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=\"\" loading=\"lazy\" \u002F>\u003C\u002Fp>\u003Cp>#将两个库都安装到系统目录：\u003C\u002Fp>\u003Cp>cp \u002Fpath\u002Fto\u002FMNN\u002Fbuild\u002FlibMNN.a \u002Fusr\u002Flocal\u002Flib\u002F\u003C\u002Fp>\u003Cp>\u003Cbr \u002F>\u003C\u002Fp>\u003Cp>\u003Cstrong>2.3 验证清单\u003C\u002Fstrong>\u003C\u002Fp>\u003Cp> # 两个库都存在\u003C\u002Fp>\u003Cp> ls -la \u002Fusr\u002Flocal\u002Flib\u002FlibMNN.a \u002Fusr\u002Flocal\u002Flib\u002FlibMNN_Cuda_Main.a\u003C\u002Fp>\u003Cp> # libMNN.a 包含 CUDA 注册入口（U 是正常的）\u003C\u002Fp>\u003Cp> nm \u002Fusr\u002Flocal\u002Flib\u002FlibMNN.a | grep -i cuda | head -5\u003C\u002Fp>\u003Cp> # libMNN_Cuda_Main.a 包含 CUDA 实现（必须是 T）\u003C\u002Fp>\u003Cp> nm \u002Fusr\u002Flocal\u002Flib\u002FlibMNN_Cuda_Main.a | grep CUDARuntimeWrapper\u003C\u002Fp>","https:\u002F\u002Fqu-link.oss-cn-hangzhou.aliyuncs.com\u002F2026\u002F05\u002F06\u002Faabdfbdf-944d-4151-b552-fca00c2bd155.jpg","83,84,9","美畅，美畅物联，畅联，畅联云平台，视频监控云平台，云视频监控，视频云平台，视频开放平台，视频感知云，视频接入网关，AIoT综合接入网关，视频中台，物联网中台，无插件播放，H265播放，Ehome，ISUP， GB28181，人脸识别，提取人脸特征码，向量库 ","原创技术分享丨美畅物联武工","http:\u002F\u002Fwww.24hlink.cn\u002Fweb-index\u002FYZF421X.html","2026-05-06 10:03:18","821"]