|
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 即可. 测试使用的可执行文件可以通过环境变量MPIRUN 和MDRUN 进行设置. 如果这些设置不存在, 默认将使用mpirun 和mdrun . 注意, 对某些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> | xmgrace | xvg绘图格式: 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]scalevdw | yes | 与rcoulomb 一起, 缩放rvdw | -ntpr <int> | 0 | 基准测试的.tpr 文件的数目. 创建这么多文件, 每个文件使用的库仑缩放因子不同, 并取决于-rmin 和-rmax 参数. 若此值<1, 会自动选择.tpr 文件的数目进行测试. | -steps <int> | 1000 | 在基准测试运行中, 对这么多步进行计时. | -resetstep <int> | 100 | 开始计时前, 让dlb平衡这么多步(在这么多步之后重置循环计数器) | -nsteps <int> | -1 | 如果该参数值非负, 在实际模拟中执行这么多步(覆盖.tpr 文件中的nsteps , 添加.cpt 中的步数) | -[no]launch | no | 优化后启动实际模拟 | -[no]bench | yes | 运行基准测试还是仅仅创建输入的.tpr 文件 | -[no]check | yes | 基准测试运行前, 检查mdrun 是否可以并行 | -[no]append | yes | 当从检查点继续运行时, 输出将追加到之前的输出文件中, 而不是将模拟的部分编号添加到所有文件名称中(仅与-launch 同用) | -[no]cpnum | no | 保留检查点文件并对其进行编号(仅与-launch 同用) | 补充说明(吕康杰)这个命令使用时实际有两个分支, 按进程运行, 按线程运行: -np 8 实际会变成 mpirun -np 8 放到最前面, -nmpi 8 直接就是 -nmpi 8 , 然后才调节npme 的数目变化.
虽然原理上明白了, 但我尝试了依然只有gmx 2016的nmpi 运行成功, np 的任务, 单独用mpirun 都可以运行,tune_pme 里面还是用不了.
文章链接:GROMACS各类程序(名称排序)|Jerkwin 如有侵权联系我,我将删除 本文目的只为宣传使用
|
|