问题描述
在使用以下指令来指定使用的GPU序号时,可能会遇到设备索引与 GPU 的物理连接顺序不一致的问题,即你指定了GPU 3来运行代码,但代码却是在其他GPU上运行的。
## python
os.environ["CUDA_VISIBLE_DEVICES"] = "3"
## shell
export CUDA_VISIBLE_DEVICES=3
解决方法
## python
os.environ['CUDA_DEVICE_ORDER'] = "PCI_BUS_ID"
## shell
export CUDA_DEVICE_ORDER=PCI_BUS_ID
该指令用于指定CUDA设备的顺序。通过设置该指令,CUDA将按照GPU的PCI总线ID来分配设备索引,确保设备索引与GPU的物理连接顺序一致。这可以在多GPU系统中选择正确的GPU来运行程序。
## python
os.environ['CUDA_DEVICE_ORDER'] = "PCI_BUS_ID"
os.environ["CUDA_VISIBLE_DEVICES"] = "3"
## shell
export CUDA_DEVICE_ORDER=PCI_BUS_ID
export CUDA_VISIBLE_DEVICES=3