44 #define CH_TIMERS_ON() false 45 #define CH_TIMER(name, tpointer) (void)0 46 #define CH_TIME(name) (void)0 47 #define CH_TIMELEAF(name) (void)0 48 #define CH_TIMERS(name) (void)0 49 #define CH_START(tpointer) (void)0 50 #define CH_STOP(tpointer) (void)0 52 #define CH_TIMER_REPORT() (void)0 53 #define CH_TIMER_REPORTNAME(stream, name) (void)0 54 #define CH_TIMER_RESET() (void)0 55 #define CH_TIMER_PRUNE(threshold) (void)0 59 extern std::fstream
LBFILE;
61 #define CH_TIMERS_ON() TraceTimer::timersOn() 63 #define CH_TIMER(name, tpointer) \ 64 const char* TimerTag_##tpointer = name ; \ 65 CH_XD::TraceTimer* tpointer = NULL ;\ 68 tpointer = CH_XD::TraceTimer::getTimer(TimerTag_##tpointer) ; \ 71 #define CH_TIME(name) \ 72 const char* TimerTagA = name ; \ 73 char CH_TimermutexA = 0; \ 74 CH_XD::TraceTimer* ch_tpointer = NULL; \ 75 int tid=omp_get_thread_num(); \ 78 ch_tpointer = CH_XD::TraceTimer::getTimer(TimerTagA); \ 80 CH_XD::AutoStart autostart(ch_tpointer, &CH_TimermutexA) 82 #define CH_TIME(name) \ 83 const char* TimerTagA = name ; \ 84 char CH_TimermutexA = 0; \ 85 CH_XD::TraceTimer* ch_tpointer = NULL; \ 86 ch_tpointer = CH_XD::TraceTimer::getTimer(TimerTagA); \ 87 CH_XD::AutoStart autostart(ch_tpointer, &CH_TimermutexA) 91 #define CH_TIMELEAF(name) \ 92 const char* TimerTagA = name ; \ 93 CH_XD::TraceTimer* ch_tpointer = NULL; \ 94 int tid = omp_get_thread_num(); if(tid==0) \ 96 ch_tpointer = CH_XD::TraceTimer::getTimer(TimerTagA); \ 98 CH_XD::AutoStartLeaf autostart(ch_tpointer) 100 #define CH_TIMELEAF(name) \ 101 const char* TimerTagA = name ; \ 102 CH_XD::TraceTimer* ch_tpointer = NULL; \ 103 ch_tpointer = CH_XD::TraceTimer::getTimer(TimerTagA); \ 104 CH_XD::AutoStartLeaf autostart(ch_tpointer) 108 #define CH_TIMERS(name) \ 109 const char* TimerTagA = name ; \ 110 char CH_TimermutexA = 0; \ 111 char CH_Timermutex = 0; \ 112 CH_XD::TraceTimer* ch_tpointer = NULL; \ 113 int TIMERS_tid = omp_get_thread_num(); if(TIMERS_tid==0) \ 115 ch_tpointer = CH_XD::TraceTimer::getTimer(TimerTagA); \ 117 CH_XD::AutoStart autostart(ch_tpointer, &CH_TimermutexA, &CH_Timermutex) 120 #define CH_START(tpointer) \ 123 tpointer->start(&CH_Timermutex); \ 126 #define CH_STOP(tpointer) \ 129 tpointer->stop(&CH_Timermutex); \ 133 #define CH_TIMERS(name) \ 134 const char* TimerTagA = name ; \ 135 char CH_TimermutexA = 0; \ 136 char CH_Timermutex = 0; \ 137 CH_XD::TraceTimer* ch_tpointer = NULL; \ 140 ch_tpointer = CH_XD::TraceTimer::getTimer(TimerTagA); \ 142 CH_XD::AutoStart autostart(ch_tpointer, &CH_TimermutexA, &CH_Timermutex) 145 #define CH_START(tpointer) \ 147 tpointer->start(&CH_Timermutex); \ 150 #define CH_STOP(tpointer) \ 152 tpointer->stop(&CH_Timermutex); \ 158 #define CH_TIMER_REPORT() CH_XD::TraceTimer::report() 160 #define CH_TIMER_REPORTNAME(stream, name) CH_XD::TraceTimer::reportName(stream, name); 161 #define CH_TIMER_RESET() CH_XD::TraceTimer::reset() 163 #define CH_TIMER_PRUNE(threshold) CH_XD::TraceTimer::PruneTimersParentChildPercent(threshold) 310 void start(
char* mutex);
311 unsigned long long int stop(
char* mutex);
312 static void report(
bool a_closeAfter=
false);
313 static void reportName(std::ostream& out,
const char*
name);
319 unsigned long long int time()
const 321 return m_accumulated_WCtime;
339 static int initializer();
340 static TraceTimer* getTimer(
const char* name);
341 const std::vector<TraceTimer*>& children()
const ;
343 static void PruneTimersParentChildPercent(
double percent);
344 static void sampleMemUsage(
const char* a_name) ;
345 static void sampleMemUsage2() ;
346 static void reportPeak(FILE* out);
350 return s_currentTimer[0]->m_name;
353 static bool timersOn();
378 static bool find(std::list<const TraceTimer*>& a_trace,
const TraceTimer* a_target);
379 void reportTree(FILE* out,
const TraceTimer& node,
int depth);
385 void currentize()
const ;
386 int computeRank()
const;
387 static void reportFullTree(FILE* out,
const TraceTimer& timer,
388 unsigned long long int totalTime,
int depth,
TraceTimer** stack_bottom);
389 static void reportOneTree(FILE* out,
const TraceTimer& timer);
390 static void updateMemory(
TraceTimer& a_timer);
393 static void subReport(FILE* out,
const char* header,
unsigned long long int totalTime);
395 static void PruneTimersParentChildPercent(
double threshold,
TraceTimer* parent);
409 if(m_timer)m_timer->leafStop();
422 :m_mutex(mutex), m_childMutex(childMutex),m_timer(a_timer)
423 {
if(a_timer)a_timer->
start(mutex);}
425 :m_mutex(mutex), m_childMutex(&
AutoStart::ok),m_timer(a_timer)
426 {
if(a_timer)a_timer->
start(mutex);}
428 {
if(m_timer)m_timer->stop(m_mutex); }
444 if (m_pruned)
return;
452 if (m_pruned)
return;
453 m_accumulated_WCtime +=
ch_ticks() - m_last_WCtime_stamp;
455 m_last_WCtime_stamp=0;
static char ok
Definition: CH_Timer.H:435
std::vector< TraceTimer * > m_children
Definition: CH_Timer.H:365
char * m_childMutex
Definition: CH_Timer.H:433
unsigned int m_memoryMin
Definition: CH_Timer.H:373
bool m_pruned
Definition: CH_Timer.H:363
Definition: IntVect.H:700
unsigned long long int ch_ticks()
Definition: ClockTicks.H:64
AutoStart(TraceTimer *a_timer, char *mutex, char *childMutex)
Definition: CH_Timer.H:421
char * m_mutex
Definition: CH_Timer.H:432
Definition: CH_Timer.H:418
~AutoStart()
Definition: CH_Timer.H:427
int m_thread_id
Definition: CH_Timer.H:371
void leafStart()
Definition: CH_Timer.H:442
Definition: CH_Timer.H:399
int rank() const
Definition: CH_Timer.H:324
unsigned long long int m_flops
Definition: CH_Timer.H:374
TraceTimer * m_timer
Definition: CH_Timer.H:415
static bool s_tracing
Definition: CH_Timer.H:376
const char * name(const FArrayBox &a_dummySpecializationArg)
Definition: CH_HDF5.H:907
unsigned long long int m_accumulated_WCtime
Definition: CH_Timer.H:368
int m_rank
Definition: CH_Timer.H:370
bool isPruned() const
Definition: CH_Timer.H:334
static const char * currentTimer()
Definition: CH_Timer.H:348
static TraceTimer * s_peakTimer
Definition: CH_Timer.H:361
long long int count() const
Definition: CH_Timer.H:328
static std::vector< TraceTimer * > s_roots
Definition: CH_Timer.H:357
AutoStart(TraceTimer *a_timer, char *mutex)
Definition: CH_Timer.H:424
TraceTimer * m_timer
Definition: CH_Timer.H:434
void leafStop()
Definition: CH_Timer.H:450
TraceTimer * m_parent
Definition: CH_Timer.H:364
Definition: CH_Timer.H:306
unsigned long long int time() const
Definition: CH_Timer.H:319
~AutoStartLeaf()
Definition: CH_Timer.H:407
long long int ch_flops
Definition: CH_Counters.H:30
AutoStartLeaf(TraceTimer *a_timer)
Definition: CH_Timer.H:402
static std::vector< TraceTimer * > s_currentTimer
Definition: CH_Timer.H:358
static bool s_memorySampling
Definition: CH_Timer.H:372
static long long int s_peak
Definition: CH_Timer.H:360
const char * m_name
Definition: CH_Timer.H:366
unsigned long long int m_last_WCtime_stamp
Definition: CH_Timer.H:369
long long int m_count
Definition: CH_Timer.H:367