最近多了很多点赞和关注,非常感谢支持。本意是将最近开发过程中遇到的问题记录一下,如果你觉得有些启发将荣幸之至。应博客内评论的请求,穿插一张主机工作站的装机操作,毕竟nano进行推理的边缘计算端,大多数操作如数据处理和训练任务都是在主机上进行。
安装NVIDIA显卡驱动
1 禁用nouveau,因其与NVIDIA显卡驱动会有些冲突:将这两个文件修改
sudo mv /lib/modules/4.13.0-36-generic/kernel/drivers/gpu/drm/nouveau/nouveau.ko /lib/modules/4.15.0-91-generic/kernel/drivers/gpu/drm/nouveau/nouveau.ko.org
sudo mv /lib/modules/4.15.0-91-generic/kernel/drivers/gpu/drm/nouveau/nouveau.ko /lib/modules/4.15.0-91-generic/kernel/drivers/gpu/drm/nouveau/nouveau.ko.org
记得要重启一下才能生效
2 更新内核,使修改生效
sudo update-initramfs -u
注意:一些比较老的主机上可能会要有警告:
W: Possible missing firmware /lib/firmware/i915/kbl_guc_ver9_14.bin for module i915
W: Possible missing firmware /lib/firmware/i915/bxt_guc_ver8_7.bin for module i915
这是因为在Linux下没有安装因特尔的一些图形固件,只需要下载并安装就好了。这个网址内你会看到很多固件的选择项,选择自己缺的那些(就是上面两句警告中的)下载:https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/tree/i915
将下载后的文件复制到 /lib/firmware/i915
文件夹下就大功告成,在命令行下输入以下代码如无任何输出即为禁用成功。
lsmod | grep nouveau
3 去NVIDIA的官网下载对应机器的驱动版本
http://www.nvidia.cn/Download/index.aspx?lang=cn
4 重启登录进入桌面后按住ctrl+alt+f1切换到命令行界面,然后在命令行界面下输入:
sudo service lightdm stop //这个是关闭图形界面,不执行会出错。
然后卸载掉原有驱动:
sudo apt-get remove nvidia-* //若安装过其他版本或其他方式安装过驱动执行此项
5 进行安装
给驱动run文件赋予执行权限:
sudo chmod a+x NVIDIA-Linux-x86_64-num.run
安装:
sudo ./NVIDIA-Linux-x86_64-num.run -no-x-check -no-nouveau-check -no-opengl-files //只有禁用opengl这样安装才不会出现循环登陆的问题
-no-x-check:安装驱动时关闭X服务
-no-nouveau-check:安装驱动时禁用nouveau
-no-opengl-files:只安装驱动文件,不安装OpenGL文件
6 安装过程中的一些错误
(1)The distribution-provided pre-install script failed! Are you sure you want to continue? 选择 yes 继续。
(2)Would you like to register the kernel module souces with DKMS? This will allow DKMS to automatically build a new module, if you install a different kernel later? 选择 No 继续。
(3)问题大概是:Nvidia's 32-bit compatibility libraries? 选择 No 继续,有的朋友私信说应该选择yes,我重新试了一下只有一个选项,那么你在安装时出现什么选项就选择那个吧。
(4)Would you like to run the nvidia-xconfigutility to automatically update your x configuration so that the NVIDIA x driver will be used when you restart x? Any pre-existing x confile will be backed up. 选择 Yes 继续
这些选项如果选择错误可能会导致安装失败,没关系,只要前面不出错,多尝试几次就好。
7 重新启动桌面并挂载Nvidia驱动:
sudo service lightdm startmodprobe nvidia
8 检查驱动是否安装成功:
nvidia-smi
截止到这里说明,我们也可以将驱动和cuda像这样分开安装也可以一同安装,在下载后安装CUDA时会有一个选项是一同安装drive,我们也可以在这步同时安装两者,以减少版本匹配的问题,但禁用nouveau 与service lightdm仍需要做。
安装Cuda
1 官网下载Cuda
https://developer.nvidia.com/cuda-10.1-download-archive-base
2 安装cuda
sudo sh cuda_num_linux.run
这里会出现More(0%),意味着你要阅读这些协议,连续按空格键就可跳过。接下来会出现一系列的确认项,按照提示输入accept/yes/no。
这里需要注意有一个选项是安装图形驱动的,由于前面已经安装了NVIDIA驱动,所以这里要选择no,一定要注意,不然之前的显卡驱动安装工作就白做了。
如果显示内存不足就清一清不依赖的软件包。
sudo apt-get autoremove
3 配置环境变量
sudo nano ~/.bashrcexport PATH=/usr/local/cuda-8.0/bin${PATH:+:${PATH}}export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
配置Cudnn
1 下载cudnn,注意机器类型和cuda版本与cudnn版本的匹配
https://developer.nvidia.com/rdp/cudnn-archive
2 切换到下载目录解压
sudo tar -zxvf ./cudnn-(版本号).tgz
3 复制include文件夹中文件
cd cuda/includesudo cp cudnn.h /usr/local/cuda/include #复制头文件
4 复制lib64文件夹中的文件
cd ..cd lib64sudo cp lib* /usr/local/cuda/lib64/ #复制动态链接库cd /usr/local/cuda/lib64/sudo rm -rf libcudnn.so libcudnn.so.5 #删除原有动态文件sudo ln -s libcudnn.so.5.1.10 libcudnn.so.5 #生成软衔接sudo ln -s libcudnn.so.5 libcudnn.so #生成软链接sudo ldconfig #使配置生效
5 测试cuda与cudnn是否安装成功
nvcc --version
如果出现cuda和cudnn的版本号则证明你上述的操作都是正确的。