2017-05-16 33 views
1

サーバーでTensorflowも使用するPythonスクリプトを実行します。セッション設定なしで実行した場合、プロセスはGPUメモリをすべて割り当て、他のプロセスがGPUにアクセスするのを防ぎます。Tensorflowを使用したCPU/GPUのメモリ使用

サーバーのスペックは以下の通りです:

  • CPU:2倍[email protected] GHzの、
  • RAM:256ギガバイト、
  • がディスク:2倍速240ギガバイトSSD、6X 4TB @ 7200RPM、
  • GPUを:2x Nvidia Titan X.

このサーバーは他の同僚と共有されているため、実際にはGPUメモリをすべて割り当てることはできません。

Tensorflowのウェブサイトでは、使用されているGPUメモリにしきい値を設定するための指示がありました。

config = tf.ConfigProto() 
config.gpu_options.per_process_gpu_memory_fraction = 0.4 
session = tf.Session(config=config, ...) 

私はこれらに関する二つの質問があります。割り当てられたGPUメモリが十分でない場合 1を、プロセスが自動的代わりにCPUを使用するか、それがクラッシュしますか? 2.プロセスがGPUを使用したいのにGPUがすでに完全に割り当てられている場合はどうなりますか?

ありがとうございます。

+0

1台のGPUを割り当て、同僚に別のGPUを割り当てるには、cuda可視デバイスenv varを使用します。 Tensorflowは、同じGPUを使用する複数のプロセスではうまくいきません –

答えて

2
  • 割り当てられたGPUメモリが十分でない場合、TFはOut of Memoryエラーを発生させ、クラッシュします。

  • TFもこの場合クラッシュします。

  • 0

    Tensorflowは、使用可能なすべてのGPUメモリを割り当てる(メモリの断片化を回避し、効率的に動作させる)デフォルトの動作に代わるいくつかのオプションを提供します。これらのオプションは以下のとおりです。

    • config.gpu_options.allow_growthからTrueに構成されたときに、必要に応じて動的に多くのメモリを割り当てますが、メモリ
    • config.gpu_options.per_process_gpu_memory_fractionをリリースすることはありません - 0と1の間に二重に設定されたときに、静的にのみその端数を割り当てますすべてのメモリの代わりに使用可能なメモリの数

    詳細については、https://www.tensorflow.org/tutorials/using_gpu#allowing_gpu_memory_growthを参照してください。

    関連する問題