之前一直用的tensorflow cpu版的,后来数据量大一些之后,觉得有点算不动了,所以打算改用gpu版。
传闻gpu不太容易安装,谁知道这么坑!
光系统就重装了3遍,当然这里面是我自己有点强迫症,最后感觉能否安装成功与系统关系不大。下面是正经内容。
系统:cn_windows_7_ultimate_with_sp1_x64_dvd_u_677408(这个不重要)
笔记本配置:处理器Intel(R) Core(TM) i7-4710MQ CPU @2.50GHz,内存16G,显卡NVIDIA GeForce GTX 860M
python版本:3.5.2
tensorflow版本:tensorflow_gpu-1.4.0-cp35-cp35m-win_amd64.whl
安装过程:
1. 先安装Python3.5.2,记得添加路径,这个大家应该很熟了,不做过多介绍。
2. 安装Visual C++ Redistributable for Visual Studio 2015(https://www.microsoft.com/en-us/download/details.aspx?id=48145),或者直接安装Visual Studio 2015。
3.安装CUDA和cudnn
CUDA版本:cuda v8.0.60(cuda_8.0.61_windows.exe和cuda_8.0.61.2_windows.exe,注意有两个文件,一个是主文件,一个是补丁,都要装上)
cudnn版本:cudnn v6.0(cudnn-8.0-windows7-x64-v6.0)
先安装CUDA,先装cuda_8.0.61_windows.exe,再装cuda_8.0.61.2_windows.exe(补丁),然后解压cudnn-8.0-windows7-x64-v6.0,将解压得到的3个文件夹(bin, include, lib)复制到CUDA的安装路径(以我为例,复制到:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0)
这样CUDA就安装好了。想要查看一下的话,打开cmd,输入nvcc -V,会得到如下信息,
4. 安装tensorflow gpu 1.4
这里提示最好联网安装,我是将tensorflow_gpu-1.4.0-cp35-cp35m-win_amd64.whl下载到本地,采用pip安装的,在这过程中,需要什么别的包,本地没有,就自动从网上下载了。
我还没有试过离线安装,但是cpu版的离线安装我做过。离线安装的话,安装过程中,缺少什么包会有提示,根据提示先装上这些扩展包之后再重新安装tensorflow即可。
5. 安装好之后,在python中import tensorflow不报错,但是执行session的时候会报错,类似于“failed call to cuInit: CUDA_ERROR_NO_DEVICE”或者“设备是不可移动的,无法弹出或拔出问题”之类的错误,这个原因是显卡驱动版本过老引起的。
CUDA安装过程中自带一个版本的显卡驱动376.51,根据下表是符合要求的,但是实际上在我这里报错了。最后单独安装了一次显卡驱动,程序运行成功。
来源:https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html
我的显卡驱动信息如下:
示例程序:
import tensorflow as tf
import os
hello = tf.constant('Hello, TensorFlow!')
sess = tf.Session()
print (sess.run(hello))
a = tf.constant(10)
b = tf.constant(32)
print(sess.run(a+b))
最后程序运行结果如下:
好像看不太清……
复制一下是这样的:
"C:\Users\ZhuXiaobin\venv\LRE FDD\Scripts\python.exe" "F:/about phd/LRE FDD/测试文件.py"
2019-04-02 17:04:13.172967: I C:\tf_jenkins\home\workspace\rel-win\M\windows-gpu\PY\35\tensorflow\core\platform\cpu_feature_guard.cc:137] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX AVX2
2019-04-02 17:04:13.878973: I C:\tf_jenkins\home\workspace\rel-win\M\windows-gpu\PY\35\tensorflow\core\common_runtime\gpu\gpu_device.cc:1030] Found device 0 with properties:
name: GeForce GTX 860M major: 5 minor: 0 memoryClockRate(GHz): 0.54
pciBusID: 0000:01:00.0
totalMemory: 2.00GiB freeMemory: 1.91GiB
2019-04-02 17:04:13.878973: I C:\tf_jenkins\home\workspace\rel-win\M\windows-gpu\PY\35\tensorflow\core\common_runtime\gpu\gpu_device.cc:1120] Creating TensorFlow device (/device:GPU:0) -> (device: 0, name: GeForce GTX 860M, pci bus id: 0000:01:00.0, compute capability: 5.0)
b'Hello, TensorFlow!'
42
Process finished with exit code 0