一、你的电脑、显卡支持GPU运算吗?
1.确认你是不是有支持GPU运算的nvidia的显卡:
lspci |grep VGA
看你的nvidia显卡型号是不是在这个网页的列表中,若是就OK了。
2.确认你的cpu是不是支持,目前CUDA开发环境2.3要求X86架构的cpu。
uname -m
输出结果是x86或x86_64的,都是支持的。
二、安装过程
三步:安装驱动、安装CUDA ToolKit、安装SDK。
下载这三个东西,请到这里。(提前的步骤:这一步只因为目前CUDA 2.3还不支持gcc 4.4,而Ubuntu9.10 默认安装的是gcc-4.4,我们把gcc 降为4.3。如果你不是9.10,可以省略。
cd /usr/bin
sudo rm gcc
sudo ln -s gcc-4.3 gcc
这是我看到的最简单而有效的办法,你也可以在遇到问题之后再做这一步,或者按照我文章末尾的链接中提到的方法去做。)
1. 安装CUDA驱动
切换到控制台:Ctrl+Alt+Fn (n不等于7)
关掉gdm: sudo /etc/init.d/gdm stop
卸载原来的驱动:nvidia-installer –uninstall
安装CUDA驱动:
cd [存放驱动安装文件的目录]
chmod +x cudadriver_2.3_linux_64_190.18.run
sudo ./cudadriver_2.3_linux_64_190.18.run
它可能会提示你gcc的版本不符,是否放弃,选择No,继续编译,应该不会有什么问题。
安装完之后你应该就可以用sudo gdm进入图形界面了。
2. 安装Cuda 的ToolKit
终端下:
cd [存放安装文件的目录]
chmod +x cudatoolkit_2.3_linux_64_Ubuntu9.04.run(因为只有9.04的,所以就用9.04的吧)
sudo ./cudatoolkit_2.3_linux_64_ubuntu9.04.run
这个应该很简单,不会出什么问题。
按照它的提示,如果你没自己手动设置安装路径的话,它被安装到了/usr/local/cuda目录中,以后要卸载就直接删除目录就可以了。
不过别忘了按照它的提示,把两个环境变量执行一遍:
export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib:$LD_LIBRARY_PATH
还有为了以后方便,把它们放到~/.bash_profile里。
注意:64位的机器把lib改为lib64!
3. 安装cuda 的SDK
终端下:
cd [存放安装文件的目录]
chmod +x cudasdk_2.3_linux.run
sudo ./cudasdk_2.3_linux.run
同样,它的提示很明确地告诉你,默认它被安装到了~/NVIDIA_GPU_Computing_SDK目录下,卸载只要把这个目录删掉就可以了。
(还可能遇到一个问题:
C/src/fluidsGL’
/usr/bin/ld: cannot find -lglut
collect2: ld returned 1 exit status
make[1]: *** [../../bin/linux/release/fluidsGL] Error 1
在新立得软件包管理器里把libglut3和libglut3-dev装上就好了。如果这样还不行,参考我文章末尾。)
三、最后,使用CUDA的例子,验证你是不是装好了CUDA。
终端下:
cd ~/NVIDIA_GPU_Computing_SDK/C
make
如果不出问题,在 ~/NVIDIA_GPU_Computing_SDK/C/bin/linux/release目录下就会有很多可执行文件了。 ~/NVIDIA_GPU_Computing_SDK/C
首先要做的是运行deviceQuery,如果你看到类似于下面的结果,看到我用绿色框标来的的“Test Passed”,就说明OK了。
(据官方文件说,在SELinux环境下,可能遇到对多用户设备访问的限制,这个在终端下输入setenforce 0。)
接下来,运行bandwidthTest ,以保证“CUDA cabable device”(不明白)能够正常通信。这也是看到“Test Passed”,就OK了。
接下来,你就可以运行那些好玩的例子了:
比如说:
particles模拟一个立方体里很多小球一起落下的。
fluidsGL模拟流体在外界扰动下的流动。
还有些fft变换、快速walsh变换、蒙特卡罗等。
Have Fun!
(Ubuntu 9.10下安装cuda可能遇到的问题一个是:__signbit或__signbitf或__signbitl或__signbitd “cannot be declared weak”,另一个就是“/usr/bin/ld: cannot find -lglut”,对于前一个问题,你还可以参考这篇文章提到的另一个解决方法,另外,在nvidia cuda的论坛上,这两个方法都有讨论,不过是英文的。