パフォーマンス改善¶
非結合系自由エネルギーカーネルの速度が最大2.5倍向上¶
非結合状態の自由エネルギーカーネルは、AとBの状態がゼロでない場合、2.5倍速く、1つの状態がゼロの場合には1.5倍速くなります。特に、非結合状態がGPUにオフロードされる場合に、この計算が大幅に高速化されます。その場合、PMEメッシュ計算が常に最もCPU時間を消費します。
フーリエ型の適切な二面角と、周期型の不適切な二面角はSIMDで高速化されています。¶
AVX512が有効になっている場合に、|Gromacs|がAVX512を使用していない状態で、独自のFFTWの設定を避けてください。¶
以前、GROMACS が任意の AVX 機能を有効に構成されていた場合、内部で構築された FFTW も AVX512 カーネルを含めるように構成されていました。これにより、(しばしばノイズの多い) FFTW の自動チューナーが、AVX/AVX2 のみを必要とする実行で AVX512 カーネルを選択した場合、パフォーマンスが低下する可能性があります。AVX512 は、GROMACS が同じ SIMD 機能を有効に構成されている場合にのみ、内部の FFTW でのみ使用されます。
アップデートと制約はGPU上で実行できます¶
標準シミュレーション(詳細については、ユーザーガイドを参照)では、更新と制約をCUDAで利用可能なGPUにオフロードできます。これにより、シミュレーションの計算負荷の高い部分をすべてGPUにオフロードできるため、高速なGPUと低速なCPUを組み合わせる場合に、より優れたパフォーマンスを得ることができます。デフォルトでは、更新処理はCPUで実行されます。単一ノードでのシミュレーションでGPUを使用するには、新しいコマンドラインオプション「-update gpu」を使用できます。ドメイン分割での使用については、以下の内容をご参照ください。
GPU間直接通信¶
複数のGPUでCUDAを使用する場合、通信操作は現在、GPUメモリ空間間で直接実行できるようになりました(NVLinkが利用可能な場合は自動的にルーティングされます)。ただし、この機能はデフォルトでは有効になっていません。新しいコードパスは、標準の|Gromacs|の回帰テストによって検証されていますが、(リリース時点では)まだ「実用的な」テストは十分ではありません。以下の環境変数をシェルで任意の非NULLの値に設定することで有効にできます
GPU上のバインドされたカーネルが統合されました¶
各インタラクションタイプに対して個別にGPUカーネルを起動するのではなく、現在、すべてのリストされたインタラクションを処理する単一のGPUカーネルを使用します。これにより、GPU上でバインド計算を実行する場合のパフォーマンスが向上します。
PP-PME の調整時に、初期段階でのパフォーマンス低下を緩和するための遅延時間が追加されました。¶
現代のCPUおよびGPUは、クロック速度を上げるのに数秒かかる場合があります。したがって、PP-PMEの負荷分散は、MDステップ数ではなく、5秒後に開始するように変更されました。これにより、非効率なパフォーマンス設定を回避できます。