Nvidia GTX TitanXを使用してディープラーニング実験を行っています。 nvidia-smiを使用してGPUの実行状態を監視していますが、ツールが提供するパフォーマンス(ormance)状態が意味をなしません。
私はnvidia-smiマニュアルをチェックしました、それは次のように言っています:
パフォーマンス状態GPUの現在のパフォーマンス状態。状態の範囲は、P0(最大パフォーマンス)からP12(最小パフォーマンス)です。
GPU(アイドル状態)でプロセスを実行しない場合、GPUパフォーマンス状態はp0です。ただし、計算量の多いプロセスを実行すると、状態はp2になります。
私の質問は、GPUがアイドル時にP0状態にあるのに、重い計算タスクを実行しているときにP2に切り替えるのはなぜですか?それは反対ではないでしょうか?
また、GPUを常にP0状態(最大パフォーマンス)で実行する方法はありますか?
それは紛らわしい。
ただし、nvidia-smiのマニュアルは正しいです。
GPUまたはGPUのセットがアイドル状態の場合、マシンでnvidia-smi
を実行するプロセスは、通常、それらのGPUの1つをアイドル状態から解放します。これは、ツールが収集している情報によるものです。GPUの1つをウェイクアップする必要があります。
このウェイクアッププロセスは、最初にGPUをP0状態(最高のパフォーマンス状態)にしますが、GPUがアイドル状態または特にビジーでない場合、GPUドライバーはそのGPUを監視し、最終的にパフォーマンス状態を下げて電力を節約し始めます。
一方、GPUがワークロードでアクティブな場合、GPUドライバーは、独自のヒューリスティックに従って、パフォーマンス状態を継続的に調整して、パフォーマンス状態を実際のワークロードに一致させながら、最高のパフォーマンスを提供します。熱制限または電力制限に達していない場合、パフォーマンス状態は、最もアクティブで最も重い継続的なワークロードの最高レベル(P0)に到達する必要があります。
定期的に重いが継続的ではないワークロードでは、GPUの電力状態がレベルP0〜P2の前後で変動する場合があります。熱(温度)または電力の問題が原因で「スロットル」されたGPUでも、P状態が低下する場合があります。このタイプのスロットルは明らかであり、nvidia-smiで個別に報告されますが、このタイプのレポートはすべてのGPUタイプで有効になっているとは限りません。
GPUでP0状態を確認したい場合、私が提供できる最善のアドバイスは、短くて重い連続ワークロード(たとえば、大規模なsgemm操作を実行するもの)を実行し、そのワークロード中にGPUを監視することです。その状況でP0状態を確認できるはずです。
CuDNNライブラリを使用している機械学習アプリケーション(Caffeなど)を使用していて、大規模なネットワークをトレーニングしている場合、cuDNNはこの中でsgemmのような操作を行うため、P0を時々見ることができるはずです。通常、シナリオ。
ただし、散発的なワークロードの場合、最も一般的に観察される状態がP2である可能性は十分にあります。
P0の電源状態を常に「強制」するには、nvidia-smi
ツールを使用して永続モードとアプリケーションクロックを試してみてください。オプションを理解するには、nvidia-smi --help
またはnvidia-smiのマニュアルページを使用してください。
これは通常TeslaGPUには当てはまらないと思いますが、一部のNVIDIA GPUは、計算負荷の下でP2電源状態に制限される場合がありますただしアプリケーションクロックが特に高く設定されている場合を除きます。 nvidia-smi -a
コマンドを使用して、GPUで使用可能な現在のアプリケーションクロック、デフォルトのアプリケーションクロック、および最大クロックを確認します。 (古いGPUを含む一部のGPUは、これらのフィールドの一部でN/Aを表示する場合があります。これは通常、アプリケーションのクロックがnvidia-smi
を介して変更できないことを示します。)計算ロード中にカードがP2状態で実行されているように見える場合、アプリケーションクロックを使用可能な最大値(つまり、最大クロック数)まで増やすことで、P0状態に増やすことができる場合があります。 nvidia-smi --help
を使用して、GPUのアプリケーションクロックを変更するコマンドをフォーマットする方法を学習します。アプリケーションクロックを変更したり、変更可能なアプリケーションクロックを有効にしたりするには、root/admin権限が必要になる場合があります。 GPU永続モードを設定することが望ましいまたは必要な場合もあります。これにより、GPUアクティビティの期間中にドライバーが「アンロード」されるのを防ぎ、ドライバーの再ロード時にアプリケーションクロックがリセットされる可能性があります。
この状況で影響を受けるカードの、計算負荷の下でP2に制限するこのデフォルトの動作は、GPUドライバーの設計によるです。
This 多少関連する質問/回答も興味深いかもしれません。