我正在为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
,它可以运行。
为什么?
答案 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.0
和0000:02:00.0
。它们的格式为[domain]:[bus]:[device].[function]
。