详细内容

gromacs命令-gmx tune_pme: 计算mdrun的运行时间与PME进程数的关系以优化设置(翻译: 嘉晔)

gmx tune_pme [-p [<.out>]] [-err [<.log>]] [-so [<.tpr/.tpb/...>]]
			 [-s [<.tpr/.tpb/...>]] [-o [<.trr/.cpt/...>]] [-x [<.xtc/.tng>]]
			 [-cpi [<.cpt>]] [-cpo [<.cpt>]] [-c [<.gro/.g96/...>]]
			 [-e [<.edr>]] [-g [<.log>]] [-dhdl [<.xvg>]] [-field [<.xvg>]]
			 [-table [<.xvg>]] [-tabletf [<.xvg>]] [-tablep [<.xvg>]]
			 [-tableb [<.xvg>]] [-rerun [<.xtc/.trr/...>]] [-tpi [<.xvg>]]
			 [-tpid [<.xvg>]] [-ei [<.edi>]] [-eo [<.xvg>]]
			 [-devout [<.xvg>]] [-runav [<.xvg>]] [-px [<.xvg>]]
			 [-pf [<.xvg>]] [-ro [<.xvg>]] [-ra [<.log>]] [-rs [<.log>]]
			 [-rt [<.log>]] [-mtx [<.mtx>]] [-dn [<.ndx>]] [-swap [<.xvg>]]
			 [-bo [<.trr/.cpt/...>]] [-bx [<.xtc>]] [-bcpo [<.cpt>]]
			 [-bc [<.gro/.g96/...>]] [-be [<.edr>]] [-bg [<.log>]]
			 [-beo [<.xvg>]] [-bdhdl [<.xvg>]] [-bfield [<.xvg>]]
			 [-btpi [<.xvg>]] [-btpid [<.xvg>]] [-bdevout [<.xvg>]]
			 [-brunav [<.xvg>]] [-bpx [<.xvg>]] [-bpf [<.xvg>]]
			 [-bro [<.xvg>]] [-bra [<.log>]] [-brs [<.log>]] [-brt [<.log>]]
			 [-bmtx [<.mtx>]] [-bdn [<.ndx>]] [-bswap [<.xvg>]] [-nice ]
			 [-xvg ] [-np ] [-npstring ] [-ntmpi ]
			 [-r ] [-max ] [-min ] [-npme ]
			 [-fix ] [-rmax ] [-rmin ] [-[no]scalevdw]
			 [-ntpr ] [-steps ] [-resetstep ] [-nsteps ]
			 [-[no]launch] [-[no]bench] [-[no]check] [-[no]append]
			 [-[no]cpnum]

对于给定数目-np-ntmpi的总进程数, gmx tune_pme可以系统地测试不同PME进程数对gmx mdrun运行时间的影响, 并确定哪种设置最快. 通过将负载从Ewald加和的倒易空间部分转移到实空间部分, 它也可以测试是否能提升性能. 测试时, 你只需要将.tpr文件和gmx mdrun的运行选项一起传给gmx tune_pme即可.

测试使用的可执行文件可以通过环境变量MPIRUNMDRUN进行设置. 如果这些设置不存在, 默认将使用mpirunmdrun. 注意, 对某些MPI框架, 你需要提供机器号或者主机名. 也可以通过MPIRUN变量传递这些设置, 例如,

export MPIRUN="/usr/local/mpirun -machinefile hosts"

在实际的基准测试运行之前, 如果激活了-check选项(默认激活), gmx tune_pme会进行一个快速的检测, 以确定对提供的并行设置mdrun是否如预期的那样运行. 请使用你要传递给gmx mdrun的正常选项去调用gmx tune_pme, 并且增加执行测试的进程数选项-np, 或线程数选项-ntmpi. 你也可以增加-r选项对每个测试重复多次以便得到更好的统计结果.

gmx tune_pme能够测试各种实空间/倒空间的工作负载. 使用-ntpr选项, 你可以控制额外输出的.tpr文件的数目, 每个文件分别对应了增大的截断距离和更小的傅里叶格点. 通常, 首次测试(0号)的设置来自输入的.tpr文件; 最后一次测试(ntpr号)使用了由-rmax指定的库伦截断, 同时使用了略小的PME格点. 在最后的测试中, 傅里叶间距会变为原来的rmax/rcoulomb倍. 其余.tpr文件使用了处于这两个极值之间的等间距的库伦布半径(以及傅里叶间距). 注意, 如果你只想搜寻最佳的PME进程数, 可以将-ntpr设为1. 在这种情况下, 输入文件.tpr将保持不变.

