0 前言
因为之前在电脑上已经装了 Python3.6 + Tensorflow 1.11,所以用 Acaconda 创建了一个 Python2.7 的环境,在里面装 Tensorflow 1.4 ,但是这样有一个问题,就是 CUDA 不兼容,Tendoflow 1.4 需要 CUDA8.0 + cuDNN 6。
所以这里提供了一个能让多版本 CUDA 共存的办法。
1 下载
下载 CUDA 8.0:CUDA下载,下载 runfile
文件。
下载 cuDNN 6:cuDNN下载,下载 tgz
文件。
需要注册一个账号,而且能科学上网最好。。。
2 安装
安装 CUDA,我下载的文件名是 cuda_8.0.44_linux.run
,使用以下命令开始安装:
> sudo chmod 777 cuda_8.0.44_linux.run
> ./cuda_8.0.44_linux.run
然后是一个用户协议,一直按回车就可以了。
接下来是一些需要选择的问题:
Do you accept the previously read EULA?
accept/decline/quit: accept
Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 384.81?
(y)es/(n)o/(q)uit: n # 之前已经安装过驱动就不用了
Install the CUDA 9.0 Toolkit?
(y)es/(n)o/(q)uit: y
Enter Toolkit Location
[ default is /usr/local/cuda-9.0 ]: # 直接回车
/usr/local/cuda-9.0 is not writable.
Do you wish to run the installation with 'sudo'?
(y)es/(n)o: y
Please enter your password:
Do you want to install a symbolic link at /usr/local/cuda?
(y)es/(n)o/(q)uit: n
Install the CUDA 9.0 Samples?
(y)es/(n)o/(q)uit: n # y 也可以
然后安装 cuDNN,我下载的文件名是 cudnn-8.0-linux-x64-v6.0.tgz
,使用以下命令安装:
> tar xvzf cudnn-8.0-linux-x64-v6.0.tgz
> sudo cp cuda/include/cudnn.h /usr/local/cuda-8.0/include
> sudo cp cuda/include/cudnn.h /usr/local/cuda-8.0/include
> sudo chmod a+r /usr/local/cuda-8.0/include/cudnn.h /usr/local/cuda-9.0/lib64/libcudnn*
至此,安装完成。
3 自由切换
上一步之后,/usr/local/
目录下可以找到三个文件夹:
cuda # 软链接
cuda-8.0
cuda-9.0
然后切换的思路是将使用 cuda
为路径,需要 cuda-8.0
时就将 cuda
指向 cuda-8.0
,反之亦然。
我们先将配置文件改一下:
> gedit ~/.bashrc # bash 用户
> gedit ~/.zshrc # zsh 用户
我的原本是:
export PATH=/usr/local/cuda-9.0/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64:$LD_LIBRARY_PATH
将其中的 cuda-9.0
改为 cuda
:
export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
这时,切换只需:
> sudo rm -rf /usr/local/cuda
> sudo ln -s /usr/local/cuda-8.0 /usr/local/cuda # 切换到 9.0 同理
现在就可以自由切换了!
不过对于我这么懒的人来说,打两行这么长的命令还是麻烦了一点,如果你也很懒,不妨往下继续。
创建一个文件名叫 cuda8
,在里面写入:
> sudo rm -rf /usr/local/cuda
> sudo ln -s /usr/local/cuda-8.0 /usr/local/cuda # 切换到 9.0 同理
> nvcc -V # 显示当前版本号,看看是否切换成功
然后保存,执行:
> chmod 777 cuda8
> sudo cp /bin
然后以后想要切换到,cuda-8.0
只需在终端里输入 cuda8
就可以了。
再创建一个文件 cuda9
,按照以上步骤操作一遍就大功告成了。