WarpX
ProfilerWrapper.H
Go to the documentation of this file.
1 /* Copyright 2020-2021 Axel Huebl, Maxence Thevenet
2  *
3  * This file is part of WarpX.
4  *
5  * License: BSD-3-Clause-LBNL
6  */
7 
8 #ifndef ABLASTR_PROFILERWRAPPER_H_
9 #define ABLASTR_PROFILERWRAPPER_H_
10 
11 #include <AMReX_BLProfiler.H>
12 #include <AMReX_GpuDevice.H>
13 
14 
16 {
22  void
23  device_synchronize(bool const do_device_synchronize = false) {
24  if (do_device_synchronize) {
26  }
27  }
28 
34  SynchronizeOnDestruct(bool const do_device_synchronize = false)
35  : m_do_device_synchronize(do_device_synchronize) {}
36 
40  }
41 
42  // default move and copy operations
47 
49  };
50 
51 } // namespace ablastr::profiler
52 
53 // `BL_PROFILE_PASTE(SYNC_SCOPE_, __COUNTER__)` and `SYNC_V_##vname` used to make unique names for
54 // synchronizeOnDestruct objects, like `SYNC_SCOPE_0` and `SYNC_V_pmain`
55 #define ABLASTR_PROFILE(fname, sync) ablastr::profiler::device_synchronize(sync); BL_PROFILE(fname); const ablastr::profiler::SynchronizeOnDestruct BL_PROFILE_PASTE(SYNC_SCOPE_, __COUNTER__){sync}
56 #define ABLASTR_PROFILE_VAR(fname, vname, sync) ablastr::profiler::device_synchronize(sync); BL_PROFILE_VAR(fname, vname); const ablastr::profiler::SynchronizeOnDestruct SYNC_V_##vname{sync}
57 #define ABLASTR_PROFILE_VAR_NS(fname, vname, sync) BL_PROFILE_VAR_NS(fname, vname); const ablastr::profiler::SynchronizeOnDestruct SYNC_V_##vname{sync}
58 #define ABLASTR_PROFILE_VAR_START(vname, sync) ablastr::profiler::device_synchronize(sync); BL_PROFILE_VAR_START(vname)
59 #define ABLASTR_PROFILE_VAR_STOP(vname, sync) ablastr::profiler::device_synchronize(sync); BL_PROFILE_VAR_STOP(vname)
60 #define ABLASTR_PROFILE_REGION(rname, sync) ablastr::profiler::device_synchronize(sync); BL_PROFILE_REGION(rname); const ablastr::profiler::SynchronizeOnDestruct BL_PROFILE_PASTE(SYNC_R_, __COUNTER__){sync}
61 
62 #endif // ABLASTR_PROFILERWRAPPER_H_
#define AMREX_FORCE_INLINE
Definition: ProfilerWrapper.H:16
AMREX_FORCE_INLINE void device_synchronize(bool const do_device_synchronize=false)
Definition: ProfilerWrapper.H:23
void synchronize() noexcept
Definition: ProfilerWrapper.H:33
SynchronizeOnDestruct & operator=(SynchronizeOnDestruct &&field_data)=default
AMREX_FORCE_INLINE ~SynchronizeOnDestruct()
Definition: ProfilerWrapper.H:38
SynchronizeOnDestruct & operator=(const SynchronizeOnDestruct &)=default
SynchronizeOnDestruct(bool const do_device_synchronize=false)
Definition: ProfilerWrapper.H:34
SynchronizeOnDestruct(SynchronizeOnDestruct &&)=default
SynchronizeOnDestruct(const SynchronizeOnDestruct &)=default
bool m_do_device_synchronize
Definition: ProfilerWrapper.H:48