分散TensorFlowを使用する計画があり、TensorFlowがトレーニングとテストにGPUを使用できることを確認しました。クラスタ環境では、各マシンに0個または1個以上のGPUが存在する可能性があり、TensorFlowグラフをできるだけ多くのマシンのGPUに実行したいと考えています。
tf.Session()
TensorFlowを実行すると、次のようなログメッセージでGPUに関する情報が表示されることがわかりました。
I tensorflow/core/common_runtime/gpu/gpu_init.cc:126] DMA: 0
I tensorflow/core/common_runtime/gpu/gpu_init.cc:136] 0: Y
I tensorflow/core/common_runtime/gpu/gpu_device.cc:838] Creating TensorFlow device (/gpu:0) -> (device: 0, name: GeForce GTX 1080, pci bus id: 0000:01:00.0)
私の質問は、TensorFlowから現在利用可能なGPUに関する情報を取得するにはどうすればよいですか?ログから読み込まれたGPU情報を取得できますが、より洗練されたプログラム的な方法で取得したいと考えています。また、CUDA_VISIBLE_DEVICES環境変数を使用してGPUを意図的に制限することもできるので、OSカーネルからGPU情報を取得する方法を知りたくありません。
要するに、マシンで2つのGPUが利用可能であれば、そのような関数tf.get_available_gpus()
が返さ['/gpu:0', '/gpu:1']
れるようにしたいのです。どうすれば実装できますか?