因工作原因,需要离线安装CUDA9.0。
采用的步骤如下:
1.用另一台联网的笔记本到官网上下载cuda-repo-rhel7-9-0-local-9.0.176-1.x86_64.rpm,
2.然后采用yum install --downloadonly --downloaddir=tmp cuda-repo-rhel7-9-0-local-9.0.176-1.x86_64.rpm将所有的依赖包下载到tmp目录下。
3.将cuda-repo-rhel7-9-0-local-9.0.176-1.x86_64.rpm和所有的依赖包复制到nvidia Titan X的那台设备上。
4.在nvidia Titan X设备上使用yum install tmp/*.* 安装依赖包(我的环境中,因为有内部yum源,依赖包所需要的相关包能从内部yum源中找到,如果找不到,还需要从外网下载再复制进来)。
5.使用yum install cuda-repo-rhel7-9-0-local-9.0.176-1.x86_64.rpm安装cuda的rpm,完成后,并没有安装nvidia Titan X的驱动
6.使用yum install cuda,这一步会真正安装驱动,并将nvidia模块安装到内核。
7.这时使用nvidia-smi命令,能看到显卡信息,表明cuda安装成功。
安装过程中,也并未一帆风顺,以上7个步骤是反复实验后的总结。前面因为不熟悉,遇到了很多坑,其中有一次是这样的,
安装cuda时,可以成功,但在执行nvidia-smi 时,总是报错:NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver.
按照http://blog.csdn.net/yijuan_hw/article/details/53439408教程开始debug...
1.1 查看显卡状态
lspci | grep -i nvidia 可见1块显卡,正常
1.2 检测安装包无误
md5sum cuda-repo-rhel7-9-0-local-9.0.176-1.x86_64.rpm与官网的checksum对比,无误。
1.3 检查系统依赖
yum info dkms
yum info libvdpau
yum info kernel-devel
1.4 检查内核安装是否安装了nvdia模块
dkms status
nvidia, 384.81: added
发现并未安装。
modinfo nvdia
也未发现nvidia模块。
1.5 按教程去dkms build -m nvidia -v 384.81,发现也失败了。于是重新检测,究竟是哪一步导致内核没有加载nvidia模块,查询安装记录发现如下error:
Your kernel headers for kernel 3.10.0-327.el7.x86_64 cannot be found at
/lib/modules/3.10.0-327.el7.x86_64/build or /lib/modules/3.10.0-327.el7.x86_64/source.
Error! echo
Your kernel headers for kernel 3.10.0-327.el7.x86_64 cannot be found at
/lib/modules/3.10.0-327.el7.x86_64/build or /lib/modules/3.10.0-327.el7.x86_64/source.
warning: %post(nvidia-kmod-1:384.81-2.el7.x86_64) scriptlet failed, exit status 1
Non-fatal POSTIN scriptlet failure in rpm package 1:nvidia-kmod-384.81-2.el7.x86_64
kernel-devel有两个版本,我应该是用的kernel-devel-3.10.0-327.el7.x86_64(系统自带),而在yum download那步,yum给我下载了一个kernel-devel-3.10.0-693.5.2.el7.x86_64.rpm。
于是从tmp目录中去掉kernel-devel-3.10.0-693.5.2.el7.x86_64.rpm,重新安装,安装成功。
此外,有文章说开源的软件驱动nouveau和nvidia不兼容,需要在/usr/lib/modprobe.d/dist-blacklist.conf添加如下信息
blacklist nouveau
options nouveau modeset=0
本人在安装过程中,发现这一步可以省略,因为在cuda的安装过程中,会自动添加/usr/lib/modprobe.d/blacklist-nouveau.conf文件
# RPM Fusion blacklist for nouveau driver - you need to run as root:
# dracut -f /boot/initramfs-$(uname -r).img $(uname -r)
# if nouveau is loaded despite this file.
blacklist nouveau
这个文件会自动帮我们添加屏蔽nouveau。
cuda的历史版本在https://developer.nvidia.com/cuda-downloads页面的Legacy Releases。
参考链接
NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver
centos7安装cuda-8.0报错modprobe: FATAL: Module nvidia-uvm not found
网友评论