web-dev-qa-db-ja.com

nvidia-smiGPUパフォーマンス測定は意味がありません

Nvidia GTX TitanXを使用してディープラーニング実験を行っています。 nvidia-smiを使用してGPUの実行状態を監視していますが、ツールが提供するパフォーマンス(ormance)状態が意味をなしません。

私はnvidia-smiマニュアルをチェックしました、それは次のように言っています:

パフォーマンス状態GPUの現在のパフォーマンス状態。状態の範囲は、P0(最大パフォーマンス)からP12(最小パフォーマンス)です。

GPU(アイドル状態)でプロセスを実行しない場合、GPUパフォーマンス状態はp0です。ただし、計算量の多いプロセスを実行すると、状態はp2になります。

私の質問は、GPUがアイドル時にP0状態にあるのに、重い計算タスクを実行しているときにP2に切り替えるのはなぜですか?それは反対ではないでしょうか?

また、GPUを常にP0状態(最大パフォーマンス)で実行する方法はありますか?

13
jiajun

それは紛らわしい。

ただし、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 多少関連する質問/回答も興味深いかもしれません。

23
Robert Crovella