0x00. Introduction
做了很久ML才发现自己的dlib还在用CPU跑
国内网上教程都太老了,现版本的dlib已经无法适配老版本的CUDA和cuDNN了,VS2015的C++11编译器好像也无法编译现版本的了,自己摸索了两天(万恶的CMake)实现了。。。。
0x01. Download
1.Visual Studio 2017
download link
note:选择框架如下
2.CUDA Toolkit 11.5
3.cudnn-11.5-windows-x64-v8.3.0.98
4.CMake 3.23.0-rc2
5.dlib (默认latest version)
可以执行: (git bash
)
git clone https://github.com/davisking/dlib.git
或者直接访问download link下载
0x02. Configure CUDA
1 执行CUDA Toolkit 11.5安装程序,默认安装即可
note:如果提示没有支持的VS版本则代表你的VS2017未安装,或未添加至环境变量。
2 将cuDNN压缩包的 lib include bin 目录下的文件放到CUDA对应目录下
3.系统环境变量添加如下
CUDA_SDK_PATH = C:\ProgramData\NVIDIA Corporation\CUDA Samples\v11.5
CUDA_SDK_BIN_PATH = %CUDA_SDK_PATH%\bin\win64
CUDA_SDK_LIB_PATH = %CUDA_SDK_PATH%\common\lib\x64
CUDA_BIN_PATH = %CUDA_PATH%\bin
CUDA_LIB_PATH = %CUDA_PATH%\lib\x64
4.Path下添加
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.5\lib\x64
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.5\bin
C:\ProgramData\NVIDIA Corporation\CUDA Samples\v11.5\common\lib\x64
C:\ProgramData\NVIDIA Corporation\CUDA Samples\v11.5\bin\win64
检验方法
输入以下命令
cd C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.5\extras\demo_suite
bandwidthTest.exe
deviceQuery.exe
执行结果应为 Result = PASS
0x03. Compile dlib
1. 打开CMake Browse至如下path
2. configure
note: 都2022年了,一定要选择x64 platform
3. 注意阅读result 结果应为
此时你的DLIB_USE_CUDA
选项应该是可选的
如果此处为OFF
,代表前面某一步错了,你要仔细阅读CMake configure的结果,写得很详细
我遇到过得错误有:
(1)CUDA simple program 无法编译
(2)cuDNN 检测异常
(3)无admin权限
这些问题基本上报错都很详细,网上很容易找到解决方案,但一定要针对你的error
4. 将如下两项启用
5. 再次configure
6. Generate (默认打开VS2017)
7. 选择Relese
8. 生成 - 生成解决方案
note: Generate结束后提示检测到文件修改,选择忽略
0x04. Setup dlib
1. cd至dlib目录下
2. 直接输入:
python setup.py install
note: 注意报错,你应该能看到检验CUDA和cuDNN后会显示DLIB WILL USE CUDA
0x05. Check
1. 控制台输入
python
import dlib
dlib.DLIB_USE_CUDA
输出应为True