TensorFlowのGPUのバージョンを使用する場合は、プログラムを実行しますが、コードの特別な注意を書いていない場合は、プログラムのデフォルトは、ホスト上のすべてのGPUを占有するために、一つだけを使用する計算プロセス。他は反映されませんので、他のすべてのカードがアイドル状態にあるが、そのメモリが占有されている。それは、私はそれがGPUの並列コンピューティングではと思ったが、実際にのみそのうちの一つが実行されている、占有されているすべてのGPUを見て、です。しかし、プログラムの前に3行のコードを追加することによって、この状況を解決することができます。
インポートのOS はos.environ [ " CUDA_DEVICE_ORDER " ] = " PCI_BUS_ID " はos.environ [ ' CUDA_VISIBLE_DEVICES ' ] = " 0,1 "
プロセスの開始時にこのTensorFlowラインが(もちろん、この数は、GPU実際の状況に従って決定されるべきである)すべてのGPUデバイス正常マスクされたシステム及びgpu1付加gpu0することができます。
言葉は不要なトラブルを引き起こす可能性がありますせず、第二ラインはos.environは、[「CUDA_DEVICE_ORDER」] =「PCI_BUS_ID」も非常に重要であり、GPUは数保証手順とハードウェアのシリアル番号が同じであることに注意してください。
あなたは、GPUを使用しない場合はそのように第三のラインはos.environ [「CUDA_VISIBLE_DEVICES」] =「」。このプログラムでは、GPUデバイスのすべてがブロックされている、我々は唯一のCPUを使用することができます。
また、TensorFlowプログラムは、あなたがしたい場合は、プログラムが使用し、それを設定するためにどのくらいにする必要がどのくらいのメモリ、カード内のすべてのメモリを占有するデフォルト?設定を追加するには、セッションの時間を作成します。
コンフィグ= tf.ConfigProto() config.gpu_options.allow_growth = Trueの セッション = tf.Session(設定=設定)
プログラムを実行しているときは、メモリ使用量を見て、NVIDIA-SMIコマンドを使用することができます。
オリジナルリンクします。https://blog.csdn.net/byron123456sfsfsfa/article/details/79811286