对于基准测试, 默认的1000个时间步对大多数MD体系应该足够了. 动态负载平衡大约需要100个时间步长来适应本地的负载失衡, 因此默认情况下, 100步之后时间步计数器会被重置. 对于大的体系(>1M个原子)以及高精度测量, 你应该将-resetstep设置为更大的值. 由md.log输出文件中的DD负载失衡项, 你可以知道多少步之后负载已经充分均衡了. 例如, 你可以调用

gmx tune_pme -np 64 -s protein.tpr -launch

调用gmx mdrun命令若干次之后, 详细的性能信息会保存在输出文件perf.out中. 注意, 在基准测试运行期间, 会产生一些临时文件(选项-b*), 每个测试完成之后它们会被自动删除.

如果你想使用最佳参数自动启动模拟, 可以使用命令行选项-launch.

输入/输出文件选项
选项默认值类型说明
-p [<.out>]perf.out输出通用输出文件
-err [<.log>]bencherr.log输出日志文件
-so [<.tpr/.tpb/...>]tuned.tpr输出运行输入文件: tpr tpb tpa
-s [<.tpr/.tpb/...>]topol.tpr输入运行输入文件: tpr tpb tpa
-o [<.trr/.cpt/...>]traj.trr输出全精度轨迹: trr cpt trj tng
-x [<.xtc/.tng>]traj_comp.xtc输出, 可选压缩轨迹(tng格式或可移植的xdr格式)
-cpi [<.cpt>]state.cpt输入, 可选检查点文件
-cpo [<.cpt>]state.cpt输出, 可选检查点文件
-c [<.gro/.g96/...>]confout.gro输出结构文件: gro g96 pdb brk ent esp
-e [<.edr>]ener.edr输出能量文件
-g [<.log>]md.log输出日志文件
-dhdl [<.xvg>]dhdl.xvg输出, 可选xvgr/xmgr文件
-field [<.xvg>]field.xvg输出, 可选xvgr/xmgr文件
-table [<.xvg>]table.xvg输入, 可选xvgr/xmgr文件
-tabletf [<.xvg>]tabletf.xvg输入, 可选xvgr/xmgr文件
-tablep [<.xvg>]tablep.xvg输入, 可选xvgr/xmgr文件
-tableb [<.xvg>]table.xvg输入, 可选xvgr/xmgr文件
-rerun [<.xtc/.trr/...>]rerun.xtc输入, 可选轨迹: xtc trr cpt trj gro g96 pdb tng
-tpi [<.xvg>]tpi.xvg输出, 可选xvgr/xmgr文件
-tpid [<.xvg>]tpidist.xvg输出, 可选xvgr/xmgr文件
-ei [<.edi>]sam.edi输入, 可选ED采样输入
-eo [<.xvg>]edsam.xvg输出, 可选xvgr/xmgr文件
-devout [<.xvg>]deviatie.xvg输出, 可选xvgr/xmgr文件
-runav [<.xvg>]runaver.xvg输出, 可选xvgr/xmgr文件
-px [<.xvg>]pullx.xvg输出, 可选xvgr/xmgr文件
-pf [<.xvg>]pullf.xvg输出, 可选xvgr/xmgr文件
-ro [<.xvg>]rotation.xvg输出, 可选xvgr/xmgr文件
-ra [<.log>]rotangles.log输出, 可选日志文件
-rs [<.log>]rotslabs.log输出, 可选日志文件
-rt [<.log>]rottorque.log输出, 可选日志文件
-mtx [<.mtx>]nm.mtx输出, 可选Hessian矩阵
-dn [<.ndx>]dipole.ndx输出, 可选索引文件
-swap [<.xvg>]swapions.xvg输出, 可选xvgr/xmgr文件
-bo [<.trr/.cpt/...>]bench.trr输出全精度轨迹: trr cpt trj tng
-bx [<.xtc>]bench.xtc输出压缩轨迹(可移植xdr格式): xtc
-bcpo [<.cpt>]bench.cpt输出检查点文件
-bc [<.gro/.g96/...>]bench.gro输出结构文件: gro g96 pdb brk ent esp
-be [<.edr>]bench.edr输出能量文件
-bg [<.log>]bench.log输出日志文件
-beo [<.xvg>]benchedo.xvg输出, 可选xvgr/xmgr文件
-bdhdl [<.xvg>]benchdhdl.xvg输出, 可选xvgr/xmgr文件
-bfield [<.xvg>]benchfld.xvg输出, 可选xvgr/xmgr文件
-btpi [<.xvg>]benchtpi.xvg输出, 可选xvgr/xmgr文件
-btpid [<.xvg>]benchtpid.xvg输出, 可选xvgr/xmgr文件
-bdevout [<.xvg>]benchdev.xvg输出, 可选xvgr/xmgr文件
-brunav [<.xvg>]benchrnav.xvg输出, 可选xvgr/xmgr文件
-bpx [<.xvg>]benchpx.xvg输出, 可选xvgr/xmgr文件
-bpf [<.xvg>]benchpf.xvg输出, 可选xvgr/xmgr文件
-bro [<.xvg>]benchrot.xvg输出, 可选xvgr/xmgr文件
-bra [<.log>]benchrota.log输出, 可选日志文件
-brs [<.log>]benchrots.log输出, 可选日志文件
-brt [<.log>]benchrott.log输出, 可选日志文件
-bmtx [<.mtx>]benchn.mtx输出, 可选Hessian矩阵
-bdn [<.ndx>]bench.ndx输出, 可选索引文件
-bswap [<.xvg>]benchswp.xvg输出, 可选xvgr/xmgr文件
控制选项
选项默认值说明
-nice <int>0设置优先级
-xvg <enum>xmgracexvg绘图格式: xmgrace, xmgr, none
-np <int>1运行测试的进程数(对单独的PME进行, 必须大于2)
-npstring <enum>-np使用此字符串指定$MPIRUN的进程数: -np, -n, none
-ntmpi <int>1运行测试的MPI线程数(关闭MPI和mpirun)
-r <int>2每次测试的重复次数
-max <real>0.5要测试的PME进程数的最大比例
-min <real>0.25要测试的PME进程数的最小比例
-npme <enum>auto-min-max之间, 对-npme的所有可能值或其合理子集执行基准测试.
auto会忽略-min-max, 根据.tpr文件中npme推测一个值, 并由此选择一个合理的值. 可用选项: auto, all, subset
-fix <int>-2若此参数的值大于等于-1, 不改变PME进程的数目, 而是使用此固定值, 并只改变rcoulomb和PME格点间距.
-rmax <real>0若此参数的值大于0, 对-ntpr>1使用的最大rcoulomb(增大rcoulomb会导致傅立叶格点减小)
-rmin <real>0若此参数的值大于0, 对-ntpr>1使用的最小rcoulomb
-[no]scalevdwyesrcoulomb一起, 缩放rvdw
-ntpr <int>0基准测试的.tpr文件的数目. 创建这么多文件, 每个文件使用的库仑缩放因子不同, 并取决于-rmin-rmax参数.
若此值<1, 会自动选择.tpr文件的数目进行测试.
-steps <int>1000在基准测试运行中, 对这么多步进行计时.
-resetstep <int>100开始计时前, 让dlb平衡这么多步(在这么多步之后重置循环计数器)
-nsteps <int>-1如果该参数值非负, 在实际模拟中执行这么多步(覆盖.tpr文件中的nsteps, 添加.cpt中的步数)
-[no]launchno优化后启动实际模拟
-[no]benchyes运行基准测试还是仅仅创建输入的.tpr文件
-[no]checkyes基准测试运行前, 检查mdrun是否可以并行
-[no]appendyes当从检查点继续运行时, 输出将追加到之前的输出文件中, 而不是将模拟的部分编号添加到所有文件名称中(仅与-launch同用)
-[no]cpnumno保留检查点文件并对其进行编号(仅与-launch同用)

补充说明(吕康杰)

这个命令使用时实际有两个分支, 按进程运行, 按线程运行:

-np 8 实际会变成 mpirun -np 8 放到最前面, -nmpi 8 直接就是 -nmpi 8, 然后才调节npme的数目变化.

虽然原理上明白了, 但我尝试了依然只有gmx 2016的nmpi运行成功, np的任务, 单独用mpirun都可以运行,tune_pme里面还是用不了.


文章链接:GROMACS各类程序(名称排序)|Jerkwin

如有侵权联系我,我将删除

本文目的只为宣传使用


最新评论
请先登录才能进行回复登录
技术支持: CLOUD | 管理登录
seo seo