一、首先要看看你的显卡是不是NVIDA的,是的话支不支持CUDA。只要支持,那你最好把驱动更新到最近一年内的版本。
1、CUDA支持的GPUs | NVIDIA Developer 这个网站有点慢,耐心点
2、查看一下你的驱动版本号够不够,windows下一定要下载最低CUDA10.1的版本!之前下载CUDA10.0的卸载了吧。
二、下载安装CUDA10.1和对应版本CuDNN
安装之前要先卸载之前的版本,并且你的计算机得有VS2017或者VS2019等。
1、给出两种下载方式
(1)百度云链接:下载 提取码:wtaz
(2)官网链接:进入,不过我这边进官网挺慢的
2、安装CUDA
如果你C盘内存足够,建议精简安装。
3、解压后将CuDNN中的bin,include,x64文件夹中的文件(不是文件夹本身),复制到C盘你刚安装的CUDA路径里面。
三、下载安装对应的tensorflow2.x
截止2021/01/09,有对应关系
TF | CUDA | CuDNN |
2.0 | 10.0 | 7.6 |
2.1 | 10.1 | 7.6 |
2.2 | 10.1 | 7.6 |
2.3 | 10.1 | 7.6 |
如果你按照我上面的步骤安装了CUDA10.1及对应版本CuDNN,那你其实安装后三个都是可以的,我这里安装tensorflow2.1。
直接
pip install tensorflow-gpu==2.1.0
四、测试是否安装成功
运行下面的程序
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2' # 屏蔽通知信息,和警告信息,注意写在import tensorflow之前
import tensorflow as tf
tf.compat.v1.disable_eager_execution()
config = tf.compat.v1.ConfigProto(allow_soft_placement=True)
sess = tf.compat.v1.Session(config=config)
with tf.device('/gpu:0'):
a = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[2, 3], name='a')
b = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[3, 2], name='b')
c = tf.matmul(a, b)
print(sess.run(c))
if tf.test.gpu_device_name():
print('Default GPU Device: {}'.format(tf.test.gpu_device_name()))
else:
print("Please install GPU version of TF")
#print('GPU:', tf.test.is_gpu_available()) # 未来版本将会被移除,暂时可用,gpu可用返回True
print(tf.config.list_physical_devices('GPU'))
我的运行结果为
WARNING: Logging before flag parsing goes to stderr.
[[22. 28.]
[49. 64.]]
Default GPU Device: /device:GPU:0
[PhysicalDevice(name='/physical_device:GPU:0', device_type='GPU')]
五、报错处理
1、你可能会看到这样的
警告:Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA.
或者
FutureWarning: Passing (type, 1) or ‘1type’ as a synonym of type is deprecate.
第一种警告就是说你的GPU还不能使用,有独显的你还需要下一步的NVIDIA控制面板设置;
第二种警告可能是你的numpy版本比较高不适配,你指定安装一个低一点版本的numpy试试,如pip install numpy==1.16.0
。
2、还有可能会提示你缺失动态库
这个是非常奇怪的事,首先我找不全所有的dll,其次当我把找到的几个dll准备放到C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\bin 路径下,发现都要替换——也就是说本来这里面就都有啊!
于是我只能试试把这些在C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\bin所谓缺失的dll复制一份到 C:\Windows\System32,就成功了!
如果你还是不行,可以用一位知乎大佬提供的几个dll,用里面的dll全部替换掉你原来的C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\bin下的同名dll,再复制一份到C:\Windows\System32,应该就可以了。