首先说一下,读官方文档真的特别重要。
我的系统版本是centos6.8,在centos上装GPU的文档很少,而且可能他们写的也不全面,会导致出现更多不好解决的问题。官方安装文档是最细致最权威的指导。
Linux上安装cuda的官方指导http://docs.nvidia.com/cuda/cuda-getting-started-guide-for-linux/#axzz4I2qb0WZZ
别人写的不错的安装介绍: http://www.jianshu.com/p/b88bbfa0f435
http://askubuntu.com/questions/672047/anyone-has-successfully-installed-cuda-7-5-on-ubuntu-14-04-3-lts-x86-64
安装cuda的时候它会自动找NVIDIA显卡的,不需要提前把NVIDIA显卡设置为默认显卡。
这里简单说一下我的安装经过:
1. 首先查看Cuda安装之前的配置需求
我的操作系统是centos6所以是这样的:
2.6.32以上版本的Linux内核,4.4.7以上版本的gcc。
2. 进行安装之前必要的查询
a) 查看是否安装NVIDIA显卡
lspci | grep -i nvidia
b) 查看当前操作系统至少要哪个版本才能支持cuda
uname -m && cat /etc/*release
这一步会得到两个结果,第二个要大于第一个的结果才能符合要求
c) 查看gcc版本
gcc -v
d) 查看glibc版本
ll /lib64/libc.so.*
e) 确保系统中有正确的Kernel Headers and Development Packages
查看系统正在运行的kernel版本
uname -r
安装
yum install kernel-devel-$(uname -r) kernel-headers-$(uname -r)
f) 下载文件
Linux上cuda官方下载链接https://developer.nvidia.com/cuda-downloads
g) 如果机器上有其他版本的cuda,先卸载掉
/usr/local/cuda-X.Y/bin/uninstall_cuda_X.Y.pl
/usr/bin/nvidia-uninstall
3. 安装
这是使用本地的run文件安装的方法。后边还会讲到在线安装的方法。别人的普遍反映是在线安装更好,但是我是使用本地run文件装好的。
在安装之前需要先把Nouveau(一个开源的显卡驱动)关掉。
先查看机器上Nouveau有没有运行
lsmod | grep nouveau
如果该命令有结果就是打开了,我的系统是没有输出的,所以我也就没有往下执行。如果需要关闭的话可以到安装文档上查看自己系统对应的关闭命令。
开始安装
chmod 777 cuda_7.5.18_linux.run
./ cuda_7.5.18_linux.run
安装时我的选择为
成功后得到的输出结果为
然后重启系统
然后确认设备节点已经正确创建。确认方式如下
ls /dev/nvidia*
如果有返回结果,就说明已经正确创建,如果没有,则自己写一个脚本进行创建,脚本内容如下
4. 安装完成后设置环境变量
vim /etc/profile
#在文件中加入如下内容
export PATH=/usr/local/cuda-7.5/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-7.5/lib64:$LD_LIBRARY_PATH
#关闭文件后执行
source /etc/profile
更改配置文件
vim /etc/ld.so.conf
/usr/local/cuda-7.5/lib64 #加到文件中
ldconfig
5. 跑个例子看看有没有正确安装
把例子拷到当前文件夹
cuda-install-samples-7.5.sh ./
进入例子的文件夹,并make
若顺利编译完成,则接下来便是进入到1_Utilities/deviceQuery目录中。执行设备请求的脚本。如果能够正确地得到设备的各项信息,则cuda安装完成。
我在安装过程中遇到的报错及解决方法记录:
- 1
make simple的时候报错 /usr/bin/ld: cannot find –lglut
解决方法:
到/usr/lib和/usr/local/lib中寻找libglut.so,没有找到,说明没有安装,现在安装一个。
参考http://navyaijm.blog.51cto.com/4647068/809424
安装命令如下:
yum install mesa*
yum install freeglut*
参考http://blog.csdn.net/wolf8sheep/article/details/20312723
- 2
找不到nvcc
原因:路径没有添加对。
nvcc在/usr/local/cuda-7.5/bin/nvcc
查看PATH的命令bash -c ‘echo $PATH’
返回值如果没有/usr/local/cuda-7.5/bin/
需要添加一下
export PATH=/usr/local/cuda-7.5/bin:$PATH
参考http://askubuntu.com/questions/428234/nvcc-not-found-but-only-when-using-sudo
- 3
后来在编译完sample后,发现例子都不能跑通。
./DeviceQuery
结果为找不到设备。如下图:
我一直找不到原因,后来发现是因为没有插电源。心塞塞/(ㄒoㄒ)/~~
6. 使用在线安装的方式进行
写在前面:以下这些只是替换前面写的安装过程的第3部分。
发现官方文档中有写,NVIDIA-driver有些外部依赖,必须通过第三方进行安装。
需要DKMS libvdpau等等,但所有的库文件都在epel第三方文件库里面
从http://dl.fedoraproject.org/pub/epel/6/x86_64/找到epel进行下载
安装命令
rpm -Uvh epel-release*rpm #我下载的是epel-release-6-8.noarch.rpm
安装libvdpau有些教程给的是
yum install libvdpau
但是我用该命令的时候一直说找不到可用包,后来换了一种方法。如下:【参考https://pkgs.org/centos-6/linuxtech-testing/libvdpau-0.7-3.el6.x86_64.rpm.html】下载了libva-vdpau-driver-0.7.4-3.el6.1.x86_64.rpm
Create the repository config file /etc/yum.repos.d/linuxtech-testing.repo:
[linuxtech-testing]
name=LinuxTECH Testing
baseurl=http://pkgrepo.linuxtech.net/el6/testing/
enabled=0
gpgcheck=1
gpgkey=http://pkgrepo.linuxtech.net/el6/release/RPM-GPG-KEY-LinuxTECH.NET
Install libvdpau rpm package:
# yum --enablerepo=linuxtech-testing install libvdpau
然后是关于xorg.conf文件的问题
如果在/etc/X11/下没有这个文件,那就不用管了。如果有的话,那需要手动处理一下。等安装好cuda之后,进入该目录下,一定删除xorg.conf,要不然无法显示(centos6环境下)。而ubuntu环境下不用处理,顺其自然。
然后安装cuda-repo--..rpm文件
从http://developer.download.nvidia.com/compute/cuda/repos/ 该地址下载合适自己的版本。我们的服务器是centos6.8的系统,所以我下载的是cuda-repo-rhel6-7.5-18.x86_64.rpm(后来我发现该文件在cuda的在线安装下载页面就有,不用这么麻烦得跑那么远)。
然后安装
rpm --install cuda-repo-rhel6-7.5-18.x86_64.rpm
然后清除Yum repository cache,命令是
yum clean expire-cache
此时安装cuda可以用
yum install cuda
如果找不到可用地址,可以在NVIDIA官网下载cuda_7.5.18_linux.run
这里边包含了NVIDIA-driver,所有可以不提前安装NVIDIA-driver。
安装完成以后,到/etc/X11目录下删除xorg.conf文件。
caffe在gpu下的安装与使用
安装过程就是编译和测试能否使用的过程,依然是
make all
make test
make runtest
make pycaffe
遇到问题:
.build_release/tools/caffe.o: In function `time()':
caffe.cpp:(.text+0x214e): undefined reference to `caffe::Net<float>::Net(std::string const&, caffe::Phase, caffe::Net<float> const*)'
collect2: error: ld returned 1 exit status
make: *** [.build_release/tools/caffe.bin] Error 1
原因:机器上还编译了另一个caffe
解决方法:进入另一个caffe的文件夹,make clean。
如果还是不行的话,就到/usr/lib,把libcaffe.so删掉(之前安装caffe遗留下来的)
rm /usr/lib/libcaffe.so*
参考http://blog.csdn.net/kc171154/article/details/49422463
之后caffe的测试和使用与前面讲述一样。可以参考
CentOS6.8 + cuda + caffe安装记录 (之二 caffe测试) http://blog.csdn.net/u011636440/article/details/52441023
CentOS6.8 + cuda + caffe安装记录 (之三 caffe使用)
http://blog.csdn.net/u011636440/article/details/52441519