相关疑难解决方法(0)

CUDA如何为GPU分配设备ID?

当计算机具有多个支持CUDA的GPU时,每个GPU都会分配一个device ID.默认情况下,CUDA内核会执行device ID 0.您可以使用cudaSetDevice(int device)选择其他设备.

假设我的机器中有两个GPU:GTX 480和GTX 670.CUDA 如何确定哪个GPU device ID 0和哪个GPU device ID 1


关于CUDA如何分配设备ID的想法(只是头脑风暴):

  • 计算能力的降序
  • PCI插槽号
  • 将设备添加到系统的日期/时间(刚刚添加到计算机的设备的ID号越高)

动机:我正在研究一些HPC算法,我正在为几个GPU进行基准测试和自动调整.我的处理器有足够的PCIe通道,可以在全带宽下将cudaMemcpys驱动到3个GPU.因此,我不打算不断地将GPU交换进机器,而是计划在计算机中保留3个GPU.我希望能够预测当我在计算机中添加或更换某些GPU时会发生什么.

cuda gpu gpgpu nvidia

27
推荐指数
4
解决办法
2万
查看次数

'nvidia-smi -L'和cuDeviceGetName()之间ID的不一致

我正在将此命令运行到shell中并获取:

C:\Users\me>nvidia-smi -L    
GPU 0: Quadro K2000 (UUID: GPU-b1ac50d1-019c-58e1-3598-4877fddd3f17)    
GPU 1: Quadro 2000 (UUID: GPU-1f22a253-c329-dfb7-0db4-e005efb6a4c7)
Run Code Online (Sandbox Code Playgroud)

但是在我的代码中,当我运行cuDeviceGetName(..,ID),其中ID是nvidia-smi输出给出的ID时,设备已被反转:GPU 0变为Quadro 2000,GPU 1变为Quadro K2000.

这是预期的行为还是错误?有没有人知道一个解决方法,让nvidia-smi获得GPU的"真实"ID?我可以使用UUID来获取具有nvmlDeviceGetUUID()的正确设备,但是使用nvml API对于我正在尝试实现的内容似乎有点过于复杂.

这个问题讨论了CUDA如何在没有明确结论的情况下为设备分配ID.

我正在使用CUDA 6.5.

编辑:我看过nvidia-smi手册页(应该早点完成...).它指出:

"建议希望使用UUDI或PCI总线ID的用户,因为设备枚举排序不能保证一致"

仍在寻找一个kludge ...

cuda

10
推荐指数
2
解决办法
3748
查看次数

标签 统计

cuda ×2

gpgpu ×1

gpu ×1

nvidia ×1