编译dlib Python接口时出现“dlib isn't going to use CUDA”提示的问题
为啥编译dlib Python接口时没用到CUDA?
嗨,我来帮你捋捋这个问题~ 你已经成功用cmake编译了带CUDA支持的dlib C++本体,但Python接口却提示不使用CUDA,大概率是这几个原因:
可能的问题点
- 没先装dlib本体就直接搞Python接口:你之前只是编译了dlib的C++部分,但没完成安装步骤。Python接口的setup.py默认会从头重新构建,不会自动复用你之前配好CUDA的那个版本。
- setup.py没找到CUDA的文件:虽然系统里装了CUDA9.1,但可能环境变量没设对(比如
CUDA_HOME没指向9.1的路径),或者cmake3.11.0对CUDA9.1的检测有小bug,导致脚本没认出CUDA。 - 没主动告诉setup.py要开CUDA:dlib的Python接口有时候不会自动启用CUDA,得你明确说要开才行。
解决办法一步一步来
先把编译好的dlib本体装到系统里
回到你之前编译dlib的那个目录,跑这个命令:sudo make install这样带CUDA的dlib库就会被放到系统默认路径,Python接口就能找到它了。
强制让Python接口启用CUDA
进到dlib的python文件夹(或者放setup.py的地方),用这个命令构建:python setup.py install --yes USE_CUDA要是用pip装的话,就这么写:
pip install dlib --install-option="--yes USE_CUDA"检查CUDA的环境变量
跑命令前先确认CUDA能被系统识别,先设好环境变量:export CUDA_HOME=/usr/local/cuda-9.1 export LD_LIBRARY_PATH=$CUDA_HOME/lib64:$LD_LIBRARY_PATH export PATH=$CUDA_HOME/bin:$PATH然后敲
nvcc --version看看能不能显示CUDA9.1的版本,能显示就没问题。清理旧的构建缓存
要是之前试过构建Python接口,可能有缓存搞事情,先删干净:rm -rf build/ dist/ dlib.egg-info/然后再重新跑构建命令就行。
内容的提问来源于stack exchange,提问作者Peshmerge
相关产品推荐
相关产品推荐

