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