GPU VNT1裸金属服务服务器用PyTorch报错CUDA initialization:CUDA unknown error

举报
modelarts-dev-server 发表于 2023/06/18 15:54:55 2023/06/18
【摘要】 笔者使用pytorch验证cuda有效性报错, CUDA initialization: CUDA unknown error - this may be due to an incorrectly set up environmen, 笔者给出两种解决方法。

0 问题描述

服务器环境:VNT1 GPU裸金属服务器, 操作系统ubuntu18.04

预置软件: 安装nvidia470+cuda11.4, 参考博客GPU VNT1裸金属服务器NVIDIA470+CUDA11.4装机并验证-云社区-华为云 (huaweicloud.com)

笔者装机后,使用nvidia-smi和nvcc - V显示正确的安装信息, 然后使用pytorch验证cuda有效性:

print(torch.cuda.is_available())

然而报错:

UserWarning: CUDA initialization: CUDA unknown error - this may be due to an incorrectly set up environment, e.g. changing env variable CUDA_VISIBLE_DEVICES after program start. Setting the available devices to be zero. (Triggered internally at  /pytorch/c10/cuda/CUDAFunctions.cpp:100.)
  return torch._C._cuda_getDeviceCount() > 0

1 解决方法

方案1- 笔者尝试操作系统内核重新加载nvidia_uvm,之后就恢复了: print(torch.cuda.is_available()) 输出True, 

sudo rmmod nvidia_uvm
sudo modprobe nvidia_uvm

方案2- 安裝nvidia-modprobe

apt-get install nvidia-modprobe

2. 可能的原因

nvidia-modprobe 是一个 Linux 工具,用于在系统中加载 NVIDIA 驱动程序及其相关的内核模块。在 Linux系统上安装 NVIDIA 显卡驱动后,需要通过 nvidia-modprobe命令来加载相应的内核模块,以便让显卡驱动正常工作。
通常情况下,在安装 NVIDIA 驱动时,会自动执行 nvidia-modprobe 命令,将必要的内核模块加载到系统中。但有时候也可能需要手动执行该命令。例如,在更新了 NVIDIA 驱动后,需要重新加载新版本的内核模块才能使变更生效。此外,如果你使用了多个 NVIDIA 显卡,每个显卡都需要加载相应的内核模块才能正常工作。在这种情况下,你也需要手动执行 nvidia-modprobe 命令来加载所有必要的内核模块。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。