已设置CUDA_VISIBLE_DEVICES,如何打印程序运行的GPU索引?
获取当前程序运行的GPU索引
你需要区分两种场景:程序内部感知到的逻辑GPU索引,以及对应的物理GPU硬件索引,以下是具体实现方法:
1. 获取程序感知的逻辑GPU索引
当你设置os.environ["CUDA_VISIBLE_DEVICES"] = "1"后,系统会把指定的物理GPU映射为程序内部的逻辑0号GPU(因为只暴露了这一个GPU)。可以用主流框架的API直接获取:
PyTorch 实现
import torch if torch.cuda.is_available(): current_logic_idx = torch.cuda.current_device() print(f"程序逻辑GPU索引: {current_logic_idx}") else: print("当前无可用GPU")
TensorFlow 实现
import tensorflow as tf gpus = tf.config.list_physical_devices('GPU') if gpus: current_logic_idx = gpus[0].name.split(':')[-1] print(f"程序逻辑GPU索引: {current_logic_idx}") else: print("当前无可用GPU")
2. 获取实际物理GPU索引
如果需要确认你实际指定的物理GPU编号,直接读取环境变量即可:
import os physical_gpu_ids = os.environ.get("CUDA_VISIBLE_DEVICES", "未指定GPU") print(f"实际使用的物理GPU索引: {physical_gpu_ids}")
如果你的程序需要同时使用多个GPU,也可以查看所有暴露给程序的物理GPU列表:
import os print(f"所有可见物理GPU索引: {os.environ.get('CUDA_VISIBLE_DEVICES', '无')}")
内容的提问来源于stack exchange,提问作者Ahmad
相关产品推荐
相关产品推荐

