您对在 Ubuntu 12.10 上安装 CUDA API 有什么印象?我读过一些与 gcc 不兼容的内容(这里例如),你必须重新安装 v.4.4,但即使这样,你的系统也可能会崩溃。因为我不想再重新安装系统(我最近做了几次:p)我想问你是否脚本在我的 amd proc 上的 x64 Ubuntu 12.10 上是安全的。
我接受的答案允许使用 4.6 安装 CUDA 3 组件,但驱动程序不合适,也许只有 gcc-4.4 和 g++-4.4 确实合适 - 现在我尝试 4.4
因此,请阅读 Soroosh129 的回答,然后按照他描述的方式应用我的其他建议。
补充笔记:
您必须将 CUDA 添加到 PATH 和 LD_LIBRARY_PATH,我已在我的主目录和根主文件夹中将以下内容添加到 .bashrc 中:
export PATH=$PATH:/usr/local/cuda-5.0/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-5.0/lib64:/lib
最后,我安装了没有驱动程序的 CUDA 工具包和示例,没有驱动程序,并使用我的默认“NVIDIA 二进制 Xorg 驱动程序、内核模块和来自 nvidia-current 的 VDPAU 库”。结果
> Toolkit:Installed, Samples:Instaled
but also
> "Incomplete installation. this didn't install CUDA driver. driver
> version at least 304.54 required for CUDA 5.0 to work"
这可能是正确安装的,我已经在时钟示例中完成了以下结果:
me@comp:/usr/local/cuda-5.0/samples/0_Simple/clock$ ls
clock.cu Makefile NsightEclipse.xml readme.txt
me@comp:/usr/local/cuda-5.0/samples/0_Simple/clock$ sudo make
[sudo] password for me:
/usr/local/cuda-5.0/bin/nvcc -m64 -gencode arch=compute_10,code=sm_10 -gencode arch=compute_20,code=sm_20 -gencode arch=compute_30,code=sm_30 -gencode arch=compute_35,code=sm_35 -I/usr/local/cuda-5.0/include -I. -I.. -I../../common/inc -o clock.o -c clock.cu
g++ -m64 -o clock clock.o -L/usr/local/cuda-5.0/lib64 -lcudart
mkdir -p ../../bin/linux/release
cp clock ../../bin/linux/release
me@comp:/usr/local/cuda-5.0/samples/0_Simple/clock$ ./clock
CUDA Clock sample
GPU Device 0: "GeForce GT 630" with compute capability 2.1
Total clocks = 54830
me@comp:/usr/local/cuda-5.0/samples/0_Simple/clock$
另一个例子:
me@comp:/usr/local/cuda-5.0/samples/0_Simple$ cd asyncAPI
me@comp:/usr/local/cuda-5.0/samples/0_Simple/asyncAPI$ ls
asyncAPI.cu Makefile NsightEclipse.xml readme.txt
me@comp:/usr/local/cuda-5.0/samples/0_Simple/asyncAPI$ sudo make
/usr/local/cuda-5.0/bin/nvcc -m64 -gencode arch=compute_10,code=sm_10 -gencode arch=compute_20,code=sm_20 -gencode arch=compute_30,code=sm_30 -gencode arch=compute_35,code=sm_35 -I/usr/local/cuda-5.0/include -I. -I.. -I../../common/inc -o asyncAPI.o -c asyncAPI.cu
g++ -m64 -o asyncAPI asyncAPI.o -L/usr/local/cuda-5.0/lib64 -lcudart
mkdir -p ../../bin/linux/release
cp asyncAPI ../../bin/linux/release
me@comp:/usr/local/cuda-5.0/samples/0_Simple/asyncAPI$ ls
asyncAPI asyncAPI.cu asyncAPI.o Makefile NsightEclipse.xml readme.txt
me@comp:/usr/local/cuda-5.0/samples/0_Simple/asyncAPI$ ./asyncAPI
[./asyncAPI] - Starting...
GPU Device 0: "GeForce GT 630" with compute capability 2.1
CUDA device [GeForce GT 630]
time spent executing by the GPU: 32.30
time spent by CPU in CUDA calls: 0.04
CPU executed 114066 iterations while waiting for GPU to finish
me@comp:/usr/local/cuda-5.0/samples/0_Simple/asyncAPI$
这里是 StackOverflow 上的相关问题。
谢谢Soroosh129!
答案1
安装 CUDA 工具包:
下载 CUDA 工具包:
首先从以下网址下载适用于 Ubuntu 11.10 的 CUDA 工具包这里。此外,还有一个可从 repos 获得的 CUDA 工具包,所以也许这会起作用,但我还没有测试它:
sudo apt-get install nvidia-cuda-toolkit
下载 *.run 文件后,将其放在您可以轻松找到的位置,例如桌面上。
先决条件:
在安装 CUDA 工具包之前,请先安装 freeglut3,因为 CUDA Samples 需要它:
sudo apt-get install freeglut3 freeglut3-dev
然后建议您为这个版本的 freeglut 建立一个 sim 链接以防万一,但如果您没有任何其他版本的 freeglut,您可能没问题:
首先删除现有的 SIM 链接:
sudo rm /usr/lib/libglut.so
然后添加您自己的 SIM 链接:
sudo ln -s /usr/lib/x86_64-linux-gnu/libglut.so.3 /usr/lib/libglut.so
现在需要删除现有的gcc
和g++
sim 链接,因为它们默认已经存在:
删除现有的 SIM 链接:
sudo rm /usr/bin/cpp
sudo rm /usr/bin/gcc
sudo rm /usr/bin/g++
然后安装gcc-4.6
(g++-4.6
您也可以选择安装 gcc 4.4,但我认为 4.6 更好):
sudo apt-get install gcc-4.6 g++-4.6
然后建立到这些编译器的 sim 链接,以便 CUDA 使用此编译器作为其主编译器:
sudo ln -s /usr/bin/cpp-4.6 /usr/bin/cpp
sudo ln -s /usr/bin/gcc-4.6 /usr/bin/gcc
sudo ln -s /usr/bin/g++-4.6 /usr/bin/g++
安装 CUDA 工具包:
按Ctrl + Alt + F1
,这将带您进入第一个虚拟终端。输入您的用户和密码,然后导航到您找到文件的文件夹,例如,如果您将其放在桌面上,请使用:
cd ~/Desktop/
然后给文件添加执行权限*.run
:
sudo chmod +x cudatoolkit*.run
替换cudatoolkit*.run
为下载文件的实际名称,在您的情况下为 cuda_5.0.35_linux_64_ubuntu11.10-1.run 。
然后停止lightdm
服务:
sudo service lightdm stop
最后运行 CUDA 工具包:
sudo ./cudatoolkit*.run
再次cudatoolkit*.run
用实际名称替换。然后按照屏幕上的说明进行操作。
笔记:
如果出现问题,即使使用 gcc-4.4,您也可以使用以下命令将其删除:
sudo apt-get remove gcc-4.x g++-4.x
将 x 替换为您的版本。
最后,您可以通过将 SIM 链接恢复为原始状态来将其恢复到原来状态:
sudo rm /usr/bin/cpp
sudo rm /usr/bin/gcc
sudo rm /usr/bin/g++
sudo ln -s /usr/bin/cpp-4.7 /usr/bin/cpp
sudo ln -s /usr/bin/gcc-4.7 /usr/bin/gcc
sudo ln -s /usr/bin/g++-4.7 /usr/bin/g++