2016-10-19 9 views
2

私はCaffeにGPUを使用しています。私はnvidia-smiを行うと、それはGPUのデバイス番号が一致しません

| 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 | 
+-----------------------------------------------------------------------------+ 

を示ししかし、私はカフェを実行し、GPU 1を選択すると、それはメモリ不足を私に教えてくれます。 GPU 0 build/tools/caffe train -gpu 0 -solver solver.prototxtを選択すると、それを実行できます。

なぜですか?

+3

CUDAは、PCIeとは別の独自のデバイス列挙を使用し、デバイスの順序番号0を最も有能なデバイスに割り当てるヒューリスティックを持っています。私は文書から章と詩を引用する時間がないので、誰かが適切な答えを書いてくれることを願っています。 – njuffa

+0

あなたのバッチサイズがあなたの2GBのメモリにとって高すぎるかどうかを確認できます。画像の寸法とネットワーク層の設計により、大きなメモリが必要になることがあります。 600x800のイメージを使用し、2GBのメモリに収まらない出力とカーネルサイズの高い16層のネットワークがあるとします。 –

+0

GPU 1で実行中の同じプログラムを実行しようとすると確かに 'GPU 0'には適合しません。あなたの情報から、およそ7GBの(** 7434MiB **/8191MiB)と1GBのあなたの 'GPU 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]を参照してください。

関連する問題