编译MXNet耗时过久求助:执行指定命令已3小时是否异常?
MXNet编译耗时3小时是否正常?
首先可以明确:3小时的编译时长肯定是不正常的,尤其是你之前切换到998378a分支仅用5-6分钟就能完成,说明你的硬件配置完全足够支撑快速编译。下面给你分析可能的原因和排查建议:
可能的原因
- 分支差异导致编译量异常增加:你当前使用的是MXNet默认主分支(未切换到项目指定分支),主分支通常包含大量新增特性、未合并的代码或者更复杂的依赖逻辑,编译时需要处理的文件和算子远多于旧分支
998378a。但即使如此,正常情况下也不会耗时3小时,大概率是编译过程中出现了异常卡顿。 - 编译过程卡住而非缓慢执行:很多时候长时间无输出其实是编译卡在了某个环节——比如CUDA算子编译时内存不足导致死锁、依赖库版本不兼容导致进程挂起,或者并行编译时CPU/内存资源被完全耗尽,系统陷入假死状态。
排查&解决建议
- 检查终端输出状态:先看看编译终端的最后一行输出是什么,如果停在某个特定文件(比如
src/operator/cudnn/xxx.cu这类CUDA文件)很久没变化,基本可以确定是卡住了,而非正常编译。 - 清理后重新编译,降低并行数:先按
Ctrl+C终止当前编译,执行make clean清理所有编译产物,然后重新运行编译命令时,把并行数从$(nproc)改成更小的数值(比如-j4或-j8,根据你的CPU核心数调整),避免因并行过多导致资源过载卡住。 - 确认依赖版本匹配:检查当前MXNet分支对CUDA、CUDNN、OpenCV、openblas的版本要求,是否和你之前编译
998378a分支时的依赖版本一致。版本不兼容不仅会导致编译慢,还可能引发隐形错误。 - 切回项目指定分支:RoITransformer_DOTA这类项目通常会明确要求使用特定版本的MXNet(比如
998378a),建议你切回该分支编译,既能保证兼容性,也能维持正常的编译速度。
内容的提问来源于stack exchange,提问作者William Adams
相关产品推荐
相关产品推荐

