Provided by: gromacs-data_4.6.5-1build1_all 

NAME
mdrun - performs a simulation, do a normal mode analysis or an energy minimization
VERSION 4.6.5
SYNOPSIS
mdrun -s topol.tpr -o traj.trr -x traj.xtc -cpi state.cpt -cpo state.cpt -c confout.gro -e ener.edr -g
md.log -dhdl dhdl.xvg -field field.xvg -table table.xvg -tabletf tabletf.xvg -tablep tablep.xvg -tableb
table.xvg -rerun rerun.xtc -tpi tpi.xvg -tpid tpidist.xvg -ei sam.edi -eo edsam.xvg -j wham.gct -jo
bam.gct -ffout gct.xvg -devout deviatie.xvg -runav runaver.xvg -px pullx.xvg -pf pullf.xvg -ro
rotation.xvg -ra rotangles.log -rs rotslabs.log -rt rottorque.log -mtx nm.mtx -dn dipole.ndx -multidir
rundir -membed membed.dat -mp membed.top -mn membed.ndx -[no]h -[no]version -nice int -deffnm string -xvg
enum -[no]pd -dd vector -ddorder enum -npme int -nt int -ntmpi int -ntomp int -ntomp_pme int -pin enum
-pinoffset int -pinstride int -gpu_id string -[no]ddcheck -rdd real -rcon real -dlb enum -dds real -gcom
int -nb enum -[no]tunepme -[no]testverlet -[no]v -[no]compact -[no]seppot -pforce real -[no]reprod -cpt
real -[no]cpnum -[no]append -nsteps step -maxh real -multi int -replex int -nex int -reseed int
-[no]ionize
DESCRIPTION
The mdrun program is the main computational chemistry engine within GROMACS. Obviously, it performs
Molecular Dynamics simulations, but it can also perform Stochastic Dynamics, Energy Minimization, test
particle insertion or (re)calculation of energies. Normal mode analysis is another option. In this case
mdrun builds a Hessian matrix from single conformation. For usual Normal Modes-like calculations, make
sure that the structure provided is properly energy-minimized. The generated matrix can be diagonalized
by g_nmeig.
The mdrun program reads the run input file ( -s) and distributes the topology over nodes if needed.
mdrun produces at least four output files. A single log file ( -g) is written, unless the option
-seppot is used, in which case each node writes a log file. The trajectory file ( -o), contains
coordinates, velocities and optionally forces. The structure file ( -c) contains the coordinates and
velocities of the last step. The energy file ( -e) contains energies, the temperature, pressure, etc, a
lot of these things are also printed in the log file. Optionally coordinates can be written to a
compressed trajectory file ( -x).
The option -dhdl is only used when free energy calculation is turned on.
A simulation can be run in parallel using two different parallelization schemes: MPI parallelization
and/or OpenMP thread parallelization. The MPI parallelization uses multiple processes when mdrun is
compiled with a normal MPI library or threads when mdrun is compiled with the GROMACS built-in
thread-MPI library. OpenMP threads are supported when mdrun is compiled with OpenMP. Full OpenMP support
is only available with the Verlet cut-off scheme, with the (older) group scheme only PME-only processes
can use OpenMP parallelization. In all cases mdrun will by default try to use all the available
hardware resources. With a normal MPI library only the options -ntomp (with the Verlet cut-off scheme)
and -ntomp_pme, for PME-only processes, can be used to control the number of threads. With thread-MPI
there are additional options -nt, which sets the total number of threads, and -ntmpi, which sets the
number of thread-MPI threads. Note that using combined MPI+OpenMP parallelization is almost always
slower than single parallelization, except at the scaling limit, where especially OpenMP parallelization
of PME reduces the communication cost. OpenMP-only parallelization is much faster than MPI-only
parallelization on a single CPU(-die). Since we currently don't have proper hardware topology detection,
mdrun compiled with thread-MPI will only automatically use OpenMP-only parallelization when you use up to
4 threads, up to 12 threads with Intel Nehalem/Westmere, or up to 16 threads with Intel Sandy Bridge or
newer CPUs. Otherwise MPI-only parallelization is used (except with GPUs, see below).
To quickly test the performance of the new Verlet cut-off scheme with old .tpr files, either on CPUs or
CPUs+GPUs, you can use the -testverlet option. This should not be used for production, since it can
slightly modify potentials and it will remove charge groups making analysis difficult, as the .tpr file
will still contain charge groups. For production simulations it is highly recommended to specify
cutoff-scheme = Verlet in the .mdp file.
With GPUs (only supported with the Verlet cut-off scheme), the number of GPUs should match the number of
MPI processes or MPI threads, excluding PME-only processes/threads. With thread-MPI, unless set on the
command line, the number of MPI threads will automatically be set to the number of GPUs detected. To use
a subset of the available GPUs, or to manually provide a mapping of GPUs to PP ranks, you can use the
-gpu_id option. The argument of -gpu_id is a string of digits (without delimiter) representing device
id-s of the GPUs to be used. For example, " 02" specifies using GPUs 0 and 2 in the first and second PP
ranks per compute node respectively. To select different sets of GPU-s on different nodes of a compute
cluster, use the GMX_GPU_ID environment variable instead. The format for GMX_GPU_ID is identical to
-gpu_id, with the difference that an environment variable can have different values on different compute
nodes. Multiple MPI ranks on each node can share GPUs. This is accomplished by specifying the id(s) of
the GPU(s) multiple times, e.g. " 0011" for four ranks sharing two GPUs in this node. This works within
a single simulation, or a multi-simulation, with any form of MPI.
When using PME with separate PME nodes or with a GPU, the two major compute tasks, the non-bonded force
calculation and the PME calculation run on different compute resources. If this load is not balanced,
some of the resources will be idle part of time. With the Verlet cut-off scheme this load is
automatically balanced when the PME load is too high (but not when it is too low). This is done by
scaling the Coulomb cut-off and PME grid spacing by the same amount. In the first few hundred steps
different settings are tried and the fastest is chosen for the rest of the simulation. This does not
affect the accuracy of the results, but it does affect the decomposition of the Coulomb energy into
particle and mesh contributions. The auto-tuning can be turned off with the option -notunepme.
mdrun pins (sets affinity of) threads to specific cores, when all (logical) cores on a compute node are
used by mdrun, even when no multi-threading is used, as this usually results in significantly better
performance. If the queuing systems or the OpenMP library pinned threads, we honor this and don't pin
again, even though the layout may be sub-optimal. If you want to have mdrun override an already set
thread affinity or pin threads when using less cores, use -pin on. With SMT (simultaneous
multithreading), e.g. Intel Hyper-Threading, there are multiple logical cores per physical core. The
option -pinstride sets the stride in logical cores for pinning consecutive threads. Without SMT, 1 is
usually the best choice. With Intel Hyper-Threading 2 is best when using half or less of the logical
cores, 1 otherwise. The default value of 0 do exactly that: it minimizes the threads per logical core, to
optimize performance. If you want to run multiple mdrun jobs on the same physical node,you should set
-pinstride to 1 when using all logical cores. When running multiple mdrun (or other) simulations on the
same physical node, some simulations need to start pinning from a non-zero core to avoid overloading
cores; with -pinoffset you can specify the offset in logical cores for pinning.
When mdrun is started using MPI with more than 1 process or with thread-MPI with more than 1 thread, MPI
parallelization is used. By default domain decomposition is used, unless the -pd option is set, which
selects particle decomposition.
With domain decomposition, the spatial decomposition can be set with option -dd. By default mdrun
selects a good decomposition. The user only needs to change this when the system is very inhomogeneous.
Dynamic load balancing is set with the option -dlb, which can give a significant performance
improvement, especially for inhomogeneous systems. The only disadvantage of dynamic load balancing is
that runs are no longer binary reproducible, but in most cases this is not important. By default the
dynamic load balancing is automatically turned on when the measured performance loss due to load
imbalance is 5% or more. At low parallelization these are the only important options for domain
decomposition. At high parallelization the options in the next two sections could be important for
increasing the performace.
When PME is used with domain decomposition, separate nodes can be assigned to do only the PME mesh
calculation; this is computationally more efficient starting at about 12 nodes. The number of PME nodes
is set with option -npme, this can not be more than half of the nodes. By default mdrun makes a guess
for the number of PME nodes when the number of nodes is larger than 11 or performance wise not compatible
with the PME grid x dimension. But the user should optimize npme. Performance statistics on this issue
are written at the end of the log file. For good load balancing at high parallelization, the PME grid x
and y dimensions should be divisible by the number of PME nodes (the simulation will run correctly also
when this is not the case).
This section lists all options that affect the domain decomposition.
Option -rdd can be used to set the required maximum distance for inter charge-group bonded interactions.
Communication for two-body bonded interactions below the non-bonded cut-off distance always comes for
free with the non-bonded communication. Atoms beyond the non-bonded cut-off are only communicated when
they have missing bonded interactions; this means that the extra cost is minor and nearly indepedent of
the value of -rdd. With dynamic load balancing option -rdd also sets the lower limit for the domain
decomposition cell sizes. By default -rdd is determined by mdrun based on the initial coordinates. The
chosen value will be a balance between interaction range and communication cost.
When inter charge-group bonded interactions are beyond the bonded cut-off distance, mdrun terminates
with an error message. For pair interactions and tabulated bonds that do not generate exclusions, this
check can be turned off with the option -noddcheck.
When constraints are present, option -rcon influences the cell size limit as well. Atoms connected by
NC constraints, where NC is the LINCS order plus 1, should not be beyond the smallest cell size. A error
message is generated when this happens and the user should change the decomposition or decrease the LINCS
order and increase the number of LINCS iterations. By default mdrun estimates the minimum cell size
required for P-LINCS in a conservative fashion. For high parallelization it can be useful to set the
distance required for P-LINCS with the option -rcon.
The -dds option sets the minimum allowed x, y and/or z scaling of the cells with dynamic load balancing.
mdrun will ensure that the cells can scale down by at least this factor. This option is used for the
automated spatial decomposition (when not using -dd) as well as for determining the number of grid
pulses, which in turn sets the minimum allowed cell size. Under certain circumstances the value of -dds
might need to be adjusted to account for high or low spatial inhomogeneity of the system.
The option -gcom can be used to only do global communication every n steps. This can improve
performance for highly parallel simulations where this global communication step becomes the bottleneck.
For a global thermostat and/or barostat the temperature and/or pressure will also only be updated every
-gcom steps. By default it is set to the minimum of nstcalcenergy and nstlist.
With -rerun an input trajectory can be given for which forces and energies will be (re)calculated.
Neighbor searching will be performed for every frame, unless nstlist is zero (see the .mdp file).
ED (essential dynamics) sampling and/or additional flooding potentials are switched on by using the -ei
flag followed by an .edi file. The .edi file can be produced with the make_edi tool or by using
options in the essdyn menu of the WHAT IF program. mdrun produces a .xvg output file that contains
projections of positions, velocities and forces onto selected eigenvectors.
When user-defined potential functions have been selected in the .mdp file the -table option is used to
pass mdrun a formatted table with potential functions. The file is read from either the current
directory or from the GMXLIB directory. A number of pre-formatted tables are presented in the GMXLIB
dir, for 6-8, 6-9, 6-10, 6-11, 6-12 Lennard-Jones potentials with normal Coulomb. When pair interactions
are present, a separate table for pair interaction functions is read using the -tablep option.
When tabulated bonded functions are present in the topology, interaction functions are read using the
-tableb option. For each different tabulated interaction type the table file name is modified in a
different way: before the file extension an underscore is appended, then a 'b' for bonds, an 'a' for
angles or a 'd' for dihedrals and finally the table number of the interaction type.
The options -px and -pf are used for writing pull COM coordinates and forces when pulling is selected
in the .mdp file.
With -multi or -multidir, multiple systems can be simulated in parallel. As many input
files/directories are required as the number of systems. The -multidir option takes a list of
directories (one for each system) and runs in each of them, using the input/output file names, such as
specified by e.g. the -s option, relative to these directories. With -multi, the system number is
appended to the run input and each output filename, for instance topol.tpr becomes topol0.tpr,
topol1.tpr etc. The number of nodes per system is the total number of nodes divided by the number of
systems. One use of this option is for NMR refinement: when distance or orientation restraints are
present these can be ensemble averaged over all the systems.
With -replex replica exchange is attempted every given number of steps. The number of replicas is set
with the -multi or -multidir option, described above. All run input files should use a different
coupling temperature, the order of the files is not important. The random seed is set with -reseed. The
velocities are scaled and neighbor searching is performed after every exchange.
Finally some experimental algorithms can be tested when the appropriate options have been given.
Currently under investigation are: polarizability and X-ray bombardments.
The option -membed does what used to be g_membed, i.e. embed a protein into a membrane. The data file
should contain the options that where passed to g_membed before. The -mn and -mp both apply to this as
well.
The option -pforce is useful when you suspect a simulation crashes due to too large forces. With this
option coordinates and forces of atoms with a force larger than a certain value will be printed to
stderr.
Checkpoints containing the complete state of the system are written at regular intervals (option -cpt)
to the file -cpo, unless option -cpt is set to -1. The previous checkpoint is backed up to
state_prev.cpt to make sure that a recent state of the system is always available, even when the
simulation is terminated while writing a checkpoint. With -cpnum all checkpoint files are kept and
appended with the step number. A simulation can be continued by reading the full state from file with
option -cpi. This option is intelligent in the way that if no checkpoint file is found, Gromacs just
assumes a normal run and starts from the first step of the .tpr file. By default the output will be
appending to the existing output files. The checkpoint file contains checksums of all output files, such
that you will never loose data when some output files are modified, corrupt or removed. There are three
scenarios with -cpi:
* no files with matching names are present: new output files are written
* all files are present with names and checksums matching those stored in the checkpoint file: files are
appended
* otherwise no files are modified and a fatal error is generated
With -noappend new output files are opened and the simulation part number is added to all output file
names. Note that in all cases the checkpoint file itself is not renamed and will be overwritten, unless
its name does not match the -cpo option.
With checkpointing the output is appended to previously written output files, unless -noappend is used
or none of the previous output files are present (except for the checkpoint file). The integrity of the
files to be appended is verified using checksums which are stored in the checkpoint file. This ensures
that output can not be mixed up or corrupted due to file appending. When only some of the previous output
files are present, a fatal error is generated and no old output files are modified and no new output
files are opened. The result with appending will be the same as from a single run. The contents will be
binary identical, unless you use a different number of nodes or dynamic load balancing or the FFT library
uses optimizations through timing.
With option -maxh a simulation is terminated and a checkpoint file is written at the first neighbor
search step where the run time exceeds -maxh*0.99 hours.
When mdrun receives a TERM signal, it will set nsteps to the current step plus one. When mdrun receives
an INT signal (e.g. when ctrl+C is pressed), it will stop after the next neighbor search step (with
nstlist=0 at the next step). In both cases all the usual output will be written to file. When running
with MPI, a signal to one of the mdrun processes is sufficient, this signal should not be sent to mpirun
or the mdrun process that is the parent of the others.
When mdrun is started with MPI, it does not run niced by default.
FILES
-s topol.tpr Input
Run input file: tpr tpb tpa
-o traj.trr Output
Full precision trajectory: trr trj cpt
-x traj.xtc Output, Opt.
Compressed trajectory (portable xdr format)
-cpi state.cpt Input, Opt.
Checkpoint file
-cpo state.cpt Output, Opt.
Checkpoint file
-c confout.gro Output
Structure file: gro g96 pdb etc.
-e ener.edr Output
Energy file
-g md.log Output
Log file
-dhdl dhdl.xvg Output, Opt.
xvgr/xmgr file
-field field.xvg Output, Opt.
xvgr/xmgr file
-table table.xvg Input, Opt.
xvgr/xmgr file
-tabletf tabletf.xvg Input, Opt.
xvgr/xmgr file
-tablep tablep.xvg Input, Opt.
xvgr/xmgr file
-tableb table.xvg Input, Opt.
xvgr/xmgr file
-rerun rerun.xtc Input, Opt.
Trajectory: xtc trr trj gro g96 pdb cpt
-tpi tpi.xvg Output, Opt.
xvgr/xmgr file
-tpid tpidist.xvg Output, Opt.
xvgr/xmgr file
-ei sam.edi Input, Opt.
ED sampling input
-eo edsam.xvg Output, Opt.
xvgr/xmgr file
-j wham.gct Input, Opt.
General coupling stuff
-jo bam.gct Output, Opt.
General coupling stuff
-ffout gct.xvg Output, Opt.
xvgr/xmgr file
-devout deviatie.xvg Output, Opt.
xvgr/xmgr file
-runav runaver.xvg Output, Opt.
xvgr/xmgr file
-px pullx.xvg Output, Opt.
xvgr/xmgr file
-pf pullf.xvg Output, Opt.
xvgr/xmgr file
-ro rotation.xvg Output, Opt.
xvgr/xmgr file
-ra rotangles.log Output, Opt.
Log file
-rs rotslabs.log Output, Opt.
Log file
-rt rottorque.log Output, Opt.
Log file
-mtx nm.mtx Output, Opt.
Hessian matrix
-dn dipole.ndx Output, Opt.
Index file
-multidir rundir Input, Opt., Mult.
Run directory
-membed membed.dat Input, Opt.
Generic data file
-mp membed.top Input, Opt.
Topology file
-mn membed.ndx Input, Opt.
Index file
OTHER OPTIONS
-[no]hno
Print help info and quit
-[no]versionno
Print version info and quit
-nice int 0
Set the nicelevel
-deffnm string
Set the default filename for all file options
-xvg enum xmgrace
xvg plot formatting: xmgrace, xmgr or none
-[no]pdno
Use particle decompostion
-dd vector 0 0 0
Domain decomposition grid, 0 is optimize
-ddorder enum interleave
DD node order: interleave, pp_pme or cartesian
-npme int -1
Number of separate nodes to be used for PME, -1 is guess
-nt int 0
Total number of threads to start (0 is guess)
-ntmpi int 0
Number of thread-MPI threads to start (0 is guess)
-ntomp int 0
Number of OpenMP threads per MPI process/thread to start (0 is guess)
-ntomp_pme int 0
Number of OpenMP threads per MPI process/thread to start (0 is -ntomp)
-pin enum auto
Fix threads (or processes) to specific cores: auto, on or off
-pinoffset int 0
The starting logical core number for pinning to cores; used to avoid pinning threads from different
mdrun instances to the same core
-pinstride int 0
Pinning distance in logical cores for threads, use 0 to minimize the number of threads per physical core
-gpu_id string
List of GPU device id-s to use, specifies the per-node PP rank to GPU mapping
-[no]ddcheckyes
Check for all bonded interactions with DD
-rdd real 0
The maximum distance for bonded interactions with DD (nm), 0 is determine from initial coordinates
-rcon real 0
Maximum distance for P-LINCS (nm), 0 is estimate
-dlb enum auto
Dynamic load balancing (with DD): auto, no or yes
-dds real 0.8
Minimum allowed dlb scaling of the DD cell size
-gcom int -1
Global communication frequency
-nb enum auto
Calculate non-bonded interactions on: auto, cpu, gpu or gpu_cpu
-[no]tunepmeyes
Optimize PME load between PP/PME nodes or GPU/CPU
-[no]testverletno
Test the Verlet non-bonded scheme
-[no]vno
Be loud and noisy
-[no]compactyes
Write a compact log file
-[no]seppotno
Write separate V and dVdl terms for each interaction type and node to the log file(s)
-pforce real -1
Print all forces larger than this (kJ/mol nm)
-[no]reprodno
Try to avoid optimizations that affect binary reproducibility
-cpt real 15
Checkpoint interval (minutes)
-[no]cpnumno
Keep and number checkpoint files
-[no]appendyes
Append to previous output files when continuing from checkpoint instead of adding the simulation part
number to all file names
-nsteps step -2
Run this number of steps, overrides .mdp file option
-maxh real -1
Terminate after 0.99 times this time (hours)
-multi int 0
Do multiple simulations in parallel
-replex int 0
Attempt replica exchange periodically with this period (steps)
-nex int 0
Number of random exchanges to carry out each exchange interval (N3 is one suggestion). -nex zero or not
specified gives neighbor replica exchange.
-reseed int -1
Seed for replica exchange, -1 is generate a seed
-[no]ionizeno
Do a simulation including the effect of an X-Ray bombardment on your system
SEE ALSO
gromacs(7)
More information about GROMACS is available at <http://www.gromacs.org/>.
Mon 2 Dec 2013 mdrun(1)