本トピックではNVIDIAドライバのGPUのメモリ使用に関する設定について説明します。
GPUメモリとは
ランタイムをGPUで実行する場合、GPUメモリを利用します。
GPUメモリには専用メモリと共有メモリがあります。
- 専用メモリ
- GPUに搭載されたメモリ
- 高速
- 通常はこちらが優先的に使用する
- 共有メモリ
- PCのメインメモリと共有
- 低速
- 専用メモリを使い切った場合の他、特殊な用途で使用する
現在のNVIDIAドライバ(ドライババージョン 536.40 以降)のデフォルト設定では、専用メモリを使い切ると自動的に共有メモリを使用する設定となっています。
共有メモリを使うことで専用メモリに収まらない巨大なデータを扱うことができますが、処理速度が非常に遅くなってしまいます。
共有メモリを利用すると搭載されたGPUメモリ容量以上の仕事が出来るため、専用メモリが少ない環境でもエラーを出さずに解析を実行することはできます。
ランタイムを運用する上ではタクトタイムに影響が出てしまうため、タクトタイムが重要な場合は嬉しくない機能となっています。
一見して動いてしまうため、専用メモリが足りないことが原因で低速となっていることに気が付かない場合があります。
次節では専用メモリが足りない場合はエラーとする設定を紹介します。
GPUの専用メモリのみを使う設定
※本設定を行うと解析が低速になることはありませんが、専用メモリが足りない場合は「解析エラー」となり解析に失敗するようになります
専用メモリを使い切ると自動的に共有メモリを使用する動作は、NVIDIAドライバの設定で変更ができます。
以下変更方法を紹介します。
- タスクトレイのNVIDIA設定を開きます
- 「3D設定の管理」から「CUDA - システムメモリフォールバックポリシー」を「システムメモリフォールバックなしを優先」に変更
- 適用ボタンを押下
上記変更はPC上のすべてのアプリケーションに適用されます。
特定のアプリケーション(MENOU-TE/RNなど)のみに適用する場合は「プログラム設定」タブより、アプリケーションを個別に指定して適用することもできます。
この機能はドライババージョン 536.40 にて実装されたものです。(参考)
これより古いドライバを使用している場合は設定項目自体が存在しない可能性があります。その場合は「システムメモリフォールバックなしを優先」を選択したときと同じ挙動となります。
ランタイムのGPUメモリ使用量を確認する方法
ランタイムのパフォーマンス計測機能を利用するとGPUメモリの使用量計測が可能です。
ランタイムのメモリ使用量がGPUの専用メモリ容量を下回るようにすると、高いパフォーマンスを維持できます。
ぜひご活用ください。