由于实验室之前的电脑系统崩了,在重装了系统之后自然需要安装cuda,下面是自己在安装cuda的时候遇到的一些问题以及解决方案。
0. 基本信息
显卡比较老,是GTX 1060,操作系统选择了CentOS 7,安装选项选择了基本开发工具。操作系统安装完成后,已经更换了国内源并且已经yum -y updade过了。 具体安装过程主要参考了CentOS 7.6安装 NVIDIA 独立显卡驱动
1. Nvidia 驱动安装
首先,cuda的安装依赖于nvidia的驱动,因此需要先安装nvidia驱动。 在这里,我是新系统,所以是已知没有驱动的,如果已知有驱动,也即 nvidia-smi这个命令是有显示而不是提示command not found可以跳过第一步。
1.1 查看显卡型号
使用命令lspci | grep -i vga显示显卡信息,然后在nvidia官网提供的驱动上选择与你当前系统和显卡匹配的驱动程序。
nvidia驱动下载
然后搜索下载,等待下载完成。
1.2 安装依赖
由于我的操作系统在安装时选择了基本开发工具的选项,所以基本的git之类的命令都是已经存在的。至于具体依赖可以参考:CentOS7安装NVIDIA驱动
1.3 禁用nouveau
禁用的方式比较简单,主要参考了CentOS 7.6安装 NVIDIA 独立显卡驱动
1.4 问题处理
我没有遇到特别的问题,主要的问题有
1.4.1 设置了blacklist依旧会显示nouveau的信息
在按照参考博客处理后进行重启后,执行 lsmod | grep nouveau依旧存在nouveau的信息,重试了几次之后发现是由于上面的博客似乎构建了一个新的内核(一个原系统的备份,另一个是屏蔽了nouveau的内核),在原系统的内核中nouveau显然是存在的,但是在后面的内核中是不存在的,而默认的开机内核则是前者,因此需要选择后者作为安装驱动的内核才可以。 具体如何区分两者?简单地说,因为nouveau的存在,即使是文本界面,前者也会显得很清晰,而后者会显得特别模糊,相对来说字体会比较大。 实在不行就更换到另一个内核尝试一下。
1.4.2 在安装过程中出现的选择题如何选择
在这里,选项主要参考了nvidia选项选择
1.4.3 切换回图形界面
虽然已经可以使用nvidia-smi的命令,但是依然是文本界面,在使用init 5后虽然本次切到了图形界面,但是下次重启依旧是文本界面,这里参考了centos切换文本界面与图形界面
1.4.4 切换默认内核
由于系统的默认内核依旧是安装了nouveau的内核,所以为了方便使用,需要切换默认内核,这里还没有尝试过。
1.4.5 驱动的安装方式
后来在博客中看到驱动的安装除了上面说的编译方式,还有直接yum的方式,具体可以参考安装nvidia驱动 不过这种方法我也没有尝试过。
2. CUDA 安装
cuda官方下载链接
2.1 版本选择
cuda的版本有很多种,在官网上找到上一步安装的驱动所能够支持的版本即可,不要太新的,因为可能会存在bug。在这里我选了11.0 Update 1的版本。具体的安装步骤主要参考官方教程,期间出了一点小问题,不过还是比较容易解决。
至于版本的细节选择主要参看cuda版本选择具体的我也没怎么看,想着错了再说,结果没错。
在这里由于下载.run出现了Failed to ssl_handshake: closed的问题,所以选择下载.rpm进行安装。
2.2 按照官方步骤进行安装
在选择好版本后,下面会出现安装步骤。
wget https://developer.download.nvidia.com/compute/cuda/11.0.3/local_installers/cuda-repo-rhel7-11-0-local-11.0.3_450.51.06-1.x86_64.rpm
sudo rpm -i cuda-repo-rhel7-11-0-local-11.0.3_450.51.06-1.x86_64.rpm
sudo yum clean all
sudo yum -y install nvidia-driver-latest-dkms cuda
sudo yum -y install cuda-drivers
2.3 遇到的问题及处理
2.3.1 提示缺少dkms
在使用命令yum -y install dkms的时候遇到了无可用包的错误,参看了centos安装dkms
2.3.2 yum提示doesn’t have enough cached data to continue
yun安装问题 这里主要参考这篇博客进行解决。
2.4 环境变量配置
打开~文件夹下的.bashrc文件,在末尾添加:
export PATH=/usr/local/cuda-11.0/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-11.0/lib64:$LD_LIBRARY_PATH
然后source .bashrc使环境变量生效。
最后nvcc -V检查是否成功。