2016-06-24 1 views
68

ubuntu 16.04にテンソルフローをインストールしました。第2の答えはhereで、ubuntuにはapt cudaが組み込まれています。tensorflowがpythonシェルの内部からgpuアクセラレーションを使用しているかどうかを確認するには?

私の質問は、テンソルフローが本当にgpuを使用しているかどうかをテストする方法です。私はgtx 960mのGPUを持っています。私import tensorflowこれがOUTPあるとき

I tensorflow/stream_executor/dso_loader.cc:105] successfully opened CUDA library libcublas.so locally 
I tensorflow/stream_executor/dso_loader.cc:105] successfully opened CUDA library libcudnn.so locally 
I tensorflow/stream_executor/dso_loader.cc:105] successfully opened CUDA library libcufft.so locally 
I tensorflow/stream_executor/dso_loader.cc:105] successfully opened CUDA library libcuda.so.1 locally 
I tensorflow/stream_executor/dso_loader.cc:105] successfully opened CUDA library libcurand.so locally 

はtensorflowは、GPUを使用しているかどうかをチェックするのに十分な、この出力ですか?

+0

あなたのログに次のようなものが表示されます。 TensorFlowデバイスの作成(/ gpu:0) - >(デバイス:0、名前:GeForce GTX 980、PCIバスID:0000:03:00.0) –

+0

'回答のlog_device_placementのアプローチ。最も信頼性の高い方法は、このコメントで指定されているようにタイムラインを見ることです:https://github.com/tensorflow/tensorflow/issues/1824#issuecomment-225754659 –

+0

はい、私はYao Zhangの答えに続いてこの出力を得ました... –

答えて

92

いいえ、グラフの異なるノードが異なるデバイス上にある可能性があるため、「オープンCUDAライブラリ」とは言えません。

sess = tf.Session(config=tf.ConfigProto(log_device_placement=True)) 
+5

私はこれを試して、全く何も印刷しません。それがなぜ起こっているのでしょうか? – Qubix

+2

あなたはジュピターノートでそれをしましたか? –

+2

@Qubixと同じですが、何も印刷されません。私はジュピターノートでそれを実行しています。私はsessを印刷しようとしましたが、私は何も関係がありません。 – richar8086

18

これも訓練しながら、GPUを使用してそのtensorflowを確認します:

は、あなたがこのようなログデバイスの配置を可能にすることができます使用されているデバイスを調べるには?

コード

sess = tf.Session(config=tf.ConfigProto(log_device_placement=True)) 

出力別にTFの公式documentationならびに他の回答に概説されているsess = tf.Session(config=tf.ConfigProto(log_device_placement=True))を使用してから

I tensorflow/core/common_runtime/gpu/gpu_device.cc:885] Found device 0 with properties: 
name: GeForce GT 730 
major: 3 minor: 5 memoryClockRate (GHz) 0.9015 
pciBusID 0000:01:00.0 
Total memory: 1.98GiB 
Free memory: 1.72GiB 
I tensorflow/core/common_runtime/gpu/gpu_device.cc:906] DMA: 0 
I tensorflow/core/common_runtime/gpu/gpu_device.cc:916] 0: Y 
I tensorflow/core/common_runtime/gpu/gpu_device.cc:975] Creating TensorFlow device (/gpu:0) -> (device: 0, name: GeForce GT 730, pci bus id: 0000:01:00.0) 
Device mapping: 
/job:localhost/replica:0/task:0/gpu:0 -> device: 0, name: GeForce GT 730, pci bus id: 0000:01:00.0 
I tensorflow/core/common_runtime/direct_session.cc:255] Device mapping: 
/job:localhost/replica:0/task:0/gpu:0 -> device: 0, name: GeForce GT 730, pci bus id: 0000:01:00.0 
+3

あなたの答えが動作している_why_に少しの説明を追加してください( 'log_device_placement'は何を行い、CPUとGPUを出力に見るのですか?それはあなたの答えの質を向上させるでしょう! –

+0

コードを正しくフォーマットしようとします。 – MashukKhan

77

は、あなたがに計算を割り当てるために試すことができますあなたはエラーがあるかどうかを確認してください。

import tensorflow as tf 
with tf.device('/gpu:0'): 
    a = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[2, 3], name='a') 
    b = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[3, 2], name='b') 
    c = tf.matmul(a, b) 

with tf.Session() as sess: 
    print (sess.run(c)) 

ここ

  • "/ CPU:0":あなたのマシンのCPU。
  • "/ gpu:0":マシンのGPU(ある場合)。

gpuを使用している場合は、その結果が表示されます。それ以外の場合は、長いスタックトレースでエラーが発生します。最後に、あなたはこのようなものを持っています:

