背景
我的显卡是 NVIDIA GeForce GTX 1650,之前折腾了好久已经装好了cuda10.2和对应版本的cudnn,如下图:
然后用Anaconda创建了新的环境并安装了Pytorch,在Pytorch环境下使用GPU也没问题。如下图:
现在想装tensorflow,用Anaconda创建了新的环境并安装了tensorflow-gpu-2.0版本,安装完成之后却发现在导包 import tensorflow as tf 的时候出现警告,提示cudart64_100.dll文件找不到,如下图:
我找到cuda所在目录,确实没有找到cudart64_100.dll文件,但却有cudart64_102.dll,如下图:
原来是cuda版本问题,我安装的tensorflow是2.0版本的,支持cuda10.0,所以找的文件是cudart64_100.dll,而我安装的是cuda10.2,对应的文件是cudart64_102.dll,猜测文件名字后缀即为对应的版本号。
目前还没找到cuda10.2对应支持的tensorflow版本,所以只能降级,卸载cuda10.2,重新装cuda10.1,如果有大佬知道其他好的方法望告知。
卸载cuda10.2
卸载前如下图:
卸载后如下图,只保留这些:
下载cuda10.1
https://developer.nvidia.com/cuda-toolkit-archive
下载cudnn7.6.5
https://developer.nvidia.com/rdp/cudnn-archive
安装cuda10.1
安装cudnn7.6.5
把下载的cudnn解压,会得到下面的文件:
找到刚才cuda10.1的安装路径:
把cudnn压缩包内对应的文件复制到bin、include、lib目录。
将路径添加到环境变量:
- C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\bin
- C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\include
- C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\lib
- C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\libnvvp
检查安装结果:
主要使用CUDA内置的deviceQuery.exe 和 bandwithTest.exe,进入到目录 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2\extras\demo_suite,在此路径下打开powershell,然后分别执行bandwidthTest.exe和deviceQuery.exe,应该得到下图:
Result=PASS 表示安装成功
Anaconda安装tensorflow-gpu-2.1
conda创建一个新的环境,取名为tensorflow-gpu-2.1:
- conda create -n tensorflow-gpu-2.1 python=3.7
- conda activate tensorflow-gpu-2.1
查看可供选择的tensorflow版本:
- conda search tensorflow-gpu
安装对应版本,等号后面为版本:
- conda install tensorflow-gpu=2.1.0
开始安装。
检查是否安装成功
import tensorflow as tf
tf.version
-
方法1:
import tensorflow as tf
if tf.test.gpu_device_name():
print(‘Default GPU Device:{}’.format(tf.test.gpu_device_name()))
else:
print(“Please install GPU version of TF”) -
方法2:
import tensorflow as tf
tf = tf.Session(config=tf.ConfigProto(log_device_placement=True))
tf.list_devices() -
方法3:
import tensorflow as tf
tf.test.gpu_device_name() -
方法4:
from tensorflow.python.client import device_lib
device_lib.list_local_devices()
说明安装成功,出现警告是说:你的机器是支持使用SSE指令的,使用SSE可以加速你的CPU计算。但是,你的Tensorflow库没有编译,所以用不了。这个警告没有关系,只是影响cpu计算速度而已。使用或者不使用SSE你的程序都是可以运行的。此外,如果你是使用的gpu版本,在gpu上的运行是不受SSE影响的。