ubuntu从零开始搭建cuda环境(三)

nvidia显卡驱动安装cuda,cudnn配置安装参考先前的教程

多版本cuda共存

cuda的卸载

卸载原有cuda,两种方式(.deb和.run两种方式安装,卸载方法不同):


.run方法卸载,

sudo /usr/local/cuda-6.5/bin/uninstall_cuda-6.5.pl

(有这个文件就说明是之前用.run文件安装的,没有则是用deb文件安装的),需要根据自己的cuda版本找到卸载脚本


.deb方法卸载,

sudo apt-get autoremove --purge cuda

配置多个cuda版本共同使用

统一下载 .run(local)文件格式比较方便

安装,sudo sh cuda_xxxxxxxxxx.run

安装时的选择需要注意,驱动不需再安装,toolkit必须安装,软连接可以yes,samples不需要。

对多个cuda版本同样操作安装(安装顺序不知是否有影响)

 

安装好后,可以在 /usr/local/目录下看到不同cuda的多个目录(有可能还有一个cuda软链接,可以用命令stat cuda看一下链接到哪个目录)

环境配置

一、

环境配置。这里在系统环境配置文件 /etc/profile里配置(也可以在~/.bashrc文件下设置,这两个文件区别参见https://www.jianshu.com/p/9d95e5e736da,如果你是用图形界面的服务器,然后还用了IDE,如spyder或者pycharm,一定要在/etc/profile配置,因为~/.bashrc配置只对shell生效)保存后。source /etc/profile 使得其立即生效。

如果想要切换cuda环境的话,更改PATH和LD_LIBRARY_PATH到相应的cuda文件夹就可以了。

二、(推荐这个)

/etc/profile

sudo gedit /etc/profile

export PATH="/usr/local/cuda/bin:$PATH"

export LD_LIBRARY_PATH="/usr/local/cuda/lib64:$LD_LIBRARY_PATH"

export LIBRARY_PATH="/usr/local/cuda/lib64:$LIBRARY_PATH"

然后重新加载环境变量

source /etc/profile

/.bashrc

配置CUDA相关环境变量
修改~/.bashrc文件(或~/.zhsrc) 在文件末尾添加环境变量

Tensorflow官方安装历程要求注意的是:配置PATH和LD_LIBRARY_PATH和CUDA_HOME环境变量.

vim ~/.bashrc #修改配置文件(如果你用的是zsh,则需要修改 ~/.zshrc文件)

#在文件结尾处添加
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64
export PATH=$PATH:/usr/local/cuda/bin
export CUDA_HOME=$CUDA_HOME:/usr/local/cuda
source ~/.bashrc

利用同样的方法下载你想安装的另一个版本的cuda工具包(注意是runfile类型),在安装过程中,注意cuda symbol link的选择(首次安装,选y,安装额外的版本,选n)

 

cuda多个版本的切换

在安装了多个cuda版本后,可以在/usr/local/目录下查看自己安装的cuda版本,如下图所示:


这里,cuda-10.0和cuda-10.1就是我们安装的两个cuda版本了,而cuda是一个软链接,它指向我们指定的cuda版本(上面在设置环境变量时,使用的是cuda,而不是cuda-10.0和cuda-10.1,这就是为了方便我们切换cuda版本,不需要每次都去改变环境变量的值)

可以使用stat命令查看当前cuda软链接指向的哪个cuda版本,如下所示:

可以看到,文件类型是符号链接(symbolic link),指向的目录是/usr/local/-10.1,当我们想使用cuda-10.0版本时,只需要删除当前的cuda软链接,然后重新建立指向cuda-10.0版本的软链接即可(注意名称还是cuda,因为要与bashrc文件里设置的保持一致)

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

这样子想切换其他版本的cuda,只需要改动建立软链接时cdua的路径即可

 

一个问题:

cuda版本,nvidia-smi和nvcc -V查询、cat查询、stat cuda查询(后三者一致),的查询结果不一致

参考:https://blog.csdn.net/ljp1919/article/details/102640512解释:

其实是因为CUDA 有两种API,分别是 运行时 API 和 驱动API,即所谓的 Runtime API 与 Driver API。
nvidia-smi 的结果除了有 GPU 驱动版本型号,还有 CUDA Driver API的型号,这里是 10.0。
而nvcc的结果是对应 CUDA Runtime API。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章