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 --no-cc-version-check --no-opengl-files -s
永久开启 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 # 立即启动