xref: /petsc/src/sys/perfstubs/timer_f.h (revision e8e8640d1cb9a3a2f50c0c0d7b26e5c4d521e2e4)
1*a0c7f9aaSSamuel Khuvis ! Copyright (c) 2019-2020 University of Oregon
2*a0c7f9aaSSamuel Khuvis ! Distributed under the BSD Software License
3*a0c7f9aaSSamuel Khuvis ! (See accompanying file LICENSE.txt)
4*a0c7f9aaSSamuel Khuvis 
5*a0c7f9aaSSamuel Khuvis #ifdef PERFSTUBS_USE_TIMERS
6*a0c7f9aaSSamuel Khuvis 
7*a0c7f9aaSSamuel Khuvis !
8*a0c7f9aaSSamuel Khuvis !    Macro API for option of entirely disabling at compile time
9*a0c7f9aaSSamuel Khuvis !    To use this API, set the Macro PERFSTUBS_USE_TIMERS on the command
10*a0c7f9aaSSamuel Khuvis !    line or in a config.h file, however your project does it
11*a0c7f9aaSSamuel Khuvis !
12*a0c7f9aaSSamuel Khuvis 
13*a0c7f9aaSSamuel Khuvis #define PERFSTUBS_INITIALIZE() call ps_initialize()
14*a0c7f9aaSSamuel Khuvis #define PERFSTUBS_FINALIZE() call ps_finalize()
15*a0c7f9aaSSamuel Khuvis #define PERFSTUBS_DUMP_DATA() call ps_dump_data()
16*a0c7f9aaSSamuel Khuvis #define PERFSTUBS_REGISTER_THREAD() call ps_register_thread()
17*a0c7f9aaSSamuel Khuvis #define PERFSTUBS_TIMER_CREATE(_timer_object, _timer_name) \
18*a0c7f9aaSSamuel Khuvis     call ps_timer_create_fortran(_timer_object, _timer_name//CHAR(0))
19*a0c7f9aaSSamuel Khuvis #define PERFSTUBS_TIMER_START(_timer_object) \
20*a0c7f9aaSSamuel Khuvis     call ps_timer_start_fortran(_timer_object)
21*a0c7f9aaSSamuel Khuvis #define PERFSTUBS_TIMER_STOP(_timer_object) \
22*a0c7f9aaSSamuel Khuvis     call ps_timer_stop_fortran(_timer_object)
23*a0c7f9aaSSamuel Khuvis #define PERFSTUBS_SET_PARAMETER(_parameter_name, parameter_value) \
24*a0c7f9aaSSamuel Khuvis     call ps_set_parameter(_parameter_name//CHAR(0), parameter_value)
25*a0c7f9aaSSamuel Khuvis #define PERFSTUBS_DYNAMIC_PHASE_START(_phase_prefix, _iteration_index) \
26*a0c7f9aaSSamuel Khuvis     call ps_dynamic_phase_start(_phase_prefix//CHAR(0), _iteration_index)
27*a0c7f9aaSSamuel Khuvis #define PERFSTUBS_DYNAMIC_PHASE_STOP(_phase_prefix, _iteration_index) \
28*a0c7f9aaSSamuel Khuvis     call ps_dynamic_phase_stop(_phase_prefix//CHAR(0), _iteration_index)
29*a0c7f9aaSSamuel Khuvis #define PERFSTUBS_CREATE_COUNTER(_counter_object, _name) \
30*a0c7f9aaSSamuel Khuvis     call ps_create_counter_fortran(_counter_object, _name//CHAR(0))
31*a0c7f9aaSSamuel Khuvis #define PERFSTUBS_SAMPLE_COUNTER(_counter_object, _value) \
32*a0c7f9aaSSamuel Khuvis     call ps_sample_counter_fortran(_counter_object, _value)
33*a0c7f9aaSSamuel Khuvis #define PERFSTUBS_METADATA(_name, _value) \
34*a0c7f9aaSSamuel Khuvis     call ps_set_metadata(_name//CHAR(0), _value//CHAR(0))
35*a0c7f9aaSSamuel Khuvis 
36*a0c7f9aaSSamuel Khuvis ! // defined(PERFSTUBS_USE_TIMERS)
37*a0c7f9aaSSamuel Khuvis #else
38*a0c7f9aaSSamuel Khuvis 
39*a0c7f9aaSSamuel Khuvis #define PERFSTUBS_INIT()
40*a0c7f9aaSSamuel Khuvis #define PERFSTUBS_DUMP_DATA()
41*a0c7f9aaSSamuel Khuvis #define PERFSTUBS_REGISTER_THREAD()
42*a0c7f9aaSSamuel Khuvis #define PERFSTUBS_TIMER_CREATE(_timer_object, _timer_name)
43*a0c7f9aaSSamuel Khuvis #define PERFSTUBS_TIMER_START(_timer_object)
44*a0c7f9aaSSamuel Khuvis #define PERFSTUBS_TIMER_STOP(_timer_object)
45*a0c7f9aaSSamuel Khuvis #define PERFSTUBS_SET_PARAMETER(_parameter_name, _parameter_value)
46*a0c7f9aaSSamuel Khuvis #define PERFSTUBS_DYNAMIC_PHASE_START(_phase_prefix, _iteration_index)
47*a0c7f9aaSSamuel Khuvis #define PERFSTUBS_DYNAMIC_PHASE_STOP(_phase_prefix, _iteration_index)
48*a0c7f9aaSSamuel Khuvis #define PERFSTUBS_TIMER_START_FUNC()
49*a0c7f9aaSSamuel Khuvis #define PERFSTUBS_TIMER_STOP_FUNC()
50*a0c7f9aaSSamuel Khuvis #define PERFSTUBS_CREATE_COUNTER(_counter_object, _name)
51*a0c7f9aaSSamuel Khuvis #define PERFSTUBS_SAMPLE_COUNTER(_counter_object, _value)
52*a0c7f9aaSSamuel Khuvis #define PERFSTUBS_METADATA(_name, _value)
53*a0c7f9aaSSamuel Khuvis 
54*a0c7f9aaSSamuel Khuvis ! // defined(PERFSTUBS_USE_TIMERS)
55*a0c7f9aaSSamuel Khuvis #endif
56