红联Linux门户
Linux帮助

在同一系统中安装两个或以上版本的CUDA

发布时间:2015-11-22 15:15:21来源:linux网站作者:膝盖有支箭的猫先生

NVIDIA的CUDA更新实在过于迅速,而每次推出新版本的CUDA又会出现兼容性问题,笔者手中有很多旧版本的代码,移植到新版本中实在过于麻烦,而另一方面又不想在主机中装太多版本的Linux,也不想每次使用旧版本的CUDA代码又去重装一遍CUDA,所以一直在想有什么办法可以让一台设备(同一系统)中装多个版本的CUDA,然后仅仅通过一些命令来达到切换代码的目的。

经过一段时间的研究后,发现确实有这样的方法,为了说明该过程,以Ubuntu 12.04发行版作为例子,其他版本的Linux请自行参考相关文献,或修改以下命令及过程。
在每次安装CUDA的过程中总是被提示需要安装NVIDIA的CUDA驱动,实际上经过测试,该过程并非必要选项,也就是说可以使用第三方开的驱动就可以达到这一目的。


在Ubuntu或者Debian系统下,使用如下命令:

sudo apt-get install nvidia-current 

安装默认的NVIDIA显卡驱动后,就可以直接运行安装包了。

比如,在笔者的设备中需要安装CUDA5.0及CUDA4.0,为此除了最基本的build-essential外,你还需要安装旧版本的gcc及g++编译器

sudo apt-get install build-essential 
sudo apt-get install gcc-4.4 
sudo apt-get install g++-4.4 


根据需要,可能还需要安装OpenGL。

因此,在命令行中键入

sudo apt-get install freeglut3 freeglut3-dev 


接下来,你需要去NVIDIA的官网,下载你所需要的CUDA版本,5.0以下版本,显卡驱动,SDK样例,NVCC工具都是分开的,而5.0以降的版本则将这三者合并为一个.run的文件,所以你需要注意,除了CUDA 5.0以降,下载5.0以前版本的CUDA我们只需要NVCC工具(toolkits),最多根据个人需要再下载GPU SDK Samples。

譬如,安装5.0...

sudo chmod 755 cuda_5.0.35_linux_64_ubuntu11.10-1.run 
sudo ./cuda_5.0.35_linux_64_ubuntu11.10-1.run 

在其中安装选项里,只选择toolkits及sdk

其中toolkits的安装路径,建议设置为

/usr/local/cuda-x.x 

x.x表示为你所安装的CUDA版本,比如笔者所安装的分别是4.0和5.0。

因此对应的地址就为cuda-4.0 和cuda-5.0。

不出意外,这一步应该十分顺利就可以完成了,当然在安装4.0可能会遇到提示gcc / g++版本不匹配的问题,这也是为什么我们需要安装旧版本gcc和g++编译器的原因所在。


如果出现以上提示,修改方法有如下两种,根据自己需要进行选择。

其一,修改usr/bin中gcc和g++的链接,该方法可以通过以下命令实现;

sudo ln -s /usr/bin/gcc-4.4 /usr/bin/gcc 
sudo ln -s /usr/bin/g++-4.4 /usr/bin/g++ 

其二,在‘~/’目录下新建一个bin文件夹,并创建gcc-4.0和g++-4.0的链接,然后修改environment来达到这一目的。

cd 
mkdir bin 
sudo ln -s /usr/bin/gcc-4.4 /home/user/bin/gcc 
sudo ln -s /usr/bin/g++-4.4 /home/user/bin/g++ 

然后通过vim或gedit修改.bashrc文件,在其文件最后,添加一行

export PATH=$PATH:/home/user/bin/ 

然后在命令行中键入,以让设置生效

sudo ldconfig 


Toolkits安装完毕后,此时你需要将toolkits加入到environment中,这样当你使用nvcc的时候,也就不必键入它的完整路径了。

不过这里有个小trick,因为我们安装了多个不同版本的toolkits,也就意味说在系统中存在多个版本的nvcc,如果我们不做任何设置,那么每次使用一个版本的CUDA,我们不得不重新设置一遍environment,这样十分麻烦。

为此,你需要到CUDA的安装目录下,尤其将CUDA的bin和lib文件夹放置在同一级文件夹下。

也就是说在CUDA 5.0(/usr/local/cuda-5.0/)下,应该有bin 和 lib,而4.0(/usr/local/cuda-4.0/)中也要有有bin和lib这两个文件夹。

这样我们只需要修改指向cuda的链接,就可以达到任意切换不同版本的cuda的目的。


然后在.bashrc中,加入:

export LD_LIBRARY_PATH=/usr/local/cuda/lib64:/usr/local/cuda/lib 
export PATH=$PATH:/usr/local/cuda/bin 

之后,建议在‘~/’中创建一个Makefile

内容为:

help: 
echo '********************************************' 
echo 'cuda4 - use CUDA4.0' 
echo 'cuda5 - use CUDA5.0' 
echo 'test  - check nvcc version' 
 
cuda4: 
sudo rm /usr/local/cuda 
sudo ln -s /usr/local/cuda-4.0 /usr/local/cuda 
sudo rm /usr/bin/gcc /usr/bin/g++ 
sudo ln -s /usr/bin/gcc-4.4 /usr/bin/gcc 
sudo ln -s /usr/bin/g++-4.4 /usr/bin/g++ 
sudo ld config 
 
cuda5: 
sudo rm /usr/local/cuda 
sudo ln -s /usr/local/cuda-5.0 /usr/local/cuda 
sudo rm /usr/bin/gcc /usr/bin/g++ 
sudo ln -s /usr/bin/gcc-4.6 /usr/bin/gcc 
sudo ln -s /usr/bin/g++-4.6 /usr/bin/g++ 
sudo ld config 
 
test: 
nvcc --version 


接下来,你可能需要编译SDK Samples了,除了需要安装编译sdk samples所需的比如mpi等程序包外,你可能也需要创建几个链接

sudo ln -s /usr/lib/x86_64-linux-gnu/libglut.so /usr/lib/libglut.so 
sudo ln -s /usr/lib/nvidia-current/libcuda.so /usr/lib/libcuda.so 

之后,cd进入samples然后make

你就可以开始享受愉快的编程体验了,Good luck!


ubunt14.04安装cuda:http://www.linuxdiyf.com/linux/15027.html

Ubuntu安装CUDA驱动:http://www.linuxdiyf.com/linux/10093.html

Ubuntu下CUDA(含GPU卡驱动)安装过程:http://www.linuxdiyf.com/linux/13012.html

ubuntu Gnome 15.04/ubuntu 12.04装cuda 7.0经验贴:http://www.linuxdiyf.com/linux/12939.html

Caffe+Ubuntu 15.04+CUDA 7.0新手安装配置指南:http://www.linuxdiyf.com/linux/12708.html