You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CUDA Quantum多GPU构建后仅识别单GPU的问题排查求助

问题描述

在HPC系统上通过Nvidia enroot使用CUDA Quantum官方容器,目标是构建支持多GPU的量子模拟代码:

  • 按GTC演讲《Inside CUDA Quantum》的命令编译:
    nvq++ cuquantum_backends.cpp -o cuquantum_backends.x --qpu cuquantum --platform mqpu
    
    编译无报错,但运行时通过以下代码获取QPU数量:
    auto &platform = cudaq::get_platform();
    printf("Num QPU %zu\n", platform.num_qpus());
    
    输出Num QPU 1,但容器内nvidia-smi可识别2个GPU。
  • 尝试官方文档提到的多GPU编译标识--qpu cuquantum_mgmn,但nvq++提示该标识未被识别。

排查与解决建议

1. 确认enroot容器的GPU映射配置

enroot默认可能只映射单个GPU,需确保启动容器时显式指定所有可用GPU:

  • 启动容器时添加--nv参数并指定GPU范围,例如:
    enroot create --name cuda-quantum nvidia+cuda-quantum:latest
    enroot start --nv --env NVIDIA_VISIBLE_DEVICES=all cuda-quantum
    
    也可直接指定具体GPU:NVIDIA_VISIBLE_DEVICES=0,1
  • 进入容器后验证配置:
    nvidia-smi
    echo $NVIDIA_VISIBLE_DEVICES
    echo $CUDA_VISIBLE_DEVICES
    
    确保两个环境变量都包含所有目标GPU。

2. 修正多GPU编译与运行参数

cuquantum_mgmn并非有效的--qpu参数,正确的多GPU配置需结合编译参数与环境变量:

  • 编译时仍使用--platform mqpu:
    nvq++ cuquantum_backends.cpp -o cuquantum_backends.x --qpu cuquantum --platform mqpu
    
  • 运行前设置环境变量指定GPU数量:
    export CUDAQ_MQPU_NUM_DEVICES=2
    ./cuquantum_backends.x
    
    该变量会强制mqpu平台使用指定数量的GPU设备。

3. 验证版本兼容性

确保容器内CUDA Quantum与cuQuantum库版本匹配:

  • 查看版本信息:
    nvq++ --version
    cuquantum-manager --version
    
    若版本不匹配,建议拉取最新官方容器镜像,或手动升级cuQuantum库。

4. 排查设备枚举逻辑

在代码中添加CUDA原生设备检测,定位问题环节:

#include <cuda_runtime.h>

int main() {
    int deviceCount;
    cudaGetDeviceCount(&deviceCount);
    printf("CUDA Device Count: %d\n", deviceCount);

    auto &platform = cudaq::get_platform();
    printf("Num QPU %zu\n", platform.num_qpus());
    return 0;
}

如果cudaGetDeviceCount返回2但platform.num_qpus()仍返回1:

  • 运行前设置CUDAQ_VERBOSE=1,查看平台初始化日志,确认是否有设备被过滤。
  • 检查容器内用户权限,部分HPC系统会通过cgroups限制GPU访问权限。

内容的提问来源于stack exchange,提问作者mdepa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 08:02:20