ug4
memtracker.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2013-2015: G-CSC, Goethe University Frankfurt
3  * Author: Martin Rupp
4  *
5  * This file is part of UG4.
6  *
7  * UG4 is free software: you can redistribute it and/or modify it under the
8  * terms of the GNU Lesser General Public License version 3 (as published by the
9  * Free Software Foundation) with the following additional attribution
10  * requirements (according to LGPL/GPL v3 §7):
11  *
12  * (1) The following notice must be displayed in the Appropriate Legal Notices
13  * of covered and combined works: "Based on UG4 (www.ug4.org/license)".
14  *
15  * (2) The following notice must be displayed at a prominent place in the
16  * terminal output of covered works: "Based on UG4 (www.ug4.org/license)".
17  *
18  * (3) The following bibliography is recommended for citation and must be
19  * preserved in all covered files:
20  * "Reiter, S., Vogel, A., Heppner, I., Rupp, M., and Wittum, G. A massively
21  * parallel geometric multigrid solver on hierarchically distributed grids.
22  * Computing and visualization in science 16, 4 (2013), 151-164"
23  * "Vogel, A., Reiter, S., Rupp, M., Nägel, A., and Wittum, G. UG4 -- a novel
24  * flexible software system for simulating pde based models on high performance
25  * computers. Computing and visualization in science 16, 4 (2013), 165-179"
26  *
27  * This program is distributed in the hope that it will be useful,
28  * but WITHOUT ANY WARRANTY; without even the implied warranty of
29  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
30  * GNU Lesser General Public License for more details.
31  */
32 
33 /*
34  * You can enable the internal memtrack with
35  * cmake -DPROFILE_MEMORY=ON ..
36  *
37  * If PROFILE_MEMORY=ON, global new and delete
38  * operators are overwritten.
39  * If INTERNAL_MEMTRACKER=OFF, global new and delete are untouched
40  * and all other functions defined here lead to dummy functions.
41  *
42  * With EnableMemTracker(true) you start the memory profiling,
43  * with EnableMemTracker(false) you stop it.
44  * If you have a section you don't want to be measured, use this code
45  * bool bMTEnabled = EnableMemTracker(false);
46  * \code
47  * CallToFunctionWhichShouldNotBeProfiled();
48  * EnableMemTracker(bMTEnabled);
49  * \endcode
50  *
51  * Memtracking can be output within
52  * WriteProfileData("laplace.pdxml")
53  * as part of the XML file and viewed with the ProfileViewer 1.32+
54  * (http://gcsc.uni-frankfurt.de/Members/mrupp/shinyviewer/shinyprofileviewer)
55  * It is also printed with console-commands like SetOutputProfileStats(true).
56  *
57  */
58 
59 #ifndef MEMTRACKER_H_
60 #define MEMTRACKER_H_
61 
63 
64 
65 namespace ug{
66 
71 void UpdateTotalMem();
72 
73 #ifdef UG_PROFILER_SHINY
74 size_t GetSelfMem(const Shiny::ProfileNode *p);
75 size_t GetTotalMem(const Shiny::ProfileNode *p);
76 #endif
77 
91 bool EnableMemTracker(bool b);
92 
96 bool IsMemTrackerEnabled();
97 
98 
103 bool HasMemTracking();
104 
105 
109 void DisplayVacantMemory();
110 }
111 #endif /* MEMTRACKER_H_ */
the ug namespace
void UpdateTotalMem()
Definition: memtracker.cpp:157
bool IsMemTrackerEnabled()
Definition: memtracker.cpp:181
bool EnableMemTracker(bool b)
Definition: memtracker.cpp:175
bool HasMemTracking()
Definition: memtracker.cpp:186
size_t GetSelfMem(const Shiny::ProfileNode *p)
Definition: memtracker.cpp:166
size_t GetTotalMem(const Shiny::ProfileNode *p)
Definition: memtracker.cpp:170
void DisplayVacantMemory()
Definition: memtracker.cpp:130