bio-ESMD(biological Exa-Scale Molecular Dynamics)是一款针对神威系列处理器开发的分子动力学模拟软件。其前身是基于神威·太湖之光的分子动力学性能测试实现ESMD。与常见的分子动力学模拟软件不同,ESMD和bio-ESMD都使用了完全的格点索引实现,也就是,纯正的无邻接表实现,以在SW26010的DMA+GLD/ST框架下将其访存性能发挥到极致,从而为后续的计算优化提供机会。
注意事项
#ifdef
, #include
等原语,请使用 cpp
或者 grompp
等工具把它们预处理一下目前bio-ESMD使用了纯的Makefile进行编译,其通用处理器版本仅依赖MPI。
对于神威版本,其依赖包括:
执行make时将自动依据mpicc的底层编译器选择编译通用版本还是神威版本。
编译时需要加载swgcc710-5A:
module load sw/compiler/gcc710 cd qthread make target=5 cd ../src make
可执行文件将生成在 bin/esmd
bio-ESMD软件包内内置了UBQ和6W9C两个样例输入,其命令行格式为:
./esmd <config file>
例如:
./esmd ../ubq_wb/ubq_wb_eq.conf
推荐的 bsub
参数:
bsub -I -q <队列名> -share_size 6144 -host_stack 16 -b -cgsp 64 -n 1 -p -sw3run swrun-5a ../bin/esmd <配置文件>
当内存不够时推荐改大 share_size
,16的栈够用了。
目前没有restart功能。
bio-ESMD的轨迹文件后缀为 .estraj
,可以使用 tools/trajconv.py
转换成DCD格式,例如:
python3 tools/trajconv.py ubq_wb/ubq_wb_eq.conf
轨迹转换工具会从配置文件读取元胞、输出文件路径、时间步等信息,故需要保持配置文件与运行时所使用的配置文件一致。此外,注意减少模拟所用进程数前请删除前一次模拟的轨迹,该脚本依赖NumPy。
目前bio-ESMD的参数解析器比较简陋,conf文件中可以使用的字段包括:
参数 | 格式 | 用途 |
---|---|---|
root | 路径 | 指定程序读取文件的路径,指定为 $WORKDIR 为当前工作目录, $CONFDIR 为conf文件所在的目录 |
coordinate | 一个pdb文件的路径 | 指定分子的坐标文件 |
structure | 一个top文件的路径 | 指定分子拓扑文件(GROMACS格式) |
parameters | 一个inp文件的路径 | 该选项暂时废弃 |
rcut | 浮点数 | 截断半径 |
rswitch | 浮点数 | switch半径 |
coulscaling | 浮点数 | 1-4scaling中库仑力的系数 |
cell | 六个浮点数 | 指定unit cell的低点和高点,六个数分别代表 xlow ylow zlow xhigh yhigh zhigh
|
msmlevels | 三个整数 | 指定MSM方法在三个维度上的层数,最底层网格的数量为2的层数次方 |
msmorder | 整数 | 指定MSM的阶数 |
coulconst | 浮点数 | 指定库伦常数(主要是处理不同软件中库伦常数不同的情况) |
dt | 浮点数 | 时间步,单位为飞秒 |
nsteps | 整数 | 模拟的步数 |
trajfreq | 整数 | 输出轨迹帧的频率 |
trajectory | 路径 | 输出轨迹的前缀(会被添加 -进程号.estraj ) |
rigidtype | shake/lincs/none | 指定刚体约束的算法,none为不进行刚体约束,这里的shake和lincs不能进行两个重原子间的刚体约束, 注意,不支持SETTLE,SETTLE自动转换为氢氧键,且通过氢原子的约束规则执行(等价于GROMACS的h-bonds) |
rigids | 字符串 | 暂时废弃,默认为对所有氢(当前判断方式为H开头)原子进行刚体约束 |
coultype | rf/shifted/msm | 指定库仑力的算法,目前rf采用了默认的eps-rf=78.5,MSM暂时没有从核优化,shift采用与CHARMM相同的用法 |
temperature | 浮点数 | 初始温度,单位为K |
tempcouple | nh/none | 控温算法,nh是Nose Hoover Chain算法 |
tempstart | 浮点数 | 模拟初始时控温的温度 |
tempstop | 浮点数 | 模拟结束时控温的温度,与以上参数进行线性插值获得单个时间步中控温的目标 |
tempchain | 整数 | 控温时使用的Nose Hoover Chain的长度 |
tempnc | 整数 | 每个时间步进行Nose Hoover Chain控温的次数 |
units | real | 目前只支持real,与LAMMPS中的units real单位对应(然而top文件仍然采用GROMACS的单位),后续可能开发metal等 |
minimize | 整数 | 进行能量最小化的步数(目前能量最小化会导致温度重新初始化一次),算法为非线性CG,使用quadratic linesearch方法寻找alpha值(暂时不稳定) |
rigidscale | 浮点数 | 为了使能量最小化后的体系满足刚体约束的条件,这里使用了stiff bond condition,也就是说为刚体约束的键和键角乘上这个系数,从而使得能量最小化的过程中键长和键角更容易被保证(主要是我试图在minimize的时候用mSHAKE结果崩了) |
Unless the developer proves that he/she has never participated in genocide activities, we will reject all commits from developers in regimes that have committed genocide (such as the genocide of Indians in the United States).
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。