Lumerical FDTD GPU ソルバー 情報
2023 R2 リリース以降、Lumerical FDTD は GPU 計算をサポートしています。
このページでは、Lumerical FDTD GPU ソルバーの要件と現在の制限についてまとめます。
ハードウェア要件
GPU 上で Lumerical FDTD シミュレーションを実行するには、NVIDIA CUDA ドライバーのバージョン 450.80.02 以降 (Linux)、バージョン 452.39 以降 (Windows) が必要です。さらに、NVIDIA GPU は次の要件を満たしている必要があります:
- GPU は Compute Capability 3.0 (Kepler マイクロアーキテクチャ以降) 以上である必要があります。
- 古いデバイスのドライバーは 2019 年 1 月に廃止されました。
- Unified Memory が使用可能で有効になっている必要があります。
- デスクトップ、ノートパソコン、ベアメタルサーバーでは常に有効になっています。
- AWS EC2 インスタンスなどの「GPU パススルー」を宣伝するクラウドインスタンスでは通常有効になっています。
- その他の仮想環境サービスプロバイダーは、NVIDIA Virtual GPU Software User Guide を参照してください。
- ハイパーバイザーは GPU パススルーを提供するように構成されている必要があります (物理デバイスが特定の仮想マシンに専用される場合)。
- Unified Memory は各 vGPU で有効にする必要がある場合があります。
GPU 使用状況を監視するには、NVIDIA System Management コマンドラインユーティリティによって報告される「GPU-Util」値を使用します。Windows ユーザーは、Windows タスクマネージャーはグラフィックス関連の GPU 使用率のみを報告していることに注意してください。
ライセンス要件
GPU ソルバーの使用量は CPU ソルバー (Ansys optics solve、accelerator、Ansys HPC ライセンスの使用量を参照) と似ています。ライセンス使用量の計算では、Streaming Multiprocessors (SM) を CPU と同じように扱います。たとえば、Ansys Standard/Business ライセンスでは、16 SM ごとに Lumerical Accelerator (エンジンライセンス) が必要です。部分的なカウントはありません。たとえば、40 SM の GPU では、任意のジョブを実行するには 3 つのライセンスが必要です。
FDTD ジョブは GPU 内のすべての利用可能な SM を使用します。つまり、ジョブごとの SM 数はユーザーが構成できません。そのため、すべての GPU SM に十分なライセンスが必要です。
複数のジョブを実行する場合は、並列ではなく連続で実行することをお勧めします。並列実行にはジョブの数と同じ数のライセンスが必要ですが、シリアル実行と同じ時間がかかります。たとえば、16 SM 以下で GPU を同時に使用して 2 つのジョブを実行するには 2 つのライセンスが必要ですが、同じマシンで 1 つのライセンスのみで 1 つのジョブ実行後に続けて実行すると、おおよそ同じ時間で計算が終了します。
GPU 内の SM の数は、NVIDIA のドキュメント、サードパーティの Web サイト、Job Manager Configuration テストの GPU リソース (localhost のみ) を実行することで見つけることができます。
FDTD GPU エンジンを実行したログファイル
start loading CUDA query DLL... load CUDA query DLL successfully. GPU streaming multiprocessors (SMs): 16
FDTD GPU エンジンを実行した後の FDTD 結果の「total gpu sms」
注意: CPU と同様に、メモリ帯域幅はコア数よりもパフォーマンスにとって重要です (CPU での FDTD ベンチマークを参照)。
Lumerical FDTD GPU ソルバー シミュレーション要件
Lumerical FDTD GPU ソルバーは 3D FDTD シミュレーションのみを実行できます。FDTD オブジェクトプロパティ (advanced optionsタブ) で「express mode」オプションを有効にする必要があります。
GPU ソルバーは、狭帯域シミュレーションまたは無分散材料を使用したシミュレーションに適しています。
すべてのムービーモニターは無効になっています。
Resource設定で、ジョブマネージャーを「CPU」から「GPU」に切り替えます。
- ローカルマシンに複数の GPU がある場合は、ジョブマネージャーで特定の GPU を選択できます。エンジンを実行すると、ジョブマネージャーは標準 CUDA_VISIBLE_DEVICES 環境変数を構成します。
- リモートマシンに複数の GPU がある場合は、mpiexec.exe の適切な「追加コマンドラインオプション」を指定することで、特定のGPUを選択できます。たとえば、Microsoft MPI を使用したリモートマシンで GPU 3 を選択するには、追加のコマンドラインオプション /env CUDA_VISIBLE_DEVICES 3 を指定します。
スクリプトアクセス/自動化
FDTD ソルバープロパティ「express mode」のON
setnamed("FDTD", "express mode", true);
FDTD リソースマネージャー
setresource("FDTD","GPU", true); setresource("FDTD", 3, "GPU Device", "Auto"); setresource("FDTD", "GPU", false); setresource("FDTD", "CPU", true); //< equivalent to previous line
リモートホスト GPU を許可するには、「GPU デバイス」の値は検証されません。デフォルトは「Auto」です。ユーザーは整数値を設定する必要があります。
制限事項
FDTD ソルバー
PML 境界条件のみサポートされます。Bloch、周期、対称、反対称、PEC、PMC 境界条件はサポートされません。
光源
モードソース/ポート
- 周波数依存モードプロファイルはサポートされません。
全界散乱界 (TFSF) ソース
- TFSF ソースはサポートされません。
モニター
時間モニター
- 時間モニターは GPU パフォーマンスを制限します。デバッグと予備シミュレーションにのみ使用することをお勧めします。
- 空間補間はサポートされていません。
周波数領域モニター
- 部分および全スペクトル平均化はサポートされていません。
- アポダイゼーションはサポートされていません。
その他
レイヤービルダー
- レイヤービルダーが制限付きプロセスファイルを使用している場合、FDTD GPU エンジンを使用できません。
- PML タイプ シミュレーション境界条件の「一軸異方性 PML (レガシー)」PML タイプはサポートされません。