2017-09-25 6 views
0

私はTpiorFlowでmpiを使用しようとしています。そのようなコードの例については、see this OpenAI baselines PPO codeです。これは、次のコマンドを実行するように教えてくれる:mpirun -np Xをテンソルフローで使用すると、XはGPUの数によって制限されますか?

$ mpirun -np 8 python -m baselines.ppo1.run_atari 

私は(RAMの12ギガバイトで)1つのGPUとPython 3.5.3と1.3.0 Tensorflowインストール、とのマシンを持っています。 (;それは非常に長いですが、私は、この先頭部分は、参照するには重要なことだと思います。これは、エラーメッセージの最初の部分だけである。)

2017-09-24 17:29:12.975967: I tensorflow/core/common_runtime/gpu/gpu_device.cc:955] Found device 0 with properties: 
name: TITAN X (Pascal) 
major: 6 minor: 1 memoryClockRate (GHz) 1.531 
pciBusID 0000:01:00.0 
Total memory: 11.90GiB 
Free memory: 11.17GiB 
2017-09-24 17:29:12.975990: I tensorflow/core/common_runtime/gpu/gpu_device.cc:976] DMA: 0 
2017-09-24 17:29:12.975996: I tensorflow/core/common_runtime/gpu/gpu_device.cc:986] 0: Y 
2017-09-24 17:29:12.976011: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1045] Creating TensorFlow device (/gpu:0) -> (device: 0, name: TITAN X (Pascal), pci bus id: 0000:01:00.0) 
2017-09-24 17:29:12.987133: I tensorflow/core/common_runtime/gpu/gpu_device.cc:955] Found device 0 with properties: 
name: TITAN X (Pascal) 
major: 6 minor: 1 memoryClockRate (GHz) 1.531 
pciBusID 0000:01:00.0 
Total memory: 11.90GiB 
Free memory: 11.17GiB 
2017-09-24 17:29:12.987159: I tensorflow/core/common_runtime/gpu/gpu_device.cc:976] DMA: 0 
2017-09-24 17:29:12.987165: I tensorflow/core/common_runtime/gpu/gpu_device.cc:986] 0: Y 
2017-09-24 17:29:12.987172: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1045] Creating TensorFlow device (/gpu:0) -> (device: 0, name: TITAN X (Pascal), pci bus id: 0000:01:00.0) 
[2017-09-24 17:29:12,994] Making new env: PongNoFrameskip-v4 
2017-09-24 17:29:13.017845: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:893] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero 
2017-09-24 17:29:13.022347: I tensorflow/core/common_runtime/gpu/gpu_device.cc:955] Found device 0 with properties: 
name: TITAN X (Pascal) 
major: 6 minor: 1 memoryClockRate (GHz) 1.531 
pciBusID 0000:01:00.0 
Total memory: 11.90GiB 
Free memory: 104.81MiB 
2017-09-24 17:29:13.022394: I tensorflow/core/common_runtime/gpu/gpu_device.cc:976] DMA: 0 
2017-09-24 17:29:13.022415: I tensorflow/core/common_runtime/gpu/gpu_device.cc:986] 0: Y 
2017-09-24 17:29:13.022933: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1045] Creating TensorFlow device (/gpu:0) -> (device: 0, name: TITAN X (Pascal), pci bus id: 0000:01:00.0) 
2017-09-24 17:29:13.026338: E tensorflow/stream_executor/cuda/cuda_driver.cc:924] failed to allocate 104.81M (109903872 bytes) from device: CUDA_ERROR_OUT_OF_MEMORY 

:私はこのコードを実行すると、私は次のエラーを取得します

このコマンドは、mpirun -np 1で実行すると機能します。

私はオンラインで検索、そして私が使用する必要があります「4つのGPUを搭載したマシン上で実行するには」と言う repository from Uberが見つかりました:

$ mpirun -np 4 python train.py 

私はちょうどmpirun -np XXが限られていることを意味していることを確認したいです私たちが実行しているのがTensorFlowプログラムであると仮定して、マシン上のGPUの数で表します。

答えて

0

MPIの詳細については、はい、確かにプロセス数がGPUの数によって制限されていることを確認できます。理由:

  • mpirun -np Xコマンドでは、コードのX "コピー"が実行されますが、それぞれに独自のランクがあります。 See the documentation here
  • 各コードの実行にはGPUが必要です
  • TensorFlowでは、1つのプログラムで1つのGPUを一度に使用できます。つまり、python tf_program1.pypython tf_program2.pyを同時に実行することはできませんが、両方ともTensorFlowを使用しており、マシン上で1つのGPUが必要です。

このように、私は1つのプロセスを使用する必要があります。

関連する問題