Page Menu
Home
c4science
Search
Configure Global Search
Log In
Files
F90891580
timer.h
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Subscribers
None
File Metadata
Details
File Info
Storage
Attached
Created
Tue, Nov 5, 17:30
Size
3 KB
Mime Type
text/x-c
Expires
Thu, Nov 7, 17:30 (2 d)
Engine
blob
Format
Raw Data
Handle
22153893
Attached To
rLAMMPS lammps
timer.h
View Options
/* -*- c++ -*- ----------------------------------------------------------
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
http://lammps.sandia.gov, Sandia National Laboratories
Steve Plimpton, sjplimp@sandia.gov
Copyright (2003) Sandia Corporation. Under the terms of Contract
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
certain rights in this software. This software is distributed under
the GNU General Public License.
See the README file in the top-level LAMMPS directory.
------------------------------------------------------------------------- */
#ifndef LMP_TIMER_H
#define LMP_TIMER_H
#include "pointers.h"
namespace
LAMMPS_NS
{
class
Timer
:
protected
Pointers
{
public:
enum
ttype
{
RESET
=-
2
,
START
=-
1
,
TOTAL
=
0
,
PAIR
,
BOND
,
KSPACE
,
NEIGH
,
COMM
,
MODIFY
,
OUTPUT
,
SYNC
,
ALL
,
DEPHASE
,
DYNAMICS
,
QUENCH
,
NEB
,
REPCOMM
,
REPOUT
,
NUM_TIMER
};
enum
tlevel
{
OFF
=
0
,
LOOP
,
NORMAL
,
FULL
};
Timer
(
class
LAMMPS
*
);
~
Timer
()
{};
void
init
();
// inline function to reduce overhead if we want no detailed timings
void
stamp
(
enum
ttype
which
=
START
)
{
if
(
_level
>
LOOP
)
_stamp
(
which
);
}
void
barrier_start
();
void
barrier_stop
();
// accessor methods for supported level of detail
bool
has_loop
()
const
{
return
(
_level
>=
LOOP
);
}
bool
has_normal
()
const
{
return
(
_level
>=
NORMAL
);
}
bool
has_full
()
const
{
return
(
_level
>=
FULL
);
}
bool
has_sync
()
const
{
return
(
_sync
!=
OFF
);
}
// flag if wallclock time is expired
bool
is_timeout
()
const
{
return
(
_timeout
==
0.0
);
}
double
elapsed
(
enum
ttype
);
double
cpu
(
enum
ttype
);
double
get_cpu
(
enum
ttype
which
)
const
{
return
cpu_array
[
which
];
};
double
get_wall
(
enum
ttype
which
)
const
{
return
wall_array
[
which
];
};
void
set_wall
(
enum
ttype
,
double
);
// initialize timeout timer
void
init_timeout
();
// trigger enforced timeout
void
force_timeout
()
{
_timeout
=
0.0
;
};
// get remaining time in seconds. 0.0 if inactive, negative if expired
double
get_timeout_remain
();
// print timeout message
void
print_timeout
(
FILE
*
);
// check for timeout. inline wrapper around internal
// function to reduce overhead in case there is no check.
bool
check_timeout
(
int
step
)
{
if
(
_nextcheck
!=
step
)
return
false
;
else
return
_check_timeout
();
}
void
modify_params
(
int
,
char
**
);
private:
double
cpu_array
[
NUM_TIMER
];
double
wall_array
[
NUM_TIMER
];
double
previous_cpu
;
double
previous_wall
;
double
timeout_start
;
int
_level
;
// level of detail: off=0,loop=1,normal=2,full=3
int
_sync
;
// if nonzero, synchronize tasks before setting the timer
int
_timeout
;
// max allowed wall time in seconds. infinity if negative
int
_checkfreq
;
// frequency of timeout checking
int
_nextcheck
;
// timestep number of next timeout check
// update one specific timer array
void
_stamp
(
enum
ttype
);
// check for timeout
bool
_check_timeout
();
};
}
#endif
/* ERROR/WARNING messages:
E: Illegal ... command
Self-explanatory. Check the input script syntax and compare to the
documentation for the command. You can use -echo screen as a
command-line option when running LAMMPS to see the offending line.
*/
Event Timeline
Log In to Comment