GPU设备编号不匹配

时间:2016-10-19 05:04:14

标签: cuda gpu nvidia caffe

我正在为Caffe使用GPU。当我nvidia-smi时,显示

| NVIDIA-SMI 352.63     Driver Version: 352.63         |                       
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GeForce GTX 750 Ti  Off  | 0000:01:00.0      On |                  N/A |
| 44%   52C    P0     2W /  38W |    464MiB /  2047MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+
|   1  Quadro M4000        Off  | 0000:02:00.0     Off |                  N/A |
| 59%   74C    P0    66W / 120W |   7434MiB /  8191MiB |     95%      Default |


+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID  Type  Process name                               Usage      |
|=============================================================================|
|    0      1428    G   /usr/lib/xorg/Xorg                             316MiB |
|    0      2200    G   compiz                                         139MiB |
|    1     29863    C   ./caffe-segnet/build/tools/caffe              7413MiB |
+-----------------------------------------------------------------------------+

但是当我运行caffe并选择GPU 1时,它会告诉我内存不足。如果我选择GPU 0 build/tools/caffe train -gpu 0 -solver solver.prototxt,它可以运行。

为什么?

1 个答案:

答案 0 :(得分:3)

Nvidia CUDA使用自己的设备编号,根据哪个设备被认为是最快的。但是,也有可能通过其PCI总线ID获取设备。

cudaError_t cudaDeviceGetByPCIBusId ( int* device, char* pciBusId )

它也可以反过来工作,您可以获取特定设备的总线ID。

cudaError_t cudaDeviceGetPCIBusId ( char* pciBusId, int  len, int  device )

总线ID将是您表格中的值0000:01:00.00000:02:00.0。它们的格式为[domain]:[bus]:[device].[function]

请参阅[1][2]