L40标称显存为48G,为何ubuntu装完驱动之后使用nvidia-smi查看仅显示46068 MiB,这里看到ECC为0,实际是开启了。

原因就出自L40默认开启了ECC纠错,ECC纠错会导致额外占用显存3%-5%
# 执行查看ECC是否开启的命令
nvidia-smi -q | grep 'ECC Mode' -A 2
ECC Mode
Current : Enabled
Pending : Enabled
--
ECC Mode
Current : Enabled
Pending : Enabled
# 执行关闭ECC纠错
nvidia-smi -e 0
Disabled ECC support for GPU 00000000:01:00.0.
Disabled ECC support for GPU 00000000:02:00.0.
All done.
# 再次查看
nvidia-smi -q | grep 'ECC Mode' -A 2
ECC Mode
Current : Enabled
Pending : Disabled
--
ECC Mode
Current : Enabled
Pending : Disabled
# 执行重启
reboot
关闭ECC纠错后务必重启服务器,待服务器重启之后观察nvidia-smi,可以看到ECC为off,显存大小也正常显示

# 通过命令行查看
nvidia-smi -q | grep 'ECC Mode' -A 2
ECC Mode
Current : Disabled
Pending : Disabled
--
ECC Mode
Current : Disabled
Pending : Disabled
执行ECC纠错关闭后重启,发现ECC没有正常关闭,这是什么原因呢?答案就是显卡驱动是通过apt安装的,对于ubuntu server可能存在某些不兼容问题,这里建议通过官网下载.run的驱动进行安装
# 卸载老驱动
apt-get --purge remove nvidia*
# 关闭nouveau显卡驱动,在blacklist.conf中添加
vi /etc/modprobe.d/blacklist.conf
blacklist nouveau
options nouveau modeset=0
# 更新系统
update-initramfs -u
# 执行重启
reboot
# 验证,无输出则为成功
lsmod | grep nouveau
# 安装依赖
sudo apt install dkms build-essential linux-headers-$(uname -r) gcc make -y
# 执行驱动安装(无人值守模型,建议全新安装时使用)
./NVIDIA-Linux-x86_64-550.144.03.run \
--ui=none \
--disable-nouveau \
--no-install-libglvnd \
--dkms \
--silent \
--no-x-check \
--no-opengl-files
永久开启 NVIDIA GPU 的持久模式
# 创建用户 sudo useradd -r nvidia-persistenced # 创建systemd启动文件 sudo vi /etc/systemd/system/nvidia-persistenced.service [Unit] Description=NVIDIA Persistence Daemon After=syslog.target systemd-modules-load.service [Service] Type=forking ExecStart=/usr/bin/nvidia-persistenced --user nvidia-persistenced ExecStop=/usr/bin/nvidia-persistenced --kill Restart=always [Install] WantedBy=multi-user.target # 执行启动并开机启动 sudo systemctl daemon-reload sudo systemctl enable nvidia-persistenced.service # 开机自启 sudo systemctl start nvidia-persistenced.service # 立即启动