116 lines
4.3 KiB
Plaintext
116 lines
4.3 KiB
Plaintext
.. index:: timer
|
|
|
|
timer command
|
|
=============
|
|
|
|
Syntax
|
|
""""""
|
|
|
|
.. parsed-literal::
|
|
|
|
timer args
|
|
|
|
* *args* = one or more of *off* or *loop* or *normal* or *full* or *sync* or *nosync* or *timeout* or *every*
|
|
.. parsed-literal::
|
|
|
|
*off* = do not collect or print any timing information
|
|
*loop* = collect only the total time for the simulation loop
|
|
*normal* = collect timer information broken down by sections (default)
|
|
*full* = like *normal* but also include CPU and thread utilzation
|
|
*sync* = explicitly synchronize MPI tasks between sections
|
|
*nosync* = do not synchronize MPI tasks between sections (default)
|
|
*timeout* elapse = set walltime limit to *elapse*
|
|
*every* Ncheck = perform timeout check every *Ncheck* steps
|
|
|
|
Examples
|
|
""""""""
|
|
|
|
.. parsed-literal::
|
|
|
|
timer full sync
|
|
timer timeout 2:00:00 every 100
|
|
timer loop
|
|
|
|
Description
|
|
"""""""""""
|
|
|
|
Select the level of detail at which LAMMPS performs its CPU timings.
|
|
|
|
During a simulation run LAMMPS collects information about how much
|
|
time is spent in different sections of the code and thus can provide
|
|
information for determining performance and load imbalance problems.
|
|
This can be done at different levels of detail and accuracy. For more
|
|
information about the timing output, see this :ref:`discussion of screen output <start_8>`.
|
|
|
|
The *off* setting will turn all time measurements off. The *loop*
|
|
setting will only measure the total time for a run and not collect any
|
|
detailed per section information. With the *normal* setting, timing
|
|
information for portions of the timestep (pairwise calculations,
|
|
neighbor list construction, output, etc) are collected as well as
|
|
information about load imbalances for those sections across
|
|
procsessors. The *full* setting adds information about CPU
|
|
utilization and thread utilization, when multi-threading is enabled.
|
|
|
|
With the *sync* setting, all MPI tasks are synchronized at each timer
|
|
call which meaures load imbalance more accuractly, though it can also
|
|
slow down the simulation. Using the *nosync* setting (which is the
|
|
default) turns off this synchronization.
|
|
|
|
With the *timeout* keyword a walltime limit can be imposed that
|
|
affects the :doc:`run <run>` and :doc:`minimize <minimize>` commands. If
|
|
the time limit is reached, the run or energy minimization will exit on
|
|
the next step or iteration that is a multiple of the *Ncheck* value
|
|
specified with the *every* keyword. All subsequent run or minimize
|
|
commands in the input script will be skipped until the timeout is
|
|
reset or turned off by a new *timer* command. The timeout *elapse*
|
|
value can be specified as *off* or *unlimited* to impose no timeout
|
|
condition (which is the default). The *elapse* setting can be
|
|
specified as a single number for seconds, two numbers separated by a
|
|
colon (MM:SS) for minutes and seconds, or as three numbers separated
|
|
by colons for hours, minutes, and seconds.
|
|
|
|
The *every* keyword sets how frequently during a run or energy
|
|
minimization the wall clock will be checked. This check count applies
|
|
to the outer iterations or time steps during minimizations or :doc:`r-RESPA runs <run_style>`, respectively. Checking for timeout too often,
|
|
can slow a calculation down. Checking too infrequently can make the
|
|
timeout measurement less accurate, with the run being stopped later
|
|
than desired.
|
|
|
|
Multiple keywords can be specified with the *timer* command. For
|
|
keywords that are mutually exclusive, the last one specified takes
|
|
effect.
|
|
|
|
.. note::
|
|
|
|
Using the *full* and *sync* options provides the most detailed
|
|
and accurate timing information, but can also have a negative
|
|
performance impact due to the overhead of the many required system
|
|
calls. It is thus recommended to use these settings only when testing
|
|
tests to identify performance bottlenecks. For calculations with few
|
|
atoms or a very large number of processors, even the *normal* setting
|
|
can have a measurable negative performance impact. In those cases you
|
|
can just use the *loop* or *off* setting.
|
|
|
|
Restrictions
|
|
""""""""""""
|
|
none
|
|
|
|
Related commands
|
|
""""""""""""""""
|
|
|
|
:doc:`run post no <run>`, :doc:`kspace_modify fftbench <kspace_modify>`
|
|
|
|
Default
|
|
"""""""
|
|
|
|
.. parsed-literal::
|
|
|
|
timer normal nosync
|
|
timer timeout off
|
|
timer every 10
|
|
|
|
|
|
.. _lws: http://lammps.sandia.gov
|
|
.. _ld: Manual.html
|
|
.. _lc: Section_commands.html#comm
|