第一步:查看自己电脑GPU的驱动程序版本
打开电脑控制面板,找到NVIDIA控制面板,找到驱动程序版本号(图中红框)。
第二步:拿GPU驱动程序版本号去匹配CUDA版本号
Table 3. CUDA Toolkit and Corresponding Driver Versions
CUDA Toolkit | Toolkit Driver Version | |
Linux x86_64 Driver Version | Windows x86_64 Driver Version | |
CUDA 11.7 Update 1 | >=515.65.01 | >=516.94 |
CUDA 11.7 GA | >=515.43.04 | >=516.01 |
CUDA 11.2.0 GA | >=460.27.03 | >=460.82 |
CUDA 11.1.1 Update 1 | >=455.32 | >=456.81 |
CUDA 11.1 GA | >=455.23 | >=456.38 |
…… | …… | …… |
CUDA 9.0 (9.0.76) | >= 384.81 | >= 385.54 |
CUDA 8.0 (8.0.61 GA2) | >= 375.26 | >= 376.51 |
CUDA 8.0 (8.0.44) | >= 367.48 | >= 369.30 |
CUDA 7.5 (7.5.16) | >= 352.31 | >= 353.66 |
CUDA 7.0 (7.0.28) | >= 346.46 | >= 347.62 |
通过匹配,小编符合条件的CUDA版本应该为8.0。
然后再去这个页面下载。
第三步:去下载对应的cuDNN
来到这个页面选择与CUDA版本匹配的cuDNN进行下载,下载前需要注册并一些信息。
其实还有一些其它选择,但因为第四步,将其它的都舍弃了。
第四步:选择对应的tensorflow
来到这个页面选择对应的tensorflow版本号。
在 Windows 环境中从源代码构建 | TensorFlowhttps://tensorflow.google.cn/install/source_windows
GPU
Version | Python version | Compiler | Build tools | cuDNN | CUDA |
tensorflow_gpu-2.9.0 | 3.7-3.10 | MSVC 2019 | Bazel 5.0.0 | 8.1 | 11.2 |
tensorflow_gpu-2.8.0 | 3.7-3.10 | MSVC 2019 | Bazel 4.2.1 | 8.1 | 11.2 |
…… | |||||
tensorflow_gpu-1.4.0 | 3.5-3.6 | MSVC 2015 update 3 | Cmake v3.6.3 | 6 | 8 |
tensorflow_gpu-1.3.0 | 3.5-3.6 | MSVC 2015 update 3 | Cmake v3.6.3 | 6 | 8 |
tensorflow_gpu-1.2.0 | 3.5-3.6 | MSVC 2015 update 3 | Cmake v3.6.3 | 5.1 | 8 |
tensorflow_gpu-1.1.0 | 3.5 | MSVC 2015 update 3 | Cmake v3.6.3 | 5.1 | 8 |
tensorflow_gpu-1.0.0 | 3.5 | MSVC 2015 update 3 | Cmake v3.6.3 | 5.1 | 8 |
这里选择了tensorflow_gpu-1.4.0。
第五步:下载tensorflow
小编这里直接使用的pip install,然后出现了以下情况:
ERROR: Could not find a version that satisfies the requirement tensorflow-gpu==1.4.0 (from versions: 1.13.1, 1.13.2, 1.14.0, 1.15.0, 1.15.2, 1.15.3, 1.15.4, 1.15.5, 2.0.0, 2.0.1, 2.0.2, 2.0.3, 2.0.4, 2.1.0, 2.1.1, 2.1.2, 2.1.3, 2.1.4, 2.2.0, 2.2.1, 2.2.2, 2.2.3, 2.3.0, 2.3.1, 2.3.2, 2.3.3, 2.3.4, 2.4.0, 2.4.1, 2.4.2, 2.4.3, 2.4.4, 2.5.0, 2.5.1, 2.5.2, 2.5.3, 2.6.0, 2.6.1, 2.6.2, 2.6.3, 2.6.4, 2.6.5, 2.7.0rc0, 2.7.0rc1, 2.7.0, 2.7.1, 2.7.2, 2.7.3, 2.7.4, 2.8.0rc0, 2.8.0rc1, 2.8.0, 2.8.1, 2.8.2, 2.8.3, 2.9.0rc0, 2.9.0rc1, 2.9.0rc2, 2.9.0, 2.9.1, 2.9.2, 2.10.0rc0, 2.10.0rc1, 2.10.0rc2, 2.10.0rc3)
什么意思呢?就是说找不到这个版本了,从报错上来看,现在可供选择的版本最低都是1.13.1了。
到这里,小编没有放弃,下载了2.0.0版本的。然后编译文件,提示“ Could not load dynamic library 'cudart64_100.dll'; dlerror: cudart64_100.dll not found”。
第六步:后续发展
小编来到这个页面,下载了缺失的dll文件。
tensorflow.python.framework.errors_impl.InternalError: cudaGetDevice() failed. Status: cudaGetErrorString symbol not found.
看来版本不匹配不行了。接着又去做了最后一次尝试,看看能不能更新GPU驱动,结果搜索发现有惊喜:
更新完显卡的驱动,又测试了一下,显示GPU已经可以调用。
import tensorflow as tf
print(tf.test.is_gpu_available())
大家其实可以看出来,现在我的显卡驱动版本跟其它东西的版本已经不匹配了,但仍然可以运行,小编就没有管它了~~~猜测可能是高版本向下兼容。
至此结束。
后记
后续在跑模型的时候遇到了许多问题,最后还是决定更新版本。