linux能装两个cuda吗,在同一系统中安装两个或以上版本的CUDA

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 ldconfig

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 ldconfig

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! ~! 这篇文章可能多少有些疏漏,如果你遇到了问题,欢迎在下面留言。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值