2017-05-02 9 views
0

私は複数のグラフを同時に操作しています。 たとえば、あるグラフがCPUを使用し、他のグラフがGPUを使用するようにします。 これをどうすれば実現できますか?TensorFlowの異なるデバイスモードで複数のグラフを実行する

現在のアプローチとその問題

私は次のように、それが動作し、まだGPUを使用していませんtf.ConfigPrototf.Session()を使用

config = tf.ConfigProto(
      device_count = {'GPU': 0} 
     ) 

私は、GPUの使用を無効にするには、環境変数CUDA_VISIBLE_DEVICESを使用する必要があります。私は後でこの変数を削除するためにos.unsetenv()を使用しています。

これらの解決法は私にとって有用ではありません。なぜなら、1つのグラフではGPUを使用し、もう1つではGPUを使用したくないからです。 os.environ()を設定すると、両方のグラフに影響します。

目的を達成するにはどうすればよいですか?

答えて

1

tf.ConfigProto()によって作成された設定では、セッションの可視デバイスを設定できます。 exmapleについて:

config_cpu = tf.ConfigProto() 
config_cpu.gpu_options.visible_device_list='' 
sess_cpu = tf.Session(config=config_cpu) 

config_gpu = tf.ConfigProto() 
config_gpu.gpu_options.visible_device_list='0' 
sess_gpu = tf.Session(config=config_gpu) 

その後のセッションでは、グラフ、sess_cpuは、唯一のCPUとのセッションのグラフ上で実行する必要があり、sess_gpu、唯一のGPU 0で実行する必要があります。テンソルフローがGPUメモリ全体を占有するのを防ぐには、config_gpu.gpu_options.allow_growth=Trueを設定します。カスタマイズされたニーズにも同様の構成を採用することができます。他の設定を使用する場合は、tf.ConfigProtoをご覧ください。

+1

動作しません。 – Ujjwal

+0

コードの詳細を表示できますか?これらの設定はテンソルフローの原始ソースコードからのものです。それは少なくとも私の場合に有効です。 –

関連する問題