1#ifndef AMREX_TINY_PROFILER_H_
2#define AMREX_TINY_PROFILER_H_
3#include <AMReX_Config.H>
34 TinyProfiler (std::string funcname,
bool start_)
noexcept;
36 TinyProfiler (
const char* funcname,
bool start_)
noexcept;
44 void start () noexcept;
45 void stop () noexcept;
51 std::map<std::
string,
MemStat>& memstats) noexcept;
55 static
void Finalize (
bool bFlushing = false) noexcept;
61 std::map<std::
string,
MemStat>& memstats) noexcept;
65 static
void StartRegion (std::
string regname) noexcept;
66 static
void StopRegion (const std::
string& regname) noexcept;
87 double dtinmin{std::numeric_limits<double>::max()};
89 double dtexmin{std::numeric_limits<double>::max()};
126 struct aligned_deque {
128 alignas(64) std::deque<const TinyProfiler*> deque;
131 static std::vector<aligned_deque> mem_stack_thread_private;
137 static std::deque<std::tuple<double,double,std::string*> >
ttstack;
138 static std::map<std::string,std::map<std::string, Stats> >
statsmap;
150 static void PrintStats (std::map<std::string,Stats>& regstats,
double dt_max,
152 static void PrintMemStats (std::map<std::string, MemStat>& memstats,
153 std::string
const& memname,
double dt_max,
154 double t_final, std::ostream* os,
bool only_local);
Definition AMReX_TinyProfiler.H:158
~TinyProfileRegion()
Definition AMReX_TinyProfiler.cpp:984
TinyProfileRegion & operator=(TinyProfileRegion const &)=delete
TinyProfileRegion(TinyProfileRegion const &)=delete
TinyProfileRegion(TinyProfileRegion &&)=delete
std::string regname
Definition AMReX_TinyProfiler.H:168
TinyProfiler tprof
Definition AMReX_TinyProfiler.H:169
A simple profiler that returns basic performance information (e.g. min, max, and average running time...
Definition AMReX_TinyProfiler.H:31
static bool memprof_enabled
Definition AMReX_TinyProfiler.H:146
static std::vector< std::string > regionstack
Definition AMReX_TinyProfiler.H:136
static void Initialize()
Definition AMReX_TinyProfiler.cpp:314
static bool RegisterArena(const std::string &memory_name, std::map< std::string, MemStat > &memstats) noexcept
Definition AMReX_TinyProfiler.cpp:490
static bool device_synchronize_around_region
Definition AMReX_TinyProfiler.H:141
static std::deque< const TinyProfiler * > mem_stack
Definition AMReX_TinyProfiler.H:123
static std::string const & get_output_file()
Definition AMReX_TinyProfiler.cpp:1019
static void MemoryFinalize(bool bFlushing=false) noexcept
Definition AMReX_TinyProfiler.cpp:452
static bool enabled
Definition AMReX_TinyProfiler.H:145
static void PrintMemoryUsage(std::ostream *os, bool only_local) noexcept
Definition AMReX_TinyProfiler.cpp:1002
static int verbose
Definition AMReX_TinyProfiler.H:143
static std::vector< std::string > all_memnames
Definition AMReX_TinyProfiler.H:134
static double print_threshold
Definition AMReX_TinyProfiler.H:144
std::vector< Stats * > stats
Definition AMReX_TinyProfiler.H:121
static std::deque< std::tuple< double, double, std::string * > > ttstack
Definition AMReX_TinyProfiler.H:137
static double t_memory_init
Definition AMReX_TinyProfiler.H:140
TinyProfiler(TinyProfiler const &)=delete
TinyProfiler & operator=(TinyProfiler const &)=delete
static void PrintStats(std::map< std::string, Stats > ®stats, double dt_max, std::ostream *os)
Definition AMReX_TinyProfiler.cpp:516
static MemStat * memory_alloc(std::size_t nbytes, std::map< std::string, MemStat > &memstats) noexcept
Definition AMReX_TinyProfiler.cpp:270
void stop() noexcept
Definition AMReX_TinyProfiler.cpp:158
std::string fname
Definition AMReX_TinyProfiler.H:118
static void PrintCallStack(std::ostream &os)
Definition AMReX_TinyProfiler.cpp:991
static void PrintMemStats(std::map< std::string, MemStat > &memstats, std::string const &memname, double dt_max, double t_final, std::ostream *os, bool only_local)
Definition AMReX_TinyProfiler.cpp:730
bool in_parallel_region
Definition AMReX_TinyProfiler.H:119
void start() noexcept
Definition AMReX_TinyProfiler.cpp:97
static void MemoryInitialize()
Definition AMReX_TinyProfiler.cpp:338
static double t_init
Definition AMReX_TinyProfiler.H:139
void memory_start() const noexcept
Definition AMReX_TinyProfiler.cpp:231
void memory_stop() const noexcept
Definition AMReX_TinyProfiler.cpp:248
static void StartRegion(std::string regname) noexcept
Definition AMReX_TinyProfiler.cpp:949
static std::map< std::string, std::map< std::string, Stats > > statsmap
Definition AMReX_TinyProfiler.H:138
~TinyProfiler()
Definition AMReX_TinyProfiler.cpp:91
static void StopRegion(const std::string ®name) noexcept
Definition AMReX_TinyProfiler.cpp:959
static void memory_free(std::size_t nbytes, MemStat *stat) noexcept
Definition AMReX_TinyProfiler.cpp:299
static std::vector< std::map< std::string, MemStat > * > all_memstats
Definition AMReX_TinyProfiler.H:133
int global_depth
Definition AMReX_TinyProfiler.H:120
TinyProfiler(TinyProfiler &&)=delete
static std::string output_file
Definition AMReX_TinyProfiler.H:147
static int n_print_tabs
Definition AMReX_TinyProfiler.H:142
static void DeregisterArena(std::map< std::string, MemStat > &memstats) noexcept
Definition AMReX_TinyProfiler.cpp:501
amrex_long Long
Definition AMReX_INT.H:30
Definition AMReX_Amr.cpp:49
void Finalize()
Definition AMReX.cpp:786
Definition AMReX_Arena.H:12
Long currentmem
amount of currently used memory in bytes
Definition AMReX_TinyProfiler.H:24
Long maxmem
running maximum of currentmem
Definition AMReX_TinyProfiler.H:26
Long nalloc
number of allocations
Definition AMReX_TinyProfiler.H:22
Long nfree
number of frees
Definition AMReX_TinyProfiler.H:23
double avgmem
memory used (bytes) times time in use (seconds)
Definition AMReX_TinyProfiler.H:25
Definition AMReX_TinyProfiler.H:102
static bool compmem(const MemProcStats &lhs, const MemProcStats &rhs)
Definition AMReX_TinyProfiler.H:113
Long avgmem_avg
Definition AMReX_TinyProfiler.H:107
Long maxmem_avg
Definition AMReX_TinyProfiler.H:110
Long nalloc
Definition AMReX_TinyProfiler.H:103
Long curmem_max
Definition AMReX_TinyProfiler.H:105
Long avgmem_max
Definition AMReX_TinyProfiler.H:108
Long maxmem_min
Definition AMReX_TinyProfiler.H:109
Long nfree
Definition AMReX_TinyProfiler.H:104
Long maxmem_max
Definition AMReX_TinyProfiler.H:111
Long avgmem_min
Definition AMReX_TinyProfiler.H:106
std::string fname
Definition AMReX_TinyProfiler.H:112
stats across processes
Definition AMReX_TinyProfiler.H:83
double dtexmin
Definition AMReX_TinyProfiler.H:89
Long navg
Definition AMReX_TinyProfiler.H:86
double dtexavg
Definition AMReX_TinyProfiler.H:90
std::string fname
Definition AMReX_TinyProfiler.H:92
static bool compin(const ProcStats &lhs, const ProcStats &rhs)
Definition AMReX_TinyProfiler.H:96
Long nmin
Definition AMReX_TinyProfiler.H:85
Long nmax
Definition AMReX_TinyProfiler.H:86
double dtexmax
Definition AMReX_TinyProfiler.H:90
bool do_print
Definition AMReX_TinyProfiler.H:91
double dtinavg
Definition AMReX_TinyProfiler.H:88
double dtinmax
Definition AMReX_TinyProfiler.H:88
double dtinmin
Definition AMReX_TinyProfiler.H:87
static bool compex(const ProcStats &lhs, const ProcStats &rhs)
Definition AMReX_TinyProfiler.H:93
Definition AMReX_TinyProfiler.H:73