便利な mdrun の機能¶
このセクションでは、gmx mdrun の、他の場所に適切に配置できない機能について説明します。
シミュレーションの再実行¶
「rerun」機能を使用すると、任意の軌道ファイル「traj.trr」から、``topol.tpr``ファイルに記載されているモデル物理を使用して、そのファイル内の座標に基づいて量を計算できます。これは、「mdrun -s topol -rerun traj.trr」のようなコマンドラインで利用できます。生成された軌道とは異なる「tpr」ファイルを使用することも可能です。これにより、入力された座標に対して正確なエネルギーや力を計算したり、分子システムのサブセットに基づいて量を抽出したり(「:ref:`gmx convert-tpr」および「:ref:`gmx trjconv」を参照)できます。この機能を使用すると、0ステップシミュレーションよりも、より正確な「シングルポイント」エネルギー評価を行うことができます。
各フレームに対して、独立して近傍探索が実行されます。これは、nstlist の値に関係なく、gmx mdrun が構造がどのように生成されたかについて、何も仮定できないためです。もちろん、更新または制約アルゴリズムは決して使用されません。
「再実行」機能は、通常、完全なシミュレーション中に報告される多くの量を計算できません。これは、位置のみを入力として受け取り(速度が潜在的に存在する場合でも無視)、ポテンシャルエネルギー、体積、密度、dH/dl項、および制約情報のみを報告します。ただし、運動エネルギー、総エネルギー、保存エネルギー、温度、バイラル、または圧力は報告しません。
再現可能なモードでのシミュレーションの実行¶
通常、浮動小数点演算に大きく依存し、完全に再現可能な効率的な並列MDシミュレーションを実行することは困難です。デフォルトでは、gmx mdrun`は、シミュレーションの実行方法を最適化するために、状況を監視し、シミュレーションの実行方法を調整します。ただし、「再現モード」である ``mdrun -reprod` を使用すると、その実行中にすべての変動要因を体系的に排除し、同じ入力とハードウェアに対して繰り返し実行すると、結果は完全に同一になります。ただし、異なるハードウェアや、異なるコンパイラなどを使用する場合は、再現性はありません。このモードは、通常、問題の調査に使用されるべきです。
シミュレーションの停止¶
gmx mdrun が TERM または INT シグナル(たとえば、Ctrl+C が押された場合)を受信すると、次の最接近探索ステップまたは、その後のステップで、2番目のグローバル通信ステップのいずれか1つで停止します。 gmx mdrun が2番目の TERM または INT シグナルを受信し、再現性が要求されていない場合、最初のグローバル通信ステップで停止します。どちらの場合も、通常の出力はファイルに書き込まれ、最後のステップでチェックポイントファイルが作成されます。 gmx mdrun が ABRT シグナルまたは3番目の TERM または INT シグナルを受信すると、新しいチェックポイントファイルを作成せずに直接終了します。MPIで実行する場合、1つの gmx mdrun プロセスにシグナルを送るだけで済みます。このシグナルは、他の gmx mdrun プロセスまたは、それら親となる gmx mdrun プロセスに送信しないでください。
複数のシミュレーションの実行¶
同じmdrunの実行で、関連するシミュレーションをまとめて実行することは、多くの状況で必要または有用です。特に、レプリカ交換シミュレーションや、アンサンブルベースの距離または方向制約を使用するシミュレーションには必須です。また、自由エネルギー計算のための関連するラムダポイントの連番実行も、この方法で簡単に行うことができますが、後で説明する、リソース利用と負荷分散に関連する潜在的な副作用には注意してください。
この機能を使用するには、シミュレーションのセットが通信できるように、|Gromacs|を外部MPIライブラリ(:ref:`external MPI library <mpi-support>)で構成する必要があります。セット内の「n」シミュレーションは、内部のMPI並列処理も使用できるため、「mpirun -np x gmx_mpi mdrun」で「x」を「n」の倍数として使用すると、「x/n」のランクが各シミュレーションで使用されます。
マルチシミュレーションを開始するには、-multidir``オプションを使用します。マルチシミュレーションの入力ファイルと出力ファイルには、シミュレーションごとに1つずつ、合計「n」個のサブディレクトリが必要です。すべての関連する入力ファイルをこれらのディレクトリに配置します(例:名前が「topol.tpr」のファイル)。その後、``mpirun -np x gmx_mpi mdrun -s topol -multidir <ディレクトリ名のリスト>``を使用してマルチシミュレーションを開始します。マルチシミュレーション内のシミュレーションの順序が重要な場合は、これらの名前を-multidir``に提供する際に、適切な順序で指定する必要があります。ファイル名展開を辞書形式で行うシェル(例:dir1 dir10 dir11 ... dir2 ...)を使用する場合は、注意してください。
Invalid section title or transition marker.¶
mpirun -np 32 gmx_mpi mdrun -multidir a b c d
32個のコアで、4つのシミュレーションを実行するマルチシミュレーションを開始します。入力ファイルと出力ファイルは、ディレクトリ「a」、「b」、「c」、および「d」にあります。
mpirun -np 32 gmx_mpi mdrun -multidir a b c d -gputasks 0000000011111111
以前と同じマルチシミュレーションを開始します。2つの物理ノードと各ノードに2つのGPUがあるマシンでは、1つのノードあたり16のMPIランクと、シミュレーションあたり8のMPIランクが存在します。ノード上でPPの作業を行う16のMPIランクは、複数のシミュレーションから来たものであっても、ID 0と1のGPUにマッピングされます。これは、各シミュレーションのPPランクが単一のGPUを使用するように、指定された順序でマッピングされるためです。ただし、順序 0101010101010101 がより高速に動作する可能性があります。
レプリカ交換シミュレーションの実行¶
マルチシミュレーションを実行する場合、「gmx mdrun -replex n」を使用すると、指定されたステップ数ごとにレプリカ交換が試行されます。レプリカの数は、「-multidir」オプション(上記で説明)で設定します。すべての実行入力ファイルには、異なる値(たとえば、温度)でカップリングパラメータを設定する必要があります。このパラメータは、入力ファイル全体で徐々に増加するように設定します。レプリカ交換のランダムシードは、「-reseed」オプションで設定します。交換後、速度がスケーリングされ、近傍検索が実行されます。|Gromacs|におけるレプリカ交換の仕組みの詳細については、リファレンスマニュアルを参照してください。
マルチシミュレーションのパフォーマンスに関する考慮事項¶
マルチシミュレーションにおける通信頻度は、パフォーマンスに影響を与える可能性があります。これはアルゴリズムに大きく依存しますが、一般的には、マルチシミュレーションを設定して、シミュレーション間の通信をできるだけ少なくし、必要な場合にのみ行うことが推奨されます。ただし、マルチシミュレーションのメンバーが頻繁に(または全く)通信しない場合でも、その結果として発生するパフォーマンスオーバーヘッドは小さく、あるいは無視できるほどでも、負荷の不均衡は依然としてパフォーマンスとリソースの利用に大きな影響を与える可能性があります。現在のマルチシミュレーションアルゴリズムでは、データ交換に固定された間隔を使用します(例:レプリカ交換を「N」ステップごとに実行)。したがって、マルチシミュレーションのすべてのメンバーは、集団的な通信を行う前に、このステップに到達する必要があります。それから、どのメンバーもステップ「N+1」に進むことができます。したがって、マルチシミュレーションの中で最も遅いメンバーが、全体のパフォーマンスを決定します。この負荷の不均衡は、パフォーマンスを制限するだけでなく、リソースを無駄にもします。たとえば、「n」ウェイのマルチシミュレーションの1つのシミュレーションが、残りのシミュレーションの半分程度のパフォーマンスで実行される場合、「n-1」の高速な実行シミュレーションに割り当てられたリソースは、マルチシミュレーション全体のウォールタイムの約半分にわたって無駄になります。この不均衡の原因は、マルチシミュレーション内のシミュレーション間の内在的な負荷の不均衡から、ハードウェアの速度やノード間のネットワークパフォーマンスの変動から、特定のランクに影響を与える場合など、多岐にわたります。無駄になっているリソースを減らすには、負荷の不均衡を減らす必要があります。これには、通信を行わないマルチシミュレーションを分割したり、クラスタで「コンパクト」な割り当てをリクエストしたりすることが含まれます(ジョブスケジューラが許可する場合)。また、FEP計算などの通信を行わないマルチシミュレーションにも、この不均衡が適用されます。なぜなら、より早く完了したシミュレーションに割り当てられたリソースは、マルチMPIジョブ全体が完了するまで解放されないためです。
シミュレーションの長さを制御する¶
通常、MDシミュレーションの長さを管理するには、:ref:`mdp`オプション::mdp:`nsteps`を使用するのが最適ですが、より詳細な制御が必要な場合もあります。 :samp:`gmx mdrun -nsteps 100`は、:ref:`mdp`ファイルを上書きし、100ステップを実行します。 :samp:`gmx mdrun -maxh 2.5`は、シミュレーションを2.5時間経過する直前に終了させることができます。これは、キューシステムで実行する場合に特に便利です(ただし、キューシステムがシミュレーションを一時停止しない限り)。