1. 前言
检测结果显示,TensorFlow的代码确实正在利用GPU时,我激动地鼓起了掌。
记录一下本次安装TensorFlow-GPU的历程。不过其中问题不多,就不再记录了。
最终配置:Win10 x64 + NVIDIA GeForce GTX850M + VS2017 + Python 3.6 + CUDA 9.0 + cuDNN 7.3.1 + tensorflow-gpu 1.11.0
2. 准备工作
- 一台Win7以上64位电脑
- 英伟达显卡,我的是NVIDIA GeForce GTX850M(看型号就知道是老笔记本)
- 电脑上已经安装了Python 3.4/3.5/3.6,我的是3.6
- 耐心,这次准备了同学给的一盒百奇
- 提前下载好一些文件:
- 从官网上搞一个VS2017社区版
- 更新好NVIDIA显卡驱动
- 下载CUDA9.0或9.2(我的是9.0,离线包都有一个多G大小),不要下载10.0,TensorFlow貌似还不支持10.0
- 下载cuDNN对应系统对应版本,需要在官网上注册账户填写一些调查信息
- tensorflow-gpu等whl文件,可以从文末的扩展下载网站上下载,避免在安装时出现网络问题
- 可以搞一个Python IDE,我用的是pycharm
- 应该还需要从微软官网上下载一个vc++ redistributable 2015
3. 方案
3.1. 安装 VS2017
为了安装CUDA,我们需要看一下CUDA的安装指南看它支持哪些系统哪些版本的VS,不过其实安装9.0以后的版本的话VS2017都是可以用的。
安装时要勾选上WIN10 SDK至少一个版本,缺了这个可能CUDA无法编译成功。仅供参考,我也还是不知其所以然,只是按文章照做,但个人感觉如果不需要在VS中使用CUDA的话应该是不需要安装这个的。
管他呢,安了再说。安装的时候注意C盘空间。
安装VS这个航母可是个耗时间的活计,可以先做别的事情去。
3.2. 安装 CUDA9.0 与cuDNN
下载好安装包之后,感觉不需要像看的文章里写的那样自定义安装,直接精简安装即可。至少在我的电脑上这样做是可以的。
- 安装完毕之后,可能需要进行一个修改版本号的操作:打开路径 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\include\crt 中的 host_config.h头文件,将其中 _MSC_VER > 1911 中的 1911 改为 1920或者其他比当前你电脑上的VS版本高的一个数字即可。
安装完毕之后,打开cmd,输入:nvcc -V
可以查看CUDA的版本,若出现正确的版本信息,即安装成功。
安装成功后,打开环境变量窗口,可以发现系统变量中多了 CUDA 相关的几个路径。然后还需要添加几个变量:
- 在用户变量Path下添加:
- C:\ProgramData\NVIDIA GPU Computing Toolkit\v9.0
- 在系统变量中添加:
- CUDA_SDK_PATH = C:\ProgramData\NVIDIA Corporation\CUDA Samples\v9.0
- CUDA_LIB_PATH = %CUDA_PATH%\lib\x64
- CUDA_BIN_PATH = %CUDA_PATH%\bin
- CUDA_SDK_BIN_PATH = %CUDA_SDK_PATH%\bin\win64
- CUDA_SDK_LIB_PATH = %CUDA_SDK_PATH%\common\lib\x64
设置完成后,在cmd中输入:set cuda
可以查看设置路径。
然后解压下载好的cuDNN压缩包,将其中的文件直接拷贝到cuda的对应目录去。cuda安装目录应该是在:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0 。
3.3. 安装 TensorFlow-GPU
采用的安装包就是官方文档安装页最下面的whl文件。具体流程依然是按照官方文档来用pip直接安装,可以参考我的上一篇文章:
https://blog.csdn.net/haibinwan1024/article/details/83188058
中的第三部分。(当然,有了这一堆whl文件,梯子什么的滚一边去吧)
- 注意: 最好不用把cpu和gpu版本同时安装。若同时安装了,最好先用
pip uninstall tensorflow-gpu
将gpu版卸载掉,再用pip uninstall tensorflow
把cpu版卸载掉,再重新pip install tensorflow-gpu
才行。
3.4. 验证代码是否使用GPU
安装成功的话,至少是可以通过简单的代码显示tensorflow的版本号的。
从文章中找到了一些代码,来进行激动人心的验证。若侵删。
- 代码一:查看电脑CPU和GPU
import os
from tensorflow.python.client import device_lib
os.environ[