Hipace
HipaceProfilerWrapper.H
Go to the documentation of this file.
1 /* Copyright 2020-2021
2  *
3  * This file is part of HiPACE++.
4  *
5  * Authors: AlexanderSinn, MaxThevenet
6  * License: BSD-3-Clause-LBNL
7  */
8 /* Copyright 2020 Axel Huebl, Maxence Thevenet
9  *
10  * This file is part of WarpX.
11  *
12  * License: BSD-3-Clause-LBNL
13  */
14 
15 #ifndef HIPACE_PROFILERWRAPPER_H_
16 #define HIPACE_PROFILERWRAPPER_H_
17 
18 #include <AMReX_BLProfiler.H>
19 #include <AMReX_GpuDevice.H>
20 
22 inline int DO_DEVICE_SYNCHRONIZE = 0;
23 
24 template<int detail_level>
27 {
28  if ( DO_DEVICE_SYNCHRONIZE >= detail_level )
30 }
31 
32 // Note that objects are destructed in the reverse order of declaration
33 template<int detail_level>
37  doStreamSynchronize<detail_level>();
38  }
39 };
40 
41 #define HIPACE_PROFILE(fname) doStreamSynchronize<1>(); BL_PROFILE(fname); synchronizeOnDestruct<1> BL_PROFILE_PASTE(SYNC_SCOPE_, __COUNTER__){}
42 #define HIPACE_PROFILE_VAR(fname, vname) doStreamSynchronize<1>(); BL_PROFILE_VAR(fname, vname); synchronizeOnDestruct<1> SYNC_V_##vname{}
43 #define HIPACE_PROFILE_VAR_NS(fname, vname) BL_PROFILE_VAR_NS(fname, vname); synchronizeOnDestruct<1> SYNC_V_##vname{}
44 #define HIPACE_PROFILE_VAR_START(vname) doStreamSynchronize<1>(); BL_PROFILE_VAR_START(vname)
45 #define HIPACE_PROFILE_VAR_STOP(vname) doStreamSynchronize<1>(); BL_PROFILE_VAR_STOP(vname)
46 #define HIPACE_PROFILE_REGION(rname) doStreamSynchronize<1>(); BL_PROFILE_REGION(rname); synchronizeOnDestruct<1> BL_PROFILE_PASTE(SYNC_R_, __COUNTER__){}
47 
48 #define HIPACE_DETAIL_PROFILE(fname) doStreamSynchronize<2>(); BL_PROFILE(fname); synchronizeOnDestruct<2> BL_PROFILE_PASTE(SYNC_SCOPE_, __COUNTER__){}
49 #define HIPACE_DETAIL_PROFILE_VAR(fname, vname) doStreamSynchronize<2>(); BL_PROFILE_VAR(fname, vname); synchronizeOnDestruct<2> SYNC_V_##vname{}
50 #define HIPACE_DETAIL_PROFILE_VAR_NS(fname, vname) BL_PROFILE_VAR_NS(fname, vname); synchronizeOnDestruct<2> SYNC_V_##vname{}
51 #define HIPACE_DETAIL_PROFILE_VAR_START(vname) doStreamSynchronize<2>(); BL_PROFILE_VAR_START(vname)
52 #define HIPACE_DETAIL_PROFILE_VAR_STOP(vname) doStreamSynchronize<2>(); BL_PROFILE_VAR_STOP(vname)
53 #define HIPACE_DETAIL_PROFILE_REGION(rname) doStreamSynchronize<2>(); BL_PROFILE_REGION(rname); synchronizeOnDestruct<2> BL_PROFILE_PASTE(SYNC_R_, __COUNTER__){}
54 
55 #endif // HIPACE_PROFILERWRAPPER_H_
#define AMREX_FORCE_INLINE
AMREX_FORCE_INLINE void doStreamSynchronize()
Definition: HipaceProfilerWrapper.H:26
int DO_DEVICE_SYNCHRONIZE
Definition: HipaceProfilerWrapper.H:22
void streamSynchronize() noexcept
Definition: HipaceProfilerWrapper.H:34
AMREX_FORCE_INLINE ~synchronizeOnDestruct()
Definition: HipaceProfilerWrapper.H:36