多GPU系统中的CUDA设备不可用问题

我们在使用多GPU系统时遇到了CUDA设备不可用的问题,详细情况如下:

问题描述: 我们在一台配备有8块NVIDIA GeForce RTX 3090显卡的服务器上运行CUDA程序时,遇到了如下错误:

cudaErrorDevicesUnavailable: CUDA-capable device(s) is/are busy or unavailable


使用 nvidia-smi 命令检查时,发现所有GPU的利用率为0。

系统配置:

操作系统:Windows 11

GPU型号:NVIDIA GeForce RTX 3090 x 8

驱动程序版本:556.12

CUDA工具包版本:12.5

我已尝试的解决方案:

检查GPU状态: 使用 nvidia-smi 查看当前GPU的使用情况,所有GPU的利用率为0。

重启系统: 多次重启服务器,但问题依旧存在。

确认管理员权限: 以管理员身份运行命令提示符和相关程序。

检查并更新驱动程序: 确保安装了最新的NVIDIA驱动程序,并重新安装了CUDA工具包,版本匹配且为最新。

限制使用特定GPU: 修改环境变量 CUDA_VISIBLE_DEVICES 限制CUDA程序只使用特定的GPU进行测试,问题依旧。

终止不必要的进程: 使用 nvidia-smi 查看并终止了所有可能占用GPU资源的进程,仍未解决问题。

检查和调整BIOS设置(没有尝试,但是在CUDA版本修改之前就是禁用集成显卡的,任然出现该问题): 进入BIOS/UEFI,确保所有PCIe插槽设置为“Auto”或“Gen3”,并禁用了所有不必要的集成显卡。

测试其他CUDA示例程序: 使用CuPy和PyTorch编写并运行其他简单的CUDA程序,均出现相同错误。

以下是我们使用的测试代码和错误信息:

import os

import cupy as cp

os.environ['CUDA_VISIBLE_DEVICES'] = '0'  # 只使用第一个GPU

try:

    start = cp.cuda.Event()

    end = cp.cuda.Event()

    print("CUDA event created successfully.")

    del start

    del end

    print("CUDA event destroyed successfully.")

except cp.cuda.runtime.CUDARuntimeError as e:

    print(f"CUDA error: {e}")

device = cp.cuda.Device(0)  # 使用第一个GPU

try:

    free_memory, total_memory = device.mem_info

    print(f"Device 0: Free Memory: {free_memory / (1024 ** 2):.2f} MB")

    print(f"Device 0: Total Memory: {total_memory / (1024 ** 2):.2f} MB")

except cp.cuda.runtime.CUDARuntimeError as e:

    print(f"CUDA error: {e}")

错误信息:

cudaErrorDevicesUnavailable: CUDA-capable device(s) is/are busy or unavailable

我们已尝试了多种解决方法,但问题仍未解决。

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值