GROMACS

项目主页:http://www.gromacs.org/

开发者:Herman Berendsen

当前版本:2016

License: LGPL



概况

GROMACS于上世纪90年代初诞生于哥廷根大学Berendsen实验室,其开发初衷是发展一个并行的分子动力学软件,初版功能主要基于van Gunsteren和Berendsen开发的串行动力学软件GROMOS。虽然与GROMOS有很深的渊源,GROMACS诞生之后两个软件各自独立发展,分别由Berendsen实验室和van Gunsteren维护和开发,在功能和特性上也渐趋不同。van Gunsteren实验室侧重于与GROMOS同名的力场的开发,Berendsen实验室则在动力学软件本身的开发尤其是性能提升方面取得了很多进展。从2001年开始,GROMACS的开发维护工作由瑞典KTH皇家技术学院的Science for Life Laboratory主导。GROMACS主体代码使用C语言,近年来正逐步过渡到C++,代码开源。在发展历程中GROMACS一直强调性能优化,其运行效率尤其是单机计算效率在多个benchmark中明显优于几个主流同类软件。时至今日,高度优化的计算性能和代码的开放性为GROMACS赢得了众多的用户,使之成为目前生物系统分子动力学模拟领域中最常用的软件。当前版本为2016,代码量约百万行。

主要功能

  • 支持基本动力学相关算法,包括牛顿力学及随机动力学积分器、能量最小化、正则模式分析、模拟淬火等。支持温度及压强控制,支持基于SHAKE和P-LINCS的完全约束算法,支持多种几何约束。支持包括umbrella sampling在内的非平衡态动力学。支持FEP、essential dynamics。暂不支持const-pH。
  • 内建支持AMBER、CHARMM、GROMOS及OPLS等多种常见经典力场及数种较少见力场。软件通过user tables实现对非标准函数形式的支持。
  • 支持Martini粗粒化模型。
  •  支持基于GBSA的隐式溶剂模型,包括三种可选的计算Born radii的方法。
  • 支持QM/MM混合动力学,对QM部分支持的计算方法包括AM1, PM3, RHF, UHF, DFT, B3LYP, MP2, CASSCF和MMVB,可对接GAMESS、Gaussian、MOPAC、Orca等量化软件。

特色

GROMACS最突出的特色和目标是高效,无论串行还是并行版本。为达到这一目标,GROMACS进行了大量设计和优化,包括但不仅限于下面这些:
  • 采用多层级的并行方式分配计算任务,尽量在各个层面上充分利用系统的并行性。第一层为ensemble级别的并行,由一个独立的框架软件Copernicus在GROMACS上层实现,ensemble中包含多个相对独立的系统拷贝,每一个拷贝由GROMACS进行动力学计算,相互间通信量很少,通过http实现。第二层为MPI级别的并行,通过空间分解将计算量分配到多个计算单元,划分方法采用D.E. Shaw提出的eighth shell方法,多个计算单元间通过MPI通信。OpenMP作为并行模式的第三层,在MPI分解至节点的基础上通过基于OpenMP的多线程机制利用多核的并行性。
  • 曾经大量使用手写的汇编语言内核来调用支持SIMD的硬件,但这种编程模式耗费大量开发时间。从4.6版本开始,GROMACS加入了一个基于SIMD intrinsics的模块抽象SIMD操作,并使用一个新的内置SIMD数学库来避免不是所有SIMD指令集都支持的查表和整型操作。这种方式大大简化了支持新CPU架构所需完成的开发。
  • 默认使用混合精度模型。程序大量使用strength-reduction算法来保证单精度的使用。
  • 在较新近版本中的一个重要优化是引入了一种基于cluster的邻近列表加速邻近列表的构建和访问。


参考资料



Comments are Closed