Block-Structured AMR Software Framework
 
Loading...
Searching...
No Matches
AMReX_MemProfiler.H
Go to the documentation of this file.
1
2#ifndef BL_MEMPROFILER_H
3#define BL_MEMPROFILER_H
4#include <AMReX_Config.H>
5
6#include <AMReX_INT.H>
7
8#include <stack>
9#include <functional>
10#include <string>
11#include <vector>
12#include <map>
13#include <iosfwd>
14#include <memory>
15
16namespace amrex {
17
19{
20public:
21
26
31
32 static void add (const std::string& name, std::function<MemInfo()>&& f);
33 static void add (const std::string& name, std::function<NBuildsInfo()>&& f);
34
35 static void report (const std::string& prefix = std::string());
36
37 static void Finalize ();
38
39 MemProfiler (const MemProfiler&) = delete;
41
44
45private:
46
47 void report_ (const std::string& prefix, const std::string& memory_log_name) const;
48
50 struct Bytes {
51 Long mn;
52 Long mx;
53 };
55 friend std::ostream& operator<< (std::ostream& os,
56 const MemProfiler::Bytes& bytes);
57
59 struct Builds {
60 int mn;
61 int mx;
62 };
64 friend std::ostream& operator<< (std::ostream& os,
65 const MemProfiler::Builds& builds);
66
67 static MemProfiler& getInstance ();
68
69 static std::unique_ptr<MemProfiler> the_instance;
70
71 std::vector<std::string> the_names;
72 std::vector<std::function<MemInfo()> > the_funcs;
73
74 std::vector<std::string> the_names_builds;
75 std::vector<std::function<NBuildsInfo()> > the_funcs_builds;
76};
77
78}
79
80#endif
Definition AMReX_MemProfiler.H:19
void report_(const std::string &prefix, const std::string &memory_log_name) const
Definition AMReX_MemProfiler.cpp:79
std::vector< std::function< NBuildsInfo()> > the_funcs_builds
Definition AMReX_MemProfiler.H:75
~MemProfiler()
Definition AMReX_MemProfiler.H:43
MemProfiler & operator=(const MemProfiler &)=delete
std::vector< std::string > the_names_builds
Definition AMReX_MemProfiler.H:74
static std::unique_ptr< MemProfiler > the_instance
Definition AMReX_MemProfiler.H:69
static MemProfiler & getInstance()
Definition AMReX_MemProfiler.cpp:51
static void add(const std::string &name, std::function< MemInfo()> &&f)
Definition AMReX_MemProfiler.cpp:25
static void report(const std::string &prefix=std::string())
Definition AMReX_MemProfiler.cpp:66
static void Finalize()
Definition AMReX_MemProfiler.cpp:60
std::vector< std::function< MemInfo()> > the_funcs
Definition AMReX_MemProfiler.H:72
MemProfiler(const MemProfiler &)=delete
friend std::ostream & operator<<(std::ostream &os, const MemProfiler::Bytes &bytes)
Definition AMReX_MemProfiler.cpp:331
MemProfiler()
Definition AMReX_MemProfiler.H:42
std::vector< std::string > the_names
Definition AMReX_MemProfiler.H:71
amrex_long Long
Definition AMReX_INT.H:30
Definition AMReX_Amr.cpp:49
Definition AMReX_MemProfiler.H:22
Long current_bytes
Definition AMReX_MemProfiler.H:23
Long hwm_bytes
Definition AMReX_MemProfiler.H:24
Definition AMReX_MemProfiler.H:27
int current_builds
Definition AMReX_MemProfiler.H:28
int hwm_builds
Definition AMReX_MemProfiler.H:29