ノードのMATMUL」にデバイスを割り当てることができません:なしデバイスマッチングを 仕様が登録されていないことをので「0:GPU /デバイス」を明示的 デバイスの仕様を満たすことができませんでしたこのプロセスでは

+0

結果:[[22. 28.] [49. 64]]] –

+1

@GeorgePligor結果はここではあまり重要ではありません。どちらかの結果があり、GPUが使用されているか、エラーが発生しています。つまり、使用されていないことを意味します。 –

+0

これは私には役に立たなかった。私はこれをnvidia-dockerとetcetcが発した私のDocker Containerの中で走らせました。しかし、私はエラーを起こさず、CPUは作業を行うものです。私はしばらく計算を確実にするために行列を少し上げた(10k * 10k)。 CPU utilは100%まで上がったが、GPUはいつものようにクールにとどまった。 – pascalwhoop

4

私はGPUの使用状況を監視するためにnvidia-smiを使用することをお勧めします。あなたがプログラムを始めるときにかなり上がると、あなたのテンソルフローがGPUを使用しているという強いサインです。

+0

これは間接的な方法です – papabiceps

+0

nvdia-smiを使ってGPUの使用状況をどのように監視しますか? – Razin

+0

をインストールした後。 nvidia-smiがあなたのシステムになければなりません。私は通常、 'nvidia-smi -l'を使用して使用状況を監視します。 –

4

実行あなたが適切に環境を設定している場合、あなたは「jupyterノート」を実行したターミナルで次のの出力が得られます

import tensorflow as tf 
sess = tf.Session(config=tf.ConfigProto(log_device_placement=True)) 

、Jupyterに以下、

2017-10-05 14:51:46.335323: I c:\tf_jenkins\home\workspace\release-win\m\windows-gpu\py\35\tensorflow\core\common_runtime\gpu\gpu_device.cc:1030] Creating TensorFlow device (/gpu:0) -> (device: 0, name: Quadro K620, pci bus id: 0000:02:00.0) 
Device mapping: 
/job:localhost/replica:0/task:0/gpu:0 -> device: 0, name: Quadro K620, pci bus id: 0000:02:00.0 
2017-10-05 14:51:46.337418: I c:\tf_jenkins\home\workspace\release-win\m\windows-gpu\py\35\tensorflow\core\common_runtime\direct_session.cc:265] Device mapping: 
/job:localhost/replica:0/task:0/gpu:0 -> device: 0, name: Quadro K620, pci bus id: 0000:02:00.0 

私はTensorFlowをNvidia Quodro K620で使用しています。

1

これは(PY-3.6の下で)Tensorflowために利用可能なデバイスのリストを与える必要があります。

tf = tf.Session(config=tf.ConfigProto(log_device_placement=True)) 
tf.list_devices() 
# _DeviceAttributes(/job:localhost/replica:0/task:0/device:CPU:0, CPU, 268435456) 
+0

男私は誤ってあなたの質問をd​​ownvoted ...あなたの質問を編集する場合私は私のdownvoteをキャンセルします –

3

私はコマンドラインからGPUを照会見つける最も簡単です:

nvidia-smi 

+-----------------------------------------------------------------------------+ 
| NVIDIA-SMI 384.98     Driver Version: 384.98     | 
|-------------------------------+----------------------+----------------------+ 
| 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 980 Ti Off | 00000000:02:00.0 On |     N/A | 
| 22% 33C P8 13W/250W | 5817MiB/6075MiB |  0%  Default | 
+-------------------------------+----------------------+----------------------+ 

+-----------------------------------------------------------------------------+ 
| Processes:              GPU Memory | 
| GPU  PID Type Process name        Usage  | 
|=============================================================================| 
| 0  1060  G /usr/lib/xorg/Xorg       53MiB | 
| 0  25177  C python          5751MiB | 
+-----------------------------------------------------------------------------+ 

あなたの場合学習はバックグラウンドプロセスです。 jobs -pのPIDは、pidと一致する必要があります。nvidia-smi

8

次のコードはテンソルフローに使用できるすべてのデバイスを提供します。

from tensorflow.python.client import device_lib 
print(device_lib.list_local_devices()) 

サンプル出力

[名 "/ CPU:0" DEVICE_TYPE: "CPU" のmemory_limit:268435456 局所{ } 化身:4402277519343584096、

名: "/ gpu:0" device_type: "GPU" memory_limit:6772842168 地域{ bus_ ID:1 } 化身:7471795903849088328 physical_device_desc: "デバイス:0、名前:のGeForce GTX 1070、PCIバスID:0000:05:00.0" ]

関連する問題