这是我参与11月更文挑战的第4天,活动详情查看:2021最后一次更文挑战
软硬件环境
- Intel(R) Xeon(R) CPU E5-1607 v4 @ 3.10GHz
- GTX 1070 Ti 32G
- ubuntu 18.04 64bit
- anaconda with python 3.6
- CUDA 9.0
准备工作
如果之前通过 conda 或者 pip 安装过dlib, 先将它卸载掉
conda uninstall dlib
pip uninstall dlib
由于 dlib 是用 C++ 语言编写, 编译需要用到 cmake,通过apt-get安装
sudo apt-get install build-essential cmake
安装驱动
这个部分前文已经讲过了,参考 xugaoxiang.com/2020/09/24/…
安装CUDA
接下来开始安装 cuda,官方下载地址: developer.nvidia.com/cuda-downlo…
# 添加可执行的权限
chmod +x cuda_10.1.243_418.87.00_linux.run
# 执行安装脚本
sudo ./cuda_10.1.243_418.87.00_linux.run
安装过程中会有一些选项出现,根据自己的实际情况选择,比如要不要使用 cuda 自带的驱动,安装路径、是否安装 samples 等(每个版本不太一样)
默认情况下,cuda 被安装在了 /usr/local 下,同时还创建了一个软链接 cuda
然后配置下环境变量,编辑 ~/.bashrc 文件
export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
最后执行下source
source ~/.bashrc
这样几个重要的环境变量就立马生效了。或者,重新打开terminal,也同样生效。
安装cudnn
到官网 developer.nvidia.com/cudnn 去下载,这里需要注册,有点麻烦。需要注意的是,cudnn的版本是要跟cuda匹配的
tar xvf cudnn-10.1-linux-x64-v7.6.3.36.tgz
sudo cp cuda/include/cudnn*.h /usr/local/cuda-10.1/include
sudo cp -a cuda/lib64/libcudnn* /usr/local/cuda-10.1/lib64
# 添加读的权限
sudo chmod a+r /usr/local/cuda-10.1/lib64/libcudnn*
dlib的CUDA支持
接下来就可以进行源码编译了
# 拉取源码
git clone https://github.com/davisking/dlib.git
cd dlib
mkdir build
cd build
# 增加CUDA选项
cmake .. -DDLIB_USE_CUDA=1 -DUSE_AVX_INSTRUCTIONS=1
cmake --build .
cd ..
# 安装python模块
python setup.py install --yes USE_AVX_INSTRUCTIONS --yes DLIB_USE_CUDA
在编译的过程中注意看下终端的输出, 看看CUDA相关的状态
验证
在安装完毕后, 咱们来验证下是否安装成功
# python script
import dlib
print(dlib.__version__)
# 查看是否打开了CUDA加速
print(dlib.DLIB_USE_CUDA)
# 获取设备个数
print(dlib.cuda.get_num_devices())