EnvSetup
cudnn和TensorRT的tar包下载页面需要使用NVIDIA账号登入
nvidia-driver
为了节省功耗和兼顾性能,nvidia设计了
optimus
混合独显和集显的技术方案,使用独显进行计算,独显进行显示optimus有如下几种模式:(1)仅使用集显(2)仅使用独显(3)同时使用集显和独显(只有在用到N卡时才使用N卡)
使用显卡不一定能够实现加速,因为将数据从内存搬到显存是需要时间的
安装
方案一:基于GUI
An alternate method of installing the NVIDIA driver was detected. (This is usually a package provided by your distributor.) A driver installed via that method may integrate better with your system than a driver installed by nvidia-installer. Please review the message provided by the maintainer of this alternate installation method and decide how to proceed: The NVIDIA driver provided by Ubuntu can be installed by launching the "Software & Updates" application, and by selecting the NVIDIA driver from the "Additional Drivers" tab.
即使用ubuntu开发者提供的驱动包,会有更好的兼容性
方案二:用apt安装显卡驱动
本部分等价于在gui来安装显卡驱动
步骤一:查看可安装的驱动
备注
在ubuntu16中执行时或返回空值,则可以使用 官网安装包 进行安装
sudo apt update
查看能用的驱动版本
sudo ubuntu-drivers devices
如果返回空值,则这种方法无效,则需要到官网上进行
步骤二:选择相关版本并安装,例如:
sudo apt-get install nvidia-driver-450
步骤三:验证(有时需要重启后才能生效)
nvidia-smi
方案三:官网安装包下载
步骤一:在官网选择适合的driver安装包进行下载
步骤二:安装安装包和执行
安装一些相关依赖,否则会有warning
sudo apt install pkg-config libglvnd-dev
切换至非图形化界面
sudo systemctl isolate multi-user.target
如显示nvidia-drm正在使用,则关闭该内核模块
sudo modprobe -r nvidia-drm
步骤三:验证
nvidia-smi
卸载
--- 方法一(适用于用安装包安装的)
nvidia-uninstall
--- 方法二(适用于用apt安装)
sudo apt purge nvidia-driver-*
sudo apt autoremove
解决方案
显卡库版本和驱动版本不同步的问题(preview)
显卡库版本更新但显卡驱动版本没有同步更新时会显示:
nvidia-smi
Failed to initialize NVML: Driver/library version mismatch
显示显卡驱动内核版本的指令
cat /proc/driver/nvidia/version
NVRM version: NVIDIA UNIX x86_64 Kernel Module 455.38 Thu Oct 22 06:06:59 UTC 2020
GCC version: gcc version 7.5.0 (Ubuntu 7.5.0-3ubuntu1~18.04)
一般可以选择重装,若有DKMS时可尝试重启
DKMS
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?
此处选择yes,当内核更新时,显卡驱动也会进行更新,而不用自己再手动去升级了
解决nouveau冲突问题
nouveau
(开源,但功能非常少)和nvidia driver
都是nvidia的显卡驱动。部分计算机默认使用nouveau
作为驱动,那么在这些机子上装N卡官网驱动时,就有冲突的问题,需要先关闭nouveau模块(记得update)。部分版本(如460)可以在安装时,提供一个选项,替我们完成这一步(相关文件为
/etc/modprobe.d/nvidia-installer-disable-nouveau.conf
文件)
可用该指定判断当前系统有无nouveau模块
lsmod | grep nou
重新使用nouveau
取消掉
/usr/lib/modprobe.d
或者/etc/modprobe.d
中屏蔽nouveau的配置即可
注意
注意这两个位置都可能有
更新内核配置
sudo update-initramfs -u
5.14内核下用安装包安装驱动有问题
使用NVIDIA-Linux-x86_64-470.57.02安装时会出现如链接上的报错,error: ‘struct task_struct’ has no member named ‘state’; did you mean ‘__state’?
;从470.74开始该BUG已修复,安装更新的显卡驱动即可。
无法调节亮度
内核版本为5.14,已安装显卡驱动,原先只启动了独显
步骤一:查看有无使用集显
sudo lshw -c display
发现只使用了独显,从bios中设置混合模式
启动后发现电脑黑屏,让电脑自动生成X配置文档

备注
实测中,ubuntu16.04 4.15内核,如上设置无效
30系gpu频闪与卡顿
垂直同步不生效(驱动460)
无反应,无提示语Running synchronized to the vertical refresh. The framerate should be
approximately the same as the monitor refresh rate.
__GL_SYNC_TO_VBLANK=1 glxgears
安装最新版的470驱动即解决问题
显卡模式切换
命令行
prime-select --help
Usage: /usr/bin/prime-select nvidia|intel|on-demand|query

GUI
nvidia-settings

查看显卡信息(for KDE)

混合模式(optimus)下,指定某个程序用独显
__NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia <command>
注意
需要混合模式下,才能生效
opengl
查看opengl相关信息(命令行)
glxinfo
查看opengl相关信息(for KDE),直接查询即可找到

KMS
KMS使能内核区(kernel space)设置分辨率和颜色深度,而不是在用户区,其能够使framebuffer有更好的可视化效果和实现tty的快速切换
禁用KMS

集显
查看inter gpu使用情况
sudo intel_gpu_top

sudo apt install radeontop
c means color
radeontop -c
cudnn
安装
步骤一:tar包下载
步骤二:解压与赋值
tar -xzvf cudnn-x.x-linux-x64-v8.x.x.x.tgz
sudo cp cuda/include/cudnn*.h /usr/local/cuda/include \
&& sudo cp -P cuda/lib64/libcudnn* /usr/local/cuda/lib64 \
&& sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*
-P 表示保留权限属性地复制
cuda
注意
20.04ubuntu对应cuda11+的版本
安装
步骤二:创建软链接和导入环境变量
用runfile装cuda11+,会自动创建软链接
export PATH=$PATH:/usr/local/cuda/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64
卸载
执行安装目录的bin文件夹下的
./cuda-uninstaller
TensorRT
安装
步骤一:查看相关依赖是否满足(已测试)
TensorRT 版本 |
cuda版本 |
cudnn版本 |
---|---|---|
tensorRT 7.0.0 |
cuda_10.02 |
cudnn 7.6.5 |
tensorRT 7.2.3 |
cuda_11.1 |
cudnn 8.1.0 |
tensorRT 8.0.0.3 |
cuda_11.2.r11.2 |
cudnn 8.1.1 |
tensorRT 8.2.2.1 |
cudnn 8.2.1 |
|
tensorRT 8.2.3.0 |
cuda_11.4.r11.4 |
cudnn 8.2.4 |
步骤二:
tar包下载与安装:更灵活的安装方式,可灵活地切换版本,不需要很严格的版本对应(e.g. cuda/cudnn)
Debian下载:这种下载方式需要解决的依赖问题挺多的,较麻烦的,e.g.:

步骤三:导入动态库位置
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:"install_path/lib"
NOTE
使用wget来下载tensorrt tar包或deb包:找到带auth token的重定向链接
