一般に、Windows で CUDA を使用する場合、1 つのカーネルの実行時間が約 2 秒を超えないようにする必要があります。実行時間が長くなると、Windows TDR イベントにヒットする可能性があります。これは、一定時間内に応答しない場合に GPU ドライバーをリセットする Windows ウォッチドッグ タイマーです。このようなリセットは、カーネルの実行を停止し、偽の結果を生成するだけでなく、通常は短時間「黒い」ディスプレイとシステム トレイに短いメッセージを表示します。カーネルの実行が Windows ウォッチドッグ タイマーをトリガーしている場合、いくつかのオプションがあります。
- システムで複数の GPU を使用する可能性があり (通常、ここではラップトップについては触れません)、GPU の 1 つが Quadro または Tesla デバイスである場合、Quadro または Tesla デバイスは通常 TCC モードに配置できます。これは、GPU が物理ディスプレイを駆動できなくなり (物理ディスプレイを駆動していた場合)、WDDM サブシステムから削除され、ウォッチドッグ タイマーの影響を受けなくなることを意味します。
nvidia-smi.exe
NVIDIA GPU ドライバーに同梱されているツールを使用して、特定の GPU の設定を WDDM から TCC に変更できます。Windows ファイル検索機能をnvidia-smi.exe
使用nvidia-smi --help
して検索し、WDDM から TCC モードに切り替える方法についてコマンド ライン ヘルプを取得します。
- 上記の方法が利用できない場合 (2 つの GPU を持っていない、Quadro または Tesla GPU を持っていない...)、ウォッチドッグ タイマーの設定の変更を検討することをお勧めします。残念ながら、これにはシステム レジストリを変更する必要があり、プロセスと特定のキーは OS によって異なります。Web には、Microsoft のhereなどのリソースや、Stack Overflow に関するその他の質問 ( hereなど) があり、これが役立つ場合があります。
- 3 番目のオプションは、カーネルの実行時間を単純に制限することです。連続する操作は、複数のカーネル呼び出しに分割される場合があります。カーネル呼び出し間の「ギャップ」により、ディスプレイ ドライバーが OS に応答できるようになり、ウォッチドッグ タイムアウトが防止されます。
TCC サポートに関する記述は一般的なものです。すべての Quadro GPU がサポートされているわけではありません。特定の GPU で TCC がサポートされているかどうかの最終的な決定要因はnvidia-smi
ツールです。特定の GPU での TCC のサポートを保証するものではありません。