Ubuntu 11.04 安装 cuda5.0
由于实验需要,于2016年10月15日再Ubuntu11.04安装cuda5.0,但是从网上查找Ubuntu11.04 只有对应的支持的cuda4 版本,cuda 5.0前面版本不支持IDE nisght ,为调试带来许多麻烦,等装完以后,才明白,为什么英伟达不支持Ubuntu11.04的cuda 5.0,原因是gcc 编译器的版本不对应,Ubuntu11.04默认的编译器是gcc4.5,但是cuda5.0对应的编译器必须是gcc4.6,这个后面还需要调整,首先在Nvidia官方网站上下载cuda5.0安装文件并且最好放在英文目录下,下载页面如下:https://developer.nvidia.com/cuda-downloads这里下载Ubuntu 11.10的包即可,下载时注意操作系统位宽的选择,本人的为32位系统,故选择Ubuntu 11.10 32bit版本。这里下载的包为完整的安装包,包括显卡驱动,工具链和Samples。要使用CUDA最好安装最新版本的驱动,具体软硬件环境能不能符合cuda的安装要求可以参考NVIDIA CUDA Getting Started Guide for Linux,这里重点提一下驱动版本,在NVIDIA CUDA Toolkit v5.0 Release Notes中,可以看到:
The CUDA 5.0 toolkit and samples require the associated CUDA driver version to be at least 304.54 on Linux and at least 306.94 on Windows.
如果之前安装的linux驱动低于304.54的话那还是再安装一遍吧,至少cuda5.0的完整安装包可以确保cuda工作正常。本人是安装完系统之后直接安装的显卡驱动,因此不许要移除原来的驱动,如果之前已经安装了Ubuntu提供的Nvidia附加驱动的话最好先移除驱动,本人上一次就是在没有移除驱动的情况下安装了cuda5.0的包结果出了不少问题。
在终端中执行如下命令:
$ sudo apt-get –purge remove nvidia-glx nvidia-glx-new
$ sudo apt-get –purge remove nvidia-settings nvidia-kernel-common
原有驱动删除之后最好重启一下,如果出现开机登录的时候出现花屏的话就说明原有驱动已经卸载完毕了,网上有的网友还说需要将Ubuntu集成的Nvidia驱动加入黑名单防止冲突,如果之前没有安装过ubuntu的附加驱动,是可以的,否则的话必须将Ubuntu集成的驱动加入黑名单,具体的做法是修改/etc/modprobe.d/blacklist.conf文件(此处仅仅此操作不够,需要查看 上一篇安装cuda4.3教程):
sudo gedit /etc/modprobe.d/blacklist.conf
$ sudo apt-get install freeglut3
这个共享库对于32位的Ubuntu被安装在/usr/lib/i386-linux-gnu/libglut.so.3,而对于64位的Ubuntu被安装在 /usr/lib/x86_64-linux-gnu/libglut.so.3,但cuda默认会去寻找/usr/lib/libglut.so,因此我们还需要加一个软链接。对于32位系统,在终端下输入:
$ sudo ln -s /usr/lib/i386-linux-gnu/libglut.so.3 /usr/lib/libglut.so
对于64位系统,在终端下输入:sudo ln -s /usr/lib/x86_64-linux-gnu/libglut.so.3 /usr/lib/libglut.so
接下来按Ctrl + Alt + F1进入tty命令行终端,登录之后首先将Ubuntu的X Server关闭,对于Red Hat/Centos来说直接执行sudo stopx即可,而Ubuntu12.04下需要采用lightdm作为它的X Server(注意:早期版本的Ubuntu使用gdm作为它的X Server,这是12.04关闭X Server与早期版本的区别之一。另外在KUbuntu12.04下的窗口管理器是kdm而不是lightdm),所以我们需要在终端下执行:
sudo service lightdm stop
成功后切换到cuda安装的目录,默认cuda不可执行,所以首先给cuda赋予可执行的权限:
$ chmod +x cuda_5.0.35_linux_32_ubuntu11.10-1.run
然后我们使用root权限进行安装:$ sudo ./cuda_5.0.35_linux_32_ubuntu11.10-1.run(安装以前不用更新gcc,此处gcc4.5才能安装成功)
首次安装可能会提示需要重启,重启之后再根据上面的步骤安装即可。首先会提示安装nvidia显卡驱动,然后安装Toolkit,最后安装Samples,一路yes并且按照默认的路径(回车即可)安装。安装的log文件放在/tmp目录下,如果安装过程中遇到什么问题的话,根据问题可以网上找相应的解决方法,不过本人除了第一次遇到缺少libglut.so文件之外,没有遇到过其它问题。安装完成后会提示需要设置环境变量和共享库路径:* Please make sure your PATH includes /usr/local/cuda-5.0/bin
* Please make sure your LD_LIBRARY_PATH
* for 32-bit Linux distributions includes /usr/local/cuda-5.0/lib
* for 64-bit Linux distributions includes /usr/local/cuda-5.0/lib64:/lib
* OR
* for 32-bit Linux distributions add /usr/local/cuda-5.0/lib
* for 64-bit Linux distributions add /usr/local/cuda-5.0/lib64 and /lib
* to /etc/ld.so.conf and run ldconfig as root
* To uninstall CUDA, remove the CUDA files in /usr/local/cuda-5.0
* Installation Complete
Please see CUDA_Getting_Started_Guide_For_Linux.pdf in /usr/local/cuda-5.0/doc/pdf for detailed information on setting up CUDA.
Logfile is /tmp/cuda_install_1939.log
安装完成之后,我们需要先切换回到图形界面验证显卡是否安装成功,输入:
$ sudo service lightdm start
如果驱动安装成功的话就能切回登录界面,并且会出现NVIDIA大大的LOGO(这点实在有点恶心),如果想去掉在登录屏幕出现之前的NVIDIA LOGO,需要在Xorg配置文件中做些手动修改。sudo gedit /etc/X11/xorg.conf
在Device部分找到Driver "nvidia"这一行,在这一行后面,加上: Option "NoLogo"保存后推出即可。但是本人新装的驱动居然找不到xorg.conf,后来查了一下新版的好像都是默认不带xorg的,不过我们可以使用命令生成xorg.conf:$ sudo nvidia-xconfig
接下来验证是否安装成功,在终端下输入:$ nvidia-settings
出现如下界面:可以看到NVIDIA Driver Version: 304.54,查看显卡是否装好运行,输入:
$ glxinfo | grep rendering
如果出现direct rendering: Yes 则表明显卡正在运行。另外如果之前没有安装过glxinfo命令的话需要安装开发包mesa-utils:
$ sudo apt-get install mesa-utils
接下来的工作是配置cuda toolkit的环境变量,终端下输入(环境变量也参考cuda4.3安装教程):$ sudo gedit /etc/profile
在最后加入:export PATH=/usr/local/cuda-5.0/bin:$PATH保存后退出,再source一下,使得修改后的环境变量立即生效,在终端中输入:
$ source /etc/profile
不过此方法仅限于该终端,没有全局效果,重启后即可使能全局效果。下面再加入共享库的路径:1. 对于Red Hat/Centos下可以直接在/etc/profile中添加路径:
对于32位的系统:export LD_LIBRARY_PATH=/usr/local/cuda-5.0/lib:$LD_LIBRARY_PATH
对于64位的系统:export LD_LIBRARY_PATH=/usr/local/cuda-5.0/lib64:/lib:$LD_LIBRARY_PATH
2. 对于Ubuntu 8.10以后的版本,export LD_LIBRARY_PATH在/etc/profile中不再适用,需要修改在/etc/ld.so.conf添加共享库的路径,一行一条,具体可以参考:http://blog.163.com/thinki_cao/blog/static/83944875201302713822395/
对于32位的系统添加:/usr/local/cuda-5.0/lib
对于64位的系统添加:(一行一条)
/usr/local/cuda-5.0/lib64
/lib
添加完之后还需要使得修改的路径生效,此法无须重启:
$ sudo ldconfig
再执行一下命令,验证路径是否添加成功
$ ldconfig -v|grep cuda
会出现相关的路径:/usr/local/cuda-5.0/lib:
libcudart.so.5.0 -> libcudart.so.5.0.35
libicudata.so.48 -> libicudata.so.48.1.1
libcuda.so.1 -> libcuda.so.304.54
sudo apt-get install g++ openmpi-bin openmpi-doc libopenmpi-dev freeglut3-dev libxi-dev libxmu-dev
默认Samples是安装在用户主目录下的,下面开始编译:
$ cd ~/NVIDIA_CUDA-5.0_Samples/
$ make -j4
这里其中多线程编译,对于双核以及更多核数的cpu能够明显减少编译时间,编译samples还是比较耗时间的。编译完成之后执行:
$ cd NVIDIA_CUDA-5.0_Samples/bin/linux/release/
$ ./deviceQuery
如果一切顺利的话会出现类似于下面的这些信息: