首页 >> 仿真软件说明 >>gromacs >>使用命令说明 >> gmx tune_pme计算mdrun的运行时间与PME进程数的关系以优化设置
详细内容

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里面还是用不了.


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