最近训练新增A100,gpu服务器,安装完cuda后突然出现torch无法正常使用,提示CUDA initialization: Unexpected error from cudaGetDeviceCount()错误,如下图所示:
UserWarning: CUDA initialization: Unexpected error from cudaGetDeviceCount(). Did you run some cuda functions before calling NumCudaDevices() that might have already set an error? Error 802: system not yet initialized (Triggered internally at ../c10/cuda/CUDAFunctions.cpp:108.)
- 进行分析和之前搭建的A800,GPU服务器进行对比,应该是没有安装 nvidia-fabricmanager 的问题,A100-80G需要使用nvlink & nvswitch来实现多卡互联,没有安装这个包GPU没法用如图所示:
A800机器:
A100机器:
- 检查gpu机器版本nvidia-smi,Driver Version: 535.183.01 ,下载相对应的安装包。
1. 下载 nvidia-fabric-manager-535.183.01 RPM 包,首先,访问 NVIDIA CUDA 下载页面 或 NVIDIA驱动程序下载页面,选择对应的 Linux 版本和驱动版本,找到 nvidia-fabric-manager 相关链接。可以直接使用以下命令从已知的存储库获取该包(请确认这是正确的路径):
wget https://developer.download.nvidia.com/compute/cuda/repos/rhel7/x86_64/nvidia-fabric-manager-535.183.01-1.x86_64.rpm
2.下载完成后,使用 dnf 或 rpm 来安装这个包:
sudo rpm -ivh nvidia-fabric-manager-535.183.01-1.x86_64.rpm
3.启用并启动服务:
sudo systemctl enable nvidia-fabricmanager
sudo systemctl start nvidia-fabricmanager
4.确认服务已启动:
sudo systemctl status nvidia-fabricmanager
- 再次验证结果:
- Nvidia-fabricmanager 自动更新关闭,防止升级后无法进行使用。
编辑 dnf
配置文件,打开 /etc/dnf/dnf.conf
文件:
sudo nano /etc/dnf/dnf.conf
添加排除规则 在文件中添加一行 exclude=nvidia-fabricmanager*
,如下所示:
[main]
gpgcheck=1
installonly_limit=3
clean_requirements_on_remove=True
exclude=nvidia-fabricmanager*
保存并退出
保存文件并退出编辑器(在 nano
中,按 Ctrl+O
保存,按 Ctrl+X
退出)。
这将使 nvidia-fabricmanager
包不再被自动更新,直到你手动更新或移除该排除规则。