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

如何获取NVIDIA GPU Minor Number与GPU UUID的对应关系?

可选实现方案

方案1:直接读取sysfs文件系统(最优,无需调用外部命令)

Linux下NVIDIA驱动会把所有GPU的相关信息都暴露在/sys/class/nvidia目录下,直接遍历即可拿到对应关系,不需要启动额外进程解析nvidia-smi的输出,性能开销可以忽略。
操作逻辑:

  • 遍历/sys/class/nvidia/下的所有nvidia*子目录,目录名末尾的数字就是Minor Number
  • 每个子目录下的uuid文件存储的就是对应GPU的UUID,直接读取即可
    示例Shell命令:
for gpu_dir in /sys/class/nvidia/nvidia[0-9]*; do
    minor=$(basename "$gpu_dir" | sed 's/nvidia//')
    uuid=$(cat "$gpu_dir/uuid")
    echo "Minor Number: $minor, UUID: $uuid"
done

如果是用其他编程语言实现,直接读写对应路径的文件就行,比解析命令行输出稳定得多。

方案2:调用NVIDIA管理库NVML API(适合代码集成)

如果是在C/C++/Python等程序里需要获取这个对应关系,可以直接调用NVML的官方API,不用fork进程执行nvidia-smi。核心逻辑:

  • 调用nvmlInit()初始化NVML
  • 遍历所有设备,用nvmlDeviceGetMinorNumber()获取Minor Number,用nvmlDeviceGetUUID()获取UUID
  • 最后调用nvmlShutdown()释放资源
    Python下用pynvml库的示例代码:
import pynvml

pynvml.nvmlInit()
device_count = pynvml.nvmlDeviceGetCount()
for i in range(device_count):
    handle = pynvml.nvmlDeviceGetHandleByIndex(i)
    minor = pynvml.nvmlDeviceGetMinorNumber(handle)
    uuid = pynvml.nvmlDeviceGetUUID(handle).decode('utf-8')
    print(f"Minor Number: {minor}, UUID: {uuid}")
pynvml.nvmlShutdown()

这个方案的稳定性比解析nvidia-smi输出高,不会因为nvidia-smi的输出格式变化就失效,性能也比调用外部命令好。

注意:以上两种方案都依赖NVIDIA驱动正常加载,/sys/class/nvidia目录存在才可以正常使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 10:54:03