linux上多个CUDA切换使用(小白教程)

linux上多个CUDA切换使用

  • 前言
      • 禁止任何形式的转载!!
  • 安装CUDA
  • 下载cuDNN(非必须)
  • 方法一:通过软链接的方式切换
    • 1.首先查看本地安装的cuda有哪些版本:
    • 2.接着,查看当前使用的版本:
    • 3.查看环境变量
    • 4.更改环境变量 bashrc
    • 5.更改使用的CUDA版本
  • 方法二:仅临时切换(灵活方便、不干扰)


前言

禁止任何形式的转载!!

最近做实验需要用到不同版本的cuda,所以这里记录一下切换不同CUDA版本的过程,毕竟之后经常使用。

安装CUDA

首先在官网下载自己所需的cuda版本,比如我们需要新安装10.0版本的cuda,在官网根据自己系统选择对应的文件。我这里是需要安装10.0版本的:
先要确认一下自己系统的版本:

cat /proc/version

在这里插入图片描述
linux上多个CUDA切换使用(小白教程)_第1张图片
运行文件:

sudo bash cuda_10.0.130_410.48_linux.run 

运行bash后,弹出选项设置,首先接受(accept)协议,然后按照以下选项设置:
注意安装过程中提示是否安装驱动的时候选择n,是否创建软连接选择n(因为之前已经安装过CUDA了),其他都选择y:

Do you accept the previously read EULA?
accept/decline/quit: accept

 Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 410.48? #这里是由于之前已经安装过其它版本的
(y)es/(n)o/(q)uit: n

Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 410.48?
(y)es/(n)o/(q)uit: n
 
Install the CUDA 10.0 Toolkit?
(y)es/(n)o/(q)uit: y
 
Enter Toolkit Location
 [ default is /usr/local/cuda-10.0 ]: 
 
Do you want to install a symbolic link at /usr/local/cuda?
(y)es/(n)o/(q)uit: n
 
Install the CUDA 10.0 Samples?
(y)es/(n)o/(q)uit: n
 
Installing the CUDA Toolkit in /usr/local/cuda-10.0 ...

下载cuDNN(非必须)

先看一下自己使用的CUDA有没有cuDNN:cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
文件路径中的cuda是此时使用的软链接,如果没有使用软链接,那么就是正在使用的版本例如:cat /usr/local/cuda-10.0/include/cudnn.h | grep CUDNN_MAJOR -A 2

提示这个就是没有:-bash: cd: cat: No such file or directory
先不要着急,接着往下看

如果出现这个,则是有cuDNN:
linux上多个CUDA切换使用(小白教程)_第2张图片
但是,可能跟你安装的方式有关,点这里!!!

#上一个方法没验证,但是这个方法验证了 不仅是cudnn还可以验证cuda
function lib_installed() { /sbin/ldconfig -N -v $(sed 's/:/ /' <<< $LD_LIBRARY_PATH) 2>/dev/null | grep $1; }
function check() { lib_installed $1 && echo "$1 is installed" || echo "ERROR: $1 is NOT installed"; }
check libcudnn
check libcuda
#没报错就是安装好了 

在这里插入图片描述

我这里版本是7.6.5.
下载网站在这里,需要注册才能下载。
解压文件夹:tar -xvf cudnn-10.0-linux-x64-v7.6.5.tgz
将解压后的文件拷贝到相应的目录下:

sudo cp cuda/include/cudnn.h /usr/local/cuda-10.0/include/
sudo cp cuda/lib64/libcudnn* /usr/local/cuda-10.0/lib64/
sudo chmod a+r /usr/local/cuda-10.0/include/cudnn.h
sudo chmod a+r /usr/local/cuda-10.0/lib64/libcudnn*

如果你觉得版本低了,可以进行更改:这个自行百度,注意不要删错文件或者复制错地方。

方法一:通过软链接的方式切换

1.首先查看本地安装的cuda有哪些版本:

cd /usr/local/

在这里插入图片描述
我这里是有9.0和10.0两个版本的CUDA。
注意:浅蓝色的cuda是一个软链接,它指向我们指定的cuda版本。
可以查看这个软链接指向的是哪一个版本:(后面要修改的)

stat cuda

linux上多个CUDA切换使用(小白教程)_第3张图片
这里指向的是CUDA-9.0

2.接着,查看当前使用的版本:

nvcc -V

linux上多个CUDA切换使用(小白教程)_第4张图片当前使用的也是CUDA9.0的版本。(有时候,软链接和你现在使用的CUDA版本并不一致,说明此时环境变量并没有使用软链接,我看网上好多人有这个问题却不知道怎么解决)

3.查看环境变量

env

在这里插入图片描述我这里是以及修改过了,没有修改前是cuda9.0

4.更改环境变量 bashrc

先简单介绍一下:
如果你运行一个基于 Unix 或者类 Unix 的操作系统,bash 很有可能是作为默认终端被安装的。虽然存在很多不同的 shell,bash 却是最常见或许也是最主流的。bash 是一个能解释你输入进终端程序的东西,并且基于你的输入来运行命令。它在一定程度上支持使用脚本来定制功能,这时候就要用到 .bashrc 了。
为了加载你的配置,bash 在每次启动时都会加载 .bashrc 文件的内容。每个用户的 home 目录都有这个 shell 脚本。它用来存储并加载你的终端配置和环境变量
终端配置可以包含很多不同的东西。最常见的,.bashrc 文件包含用户想要用的别名。别名允许用户通过更短的名字或替代的名字来指向命令,对于经常在终端下工作的人来说这可是一个省时利器。

打开.bashrc 文件

vim ~/.bashrc

然后看最后几行:(我这里是已经更改过了,如果没有更改的话,里面是cuda-9.0,把cuda-9.0全部换成cuda即可,之后就可以通过软链接cuda来快速切换不同版本了)
linux上多个CUDA切换使用(小白教程)_第5张图片
(注意在设置环境变量时,使用的是cuda,而不是cuda-9.0和cuda-10.0,这主要是为了方便我们切换cuda版本,可以让我们不用每次都去该环境变量的值)

修改完之后保存退出,此时需要立即生效更改:(不然你对bashrc所做的任何修改将在下一次启动终端时生效。)

source ~/.bashrc

5.更改使用的CUDA版本

删除前:
在这里插入图片描述

删除原有的软链接:

sudo rm -rf  /usr/local/cuda

删除后:

在这里插入图片描述
重新建立软链接:

sudo ln -s  /usr/local/cuda-10.0 /usr/local/cuda

linux上多个CUDA切换使用(小白教程)_第6张图片

nvcc  -V

linux上多个CUDA切换使用(小白教程)_第7张图片
切换成功。

方法二:仅临时切换(灵活方便、不干扰)

Linux export 命令用于设置或显示环境变量。

在 shell 中执行程序时,shell 会提供一组环境变量。export 可新增,修改或删除环境变量,供后续执行的程序使用。export 的效力仅限于该次登陆操作。

-f  代表[变量名称]中为函数名称。
-n  删除指定的变量。变量实际上并未删除,只是不会输出到后续指令的执行环境中。
-p  列出所有的shell赋予程序的环境变量。

我这里查看自己现在的环境变量:

export -p |gerp PATH

linux上多个CUDA切换使用(小白教程)_第8张图片
此时使用的是CUDA10.2
现在进行更改:

export -p |gerp cuda 找到需要修改的地方进行替换

export CUDA_HOME="/usr/local/cuda-10.1"
export LD_LIBRARY_PATH=":/usr/local/cuda-10.1/lib64"
export PATH="/usr/local/cuda-10.1/bin:/home/iim321/anaconda3/condabin:/usr/local/cuda-10.1/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin"

此时已经修改成功了:

linux上多个CUDA切换使用(小白教程)_第9张图片
但是仅限于该窗口的操作,而不影响其他人,当你新开一个窗口查看时,仍为系统文件中的10.2。
linux上多个CUDA切换使用(小白教程)_第10张图片

你可能感兴趣的:(环境安装,linux,ubuntu,python,pytorch)