1.说明
- 很久之前安装好的一套,ms在不经意的系统更新时,更新了cuda,导致以前能在显卡中运行的代码现在只能在cpu中跑,故配置好后系统慎更新;
- tensorflow官方给出的tensorflow-gpu+cuda+cudnn+nvidia驱动之间的关系只能大概看看,因为给的版本号太粗,运气好一次就可以弄对,这次运气不好花了很长时间弄回来。**要特别注意cuda9.1版本绝对不能使用,因为没有任何tensorflow版本与之对应。**我因为手上有个cuda9.1,反而在这里浪费了很多时间。tensorflow2慎入,刚学或者资深玩家无所谓。像我这种半吊子绝对会因为API接口的变化苦不堪言。
- 特此记录
2. 碰到的问题
2.1 循环登录界面
系统的默认集显未禁用时会出现的现象。解决方法为将集显添加近黑名单,具体参考这里和这里,我在两种方法都用上后才起作用。
2.2 版本不匹配的现象
2.2.1 tensorflow-gpu 可以运行,但不调用gpu
tensorflow-gpu 可以运行,但是import tensorflow时给出的信息出现没有找到显卡、找到了显卡但是启动不了cuda等等;这是cuda到显卡驱动这一路有问题。
2.2.2 import tensorflow失败,找不到libcudnn, libcublas.so等库文件。可能原因:
- 系统环境变量添加错误,参考这里解决
- tensorflow与cuda、cuDNN版本不匹配,解决方式为使用匹配的软件版本。曾尝试添加软链接欺骗tensorflow让其调用更高版本库,以失败告终。cuDNN下载链接,需简单注册一下。cuda下载地址,比较大。官方可能会删除旧版本,所以哪怕下载错了,也要留下来。
3 我的可用软件版本
- Ubuntu 16.04 显卡1050 Ti
- Nvidia 390.48, 卸载时尽量不用暴力删除。安装时应选择放弃opengl,记得选no:
sudo /usr/bin/nvidia-uninstall
版本查看:
~$ nvidia-smi
Fri Feb 21 20:08:02 2020
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 390.48 Driver Version: 390.48 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 GeForce GTX 105... Off | 00000000:01:00.0 Off | N/A |
| N/A 47C P0 N/A / N/A | 411MiB / 4040MiB | 0% Default |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: GPU Memory |
| GPU PID Type Process name Usage |
|=============================================================================|
| 0 6277 C python 401MiB
- cuda 9.0.16
~$ nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2017 NVIDIA Corporation
Built on Fri_Sep__1_21:08:03_CDT_2017
Cuda compilation tools, release 9.0, V9.0.176
- cuDNN 7.6.5.32, 从上述链接下载后安装
sudo ./libcudnn7_7.6.5.32-1+cuda9.0_amd64.deb
- tensorflow-gpu-1.12.3, 先卸载旧版本,再强制安装指定版本:
sudo pip3 uninstall tensorflow-gpu
sudo pip3 install tesorflow-gpu==1.12.3