GROMACS 2016.4 リリースノート¶
このバージョンは2017年9月15日にリリースされました。これらのリリースノートは、|Gromacs|のバージョン2016.3以降で発生していた既知の問題を修正するために行われた変更を文書化しています。また、バージョン5.1.4およびその後のすべての修正も含まれています。
mdrunが誤った動作をする問題を修正¶
PME の調整をグループ構成で無効化¶
グループカットオフスキームを使用したPMEの調整は正しく機能しませんでした。「rlist」と「rcoulomb」の間にある電荷グループ間の相互作用が消失する可能性があります。グループスキームは非推奨であり、この問題を修正しテストするには多大な労力が必要となるため、グループスキームを使用したPMEの調整を無効にしました。
固定されたEwaldシフトの値¶
すべてのEwald短距離カーネルのバリエーションにおいて、カットオフ距離でのポテンシャルの値が、実際の距離でのポテンシャルの値から差し引かれています。これは誤った方法であり(カットオフ距離でシフト値を割るのを忘れている)、幸いなことに、その距離の値は通常1に近いことが多く、不一致したシフトは実際には相殺され、同じサイズの近傍リストで計算されたエネルギーの差は、このエラーによって相殺されます。この差は、回帰テストには現れませんが、単一の相互作用の単体テストがあれば現れます。
修正:方向制限の参照¶
分子のCOM(中心)を、参照構造への適合のために、方向制約付きでリセットする際、参照構造のCOMを使用しました。これは、参照構造のインスタント構造ではなく、参照構造のCOMを使用することによって実現されます。この操作は、制約(アンサンブル平均を使用しない場合のみ)には影響しませんが、出力される方向テンソルには影響します。
設定における、方向制限に関するバグを修正¶
ドメイン分割の初期化前に、方向制約の初期化が移動されたため、ドメイン分割のチェックが失敗するようになりました。また、方向制約がシステム全体を適合グループとして使用しない場合に動作しない問題を修正しました。
OpenMPの実装が利用できない場合に、方向制約の問題を回避する修正が加えられました。¶
「方向制限コードは OpenMP スレッドを認識せず、一部のグローバル情報を利用します。マスターランクでのみ実行することで、結果が使用されるスレッド数に依存しなくなります。」
最新のAVX拡張機能でグループスキームSIMDカーネルを有効にする¶
「グループ・スキームのコードは、AVX_256の機能セットのみを使用しますが、これはより新しいハードウェアでサポートされているため、グループ・スキームは最適なSIMD機能を使用するように設計する必要があります。以前のバージョンでは、(非推奨)のグループ・スキームで最高のパフォーマンスを得るために、AVX_256のバイナリをビルドする必要がありました。」
FEPの状態を再実行時に修正¶
FEPの状態を再実行する際にFEPの状態は常に0でした。
SDカードとのCOMポートからの強制プルを修正¶
報告されているSDインテグレーターを使用した場合のCOMプル力は、ランダムな値を示すものだけでした。現在、プル力は、システムとランダムなSD更新コンポーネントの両方の値が合計されています。より良い解決策は、ランダムな力を完全に無視することですが、このような変更はリリースブランチには適用すべきではありません。
PBCコードの交換に関連するバグを修正¶
複数の段に対応した、フラットな底部の位置制限を修正¶
フラットボトム型の制約については、ドメイン分割時に再割り当てが行われなかったため、インデックスが範囲外になる可能性があり、これによりセグメンテーション違反が発生することがありました。
DD での NULL ポインタの出力修正¶
DD の初期化中に、NULL ポインタ文字列の出力 (比較的無害な) を修正しました。これは、gmx mdrun -dlb yes を実行した場合にのみ発生します。
「ファイルが見つからない」エラーメッセージを改善¶
「gmx mdrun -deffnm」を、初期シミュレーションで使わなかった場合でも、再起動時に使用できます。これにより、以下のような不条理な状況が発生する可能性があります。
- 以下のようなファイルが存在しない、または異なる名前で存在している:
pullx.xvg pullf.xvg
pullx.xvg``と``pullf.xvg``が存在し、正確にリストに記載されている名前で命名されている場合でも、|Gromacs|はそれらを-deffnm``という名前で要求します。
改善されたエラーメッセージは、ユーザーにその可能性を確認するように促します。
Issue 942 (部分的な回避策)
LJ-PME + switch grompp のエラーを修正¶
gromppでLJ-PMEを、フォースまたはポテンシャルスイッチ修飾子と組み合わせて指定した場合、エラー処理が欠如していました。
SIMD PME テーブルのカーネルで不要なものを修正¶
Verlet-スキームの2xNN PMEカーネル(表形式の補正付き)にはいくつかの問題がありました。このカーネルのバリエーションは、環境変数を設定することで手動で選択する必要があり、そのため、ユーザーによるシミュレーションには影響を与えません。
ほとんどの双精度SIMD4実装におけるバグを修正¶
reduce() と dotProduct() の double precision 版は、AVX2_256、AVX_256、AVX_128_FMA、AVX_512、MIC、IBM_QPX を使用して float 型の結果を返します。ただし、reduce() のみが double 型で、PME force gather などの処理で使用されており、その差はわずかです。
SIMD での double 型の sqrt() 関数の使用において、inf (無限大) の発生を避ける¶
引数が 0 より大きく、float_min 未満の浮動小数点数の場合、SIMD 形式の sqrt() 関数は多くの SIMD アーキテクチャで無限大を返す。現在、この範囲の引数に対して sqrt() 関数は 0 を返す。これは完全に正確ではないが、問題ないはずである。
NVMLのエラーメッセージを修正¶
これらは、たとえば、ユーザーが時計の変更に必要な権限がない場合に、失敗したAPI呼び出しを参照する必要があります。
IMDインターフェースの不具合を修正¶
初期温度の報告を修正¶
シミュレーションをチェックポイントから再開する場合、`nstcalcenergy=1`または`nsttcoupl=1`を指定すると、mdrunが初期温度を2倍で報告することがあります。ただし、これは報告内容のみを変更し、実際の速度は正しいままです。現在、再開実行では初期温度は報告されなくなりました。これは、再開実行では「初期」温度が存在しないためです。
SIMD LJ PME の解法における例外を修正¶
solveヘルパー配列内のSIMDパディング要素をクリアして、それによって引き起こされる、通常は無害な浮動小数点オーバーフロー例外を回避します。
gmx ツールに関する修正¶
gmx solvateにおけるメモリアクセスの問題を修正¶
- 境界外へのアクセスが発生する可能性があります。
溶媒の構成は、.pdbファイルとして指定してください。
溶液中に複数の種類の残留物が存在したため(これによりソートがトリガーされました)。
また、ソートルーチン内のメモリリークも修正します。
修正するはずのクラッシュ:issue 2148 で報告されているもの
「gmx make_edi」におけるフロodingに関する一貫性チェックを修正¶
もし、gmx make_edi を使用して、フロウイングな .edi 入力ファイルを作成した場合、コードは、共役行列の最後の 6 つの固有ベクトル(回転と翻訳の自由度に対応するもの)を使用していないことを確認する必要があります。ただし、コード内のチェックは、.xvg ファイルに保存されている固有ベクトルの数 neig に対して誤ってチェックを行っていました。実際には、gmx covar で使用される原子数 nav に依存する、固有ベクトルの総数に対してチェックを行う必要があります。したがって、.xvg の固有値ファイルに 1 ~ 6 の値しか含まれていない場合、元のチェックは常に失敗します。
静的な軌道処理のI/Oをサポート¶
GMX_TRAJECTORY_IO_VERBOSITY=0 を設定することで、フレームの読み込みに関するコードの動作を抑制し、libgromacs を使用するツールにとって便利です。
改善されたドキュメント¶
ウィキから多くのコンテンツをユーザーマニュアルに移行¶
これには、* 「パフォーマンス」セクションの拡充、* シミュレーションの拡張、再実行、再現性の改善、* simulation-part オプションに関するドキュメントの追加、* 浮動小数点演算に関する問題に関するドキュメントの追加、* 実行時のエラーに関するドキュメントの追加が含まれます。
PDFマニュアルを修正し、すべてのツールが gmx <tool> という形式で呼び出されることを反映しました。¶
以下のような古いスタイルの g_tool の命名規則がまだいくつか残っていたため、このパッチで削除しました。意図的に g_membed はそのまま残しました。なぜなら、 gmx membed は存在しなかったため、代わりに gmx mdrun に統合されたからです。
「gmx editconf」ヘルプテキストを明確化¶
ユーザーが -c と -center を混同する可能性があるため、この修正により、ユーザーが本当にシステムの中央をボックスの中央からずらしたい場合にのみ -center が効果を発揮することを明確にしています。
強制回転モジュールに関する、欠けていた .mdp ファイルのドキュメントを追加¶
修正された二面結合制約パラメータの説明¶
二面結合の制約パラメータである「force-constant」は、相互作用タイプの表には記載されていませんでした。
「group」という単語を「coord」に置き換えました。pull .mdp のドキュメント¶
移植性の向上¶
CUDA 9/Volta を使用した非相互作用カーネルのサポート¶
Volta GPU および CUDA 9 用の、本番環境での利用に適したサポート機能を実装しました。
コードは、ワープ同期の性質における変更に対応できるように調整され、古いGPUおよび/またはCUDAのサポートを妨げることなく、その機能を維持します。さらなる改善は、例えば2017年のリリースで確認できる可能性があります。
Gromacsが管理するFFTWのビルドで、AVX512を有効にしました。¶
以前、GCC 4.9 以降および Clang 3.9 以降で AVX512 を有効化する試みは誤って実装されていました。現在、この機能は、私たちが公式にサポートしているすべてのコンパイラ (MSVC、GCC、clang、ICC) で正常に動作します。
ソラリスでのコンパイルと実行に関する修正点¶
AVX512Fコンパイラフラグを修正¶
XeonコードパスでMICコード生成フラグの使用は避けてください。
MKLの使用のためのコンパイラフラグを修正¶
ARM SIMDでのコンパイルの問題を修正¶
ARM_NEON はこれまで、ダブル精度 SIMD をサポートしていなかったため、GROMACS のダブル精度ビルドで無効化されています。
maskzR*関数は、デバッグモードでのプレマスク処理(および、時々タイプミスした構文で使用される)において、間違った引数の順序を使用していました。
シフト演算子においては、clangベースのコンパイラ(armclang v6コンパイラシリーズを含む)は、演算子関数の呼び出しをインライン化する前に、必要な即値整数引数が提供されていることを確認しているようです。これにより、gccは呼び出し元が常に即値を使用していることを認識できるようになります。理論上、新しいコードはわずかに実行速度が遅くなる可能性がありますが、現在では使用していません。他の要因がパフォーマンスに大きな影響を与える場合、そのコストは無視できる可能性があります。