Ubuntu环境下配置使用GPU加速的dlib库

dlib是我用来做人脸识别的一个库,打算用mmod_human_face_detector.dat这个基于CNN的检测器实现,但是我之前直接用pycharm安装了dlib,所以无法在GPU上跑,导致跑起来很慢。所以尝试配置dlib+CUDA。

 

前提是已经安装CUDA和cuDNN。我的版本:CUDA10.0,cuDNN7.6.0

1、首先安装一些依赖库

sudo apt-get install build-essential cmake
sudo apt-get install libgtk-3-dev
sudo apt-get install libboost-all-dev

2、下载安装dlib

配置CUDA加速环境

git clone https://github.com/davisking/dlib.git
cd dlib
mkdir build
cd build
cmake .. -DDLIB_USE_CUDA=1 -DUSE_AVX_INSTRUCTIONS=1

但是!!执行到这一步就开始出错了

 应该是找不到合适的CUDA和cuDNN版本,或者他们的路径有问题。这就需要先确信你的CUDA和cuDNN在安装时把路径配置好,如果你确定路径没有问题,那就试试下边的命令:(对我没什么作用,但是你的不一定,可以尝试)

cmake .. -DDLIB_USE_CUDA=1 -DUSE_AVX_INSTRUCTIONS=1 -DCMAKE_PREFIX_PATH=/usr/local/cuda -DCUDA_cublas_LIBRARY=/usr/local/cuda/lib64/libcublas.so.10.0.130 -DCUDA_curand_LIBRARY=/usr/local/cuda/lib64/libcurand.so.10.0.130 -Dcusolver=/usr/local/cuda/lib64/libcusolver.so.10.0.130

 执行完之后还是有问题!!

因为它检测到我的CUDA是7.5!我虽然已经在上一篇博客中修改过了CUDA的默认版本,但是明显现在检测到的还是7.5的版本。所以,只好将7.5版本的一些安装包都删除。(因为我的CUDA7.5不是完整的,因为我没有通过.deb或者解压缩包来安装,可能是安装其他包的时候乱入了??所以在/usr/local/下边并没有cuda7.5这个文件夹,也找不到它的安装位置,所以只能通过一个叫新立得的软件,将名字里带7.5的包都删除了)

然后删掉build文件夹,重新执行cmake这个命令(因为长的那个命令对我没起作用,我执行这个就OK了)

cmake .. -DDLIB_USE_CUDA=1 -DUSE_AVX_INSTRUCTIONS=1

运行结果:主要看倒数那10多行就可以,看cnDNN和CUDA有没有被找到并调用

然后继续执行:

cmake --build .
cd ..

cmake --build .一般不会出现问题,一片绿色就对了。

 然后继续执行:

sudo python3 setup.py install --set USE_AVX_INSTRUCTIONS=yes --set DLIB_USE_CUDA=yes

参考其他的博客时,很多都会写成:

sudo python3 setup.py install --yes USE_AVX_INSTRUCTIONS --yes DLIB_USE_CUDA  #我的环境运行这种写法有问题

把yes都写到前边,但是我执行时会出现

yes后边的都被移去了!那这个yes选项就没有意义了。

所以改用我的方法,把yes放到等号后边,前边加set,执行成功。

 看2%上边的10行,如果有找到cuDNN并显示“DLIB WILL USE CUDA”,基本就成了。最终执行完无异常。

3、验证

>>python3

>>import dlib

>>dlib.DLIB_USE_CUDA

在这一步输出true,ok啦!

4、总结

其实很多错误都是因为CUDA的设置有问题,导致找不到路径。

还有就是不要轻易升级gcc和g++,就用系统自带的版本就可以(我的ubuntu16.04自带的gcc和g++版本都是5.4,出现问题后我怀疑是gcc编译器版本有问题,安装了高版本的gcc,出现了更多的问题!最终降回原版本)

最后,不要轻易放弃!我折腾了2天才找到问题的根源并修改好,主要是开始没发现cudn7.5乱入的问题,无意间用nvcc查cuda的版本才发现(之前一直用cat /usr/local/cuda/version.txt这个命令查询,一直以为cuda是正常的)。

 

 

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值