3 #include <AMReX_Config.H>
5 #define BL_PROFILE_PASTE2(x, y) x##y
6 #define BL_PROFILE_PASTE(x, y) BL_PROFILE_PASTE2(x, y)
33 ProfStats() : nCalls(0), totalTime(0.0), minTime(0.0),
34 maxTime(0.0), avgTime(0.0), variance(0.0) { }
36 Real totalTime, minTime, maxTime, avgTime, variance;
40 CallStats() : callStackDepth(-2), csFNameNumber(-2),
41 nCSCalls(0), totalTime(0.0),
42 stackTime(0.0), callTime(0.0) { }
43 CallStats(
int depth,
int fnamenumber) : callStackDepth(depth),
44 csFNameNumber(fnamenumber),
45 nCSCalls(0), totalTime(0.0),
46 stackTime(0.0), callTime(0.0) { }
47 CallStats(
int depth,
int fnamenumber,
int ncalls, Real totaltime,
48 Real stacktime, Real calltime) : callStackDepth(depth),
49 csFNameNumber(fnamenumber),
50 nCSCalls(ncalls), totalTime(totaltime),
51 stackTime(stacktime), callTime(calltime) { }
52 int callStackDepth, csFNameNumber;
54 Real totalTime, stackTime, callTime;
56 static int cstatsVersion;
57 static Real minCallTime, maxCallTime;
60 struct CallStatsStack {
61 CallStatsStack() : bFlushed(
false), index(-1) { }
62 CallStatsStack(
int idx) : bFlushed(
false), index(idx) { }
67 struct CallStatsPatch {
68 CallStatsPatch() : seekPos(-1), callStats(), fileName(
"") { }
69 CallStatsPatch(Long spos,
const CallStats &cs,
const std::string &fname)
70 : seekPos(spos), callStats(cs), fileName(fname) { }
78 : rssTime(0.0), rssRNumber(-2), rssStart(
false) { }
79 RStartStop(Real t,
int r,
bool s)
80 : rssTime(t), rssRNumber(r), rssStart(s) { }
135 CommStats() : cfType(InvalidCFT),
size(-2), commpid(-2), tag(-2),
137 CommStats(CommFuncType cft,
int sz,
int cpid,
int tg, Real ts)
138 : cfType(cft),
size(sz), commpid(cpid), tag(tg),
141 static std::string CFTToString(CommFuncType cft);
142 static CommFuncType StringToCFT(
const std::string &s);
143 static void Filter(CommFuncType cft);
144 static void UnFilter(CommFuncType cft);
146 static std::map<std::string, CommFuncType> cftNames;
147 static std::set<CommFuncType> cftExclude;
148 static int barrierNumber;
149 static int reductionNumber;
150 static int tagWrapNumber;
153 static Vector<std::pair<std::string,int> > barrierNames;
154 static Vector<std::pair<int,int> > nameTags;
155 static Vector<std::string> nameTagNames;
156 static Vector<int> tagWraps;
157 static int csVersion;
160 int size, commpid, tag;
164 static std::map<std::string, BLProfiler *> mFortProfs;
165 static Vector<std::string> mFortProfsErrors;
166 static Vector<BLProfiler *> mFortProfsInt;
167 static Vector<std::string> mFortProfsIntNames;
169 explicit BLProfiler(
const std::string &funcname);
170 BLProfiler(
const std::string &funcname,
bool bstart);
176 static void Finalize(
bool bFlushing =
false,
bool memCheck =
false);
178 static void WriteBaseProfile(
bool bFlushing =
false,
bool memCheck =
false);
179 static void WriteCallTrace(
bool bFlushing =
false,
bool memCheck =
false);
180 static void WriteCommStats(
bool bFlushing =
false,
bool memCheck =
false);
181 static void WriteFortProfErrors();
183 static void AddCommStat(
const CommFuncType cft,
const int size,
184 const int pid,
const int tag);
185 static void AddWait(
const CommFuncType cft,
const MPI_Request &reqs,
187 static void AddWaitsome(
const CommFuncType cft,
const Vector<MPI_Request> &reqs,
188 const int completed,
const Vector<MPI_Status> &status,
190 static void AddBarrier(
const std::string &message,
const bool bc);
191 static void AddNameTag(
const std::string &name);
192 static void AddAllReduce(
const CommFuncType cft,
const int size,
const bool bc);
193 static void TagRange(
const int tagmin,
const int tagmax);
194 static void AddTagWrap();
196 static void InitAMR(
const int flev,
const int mlev,
const Vector<IntVect> &rr,
197 const Vector<Box> pd);
204 static void ChangeFortIntName(
const std::string &fname,
int intname);
206 static void InitParams(
const Real ptl,
const bool writeall,
207 const bool writefabs);
208 static void AddStep(
const int snum);
209 static Real GetRunTime() {
return calcRunTime; }
210 static void SetRunTime(Real rtime) { calcRunTime = rtime; }
212 static void RegionStart(
const std::string &rname);
213 static void RegionStop(
const std::string &rname);
215 static inline int NoTag() {
return -3; }
216 static inline int BeforeCall() {
return -5; }
217 static inline int AfterCall() {
return -7; }
219 static inline int ProcNumber() {
return procNumber; }
220 static void SetBlProfDirName(
const std::string &name) { blProfDirName = name; }
221 static void SetNoOutput() { bNoOutput =
true; }
223 static int GetBaseFlushSize() {
return baseFlushSize; }
224 static void SetBaseFlushSize(
int fsize) { baseFlushSize = fsize; }
225 static int GetCSFlushSize() {
return csFlushSize; }
226 static void SetCSFlushSize(
int fsize) { csFlushSize = fsize; }
227 static int GetTraceFlushSize() {
return traceFlushSize; }
228 static void SetTraceFlushSize(
int fsize) { traceFlushSize = fsize; }
230 static int GetFlushInterval() {
return flushInterval; }
231 static void SetFlushInterval(
int finterval) { flushInterval = finterval; }
232 static Real GetFlushTimeInterval() {
return flushTimeInterval; }
233 static void SetFlushTimeInterval(Real ftinterval) { flushTimeInterval = ftinterval; }
235 static void SetNFiles(
int nfiles) { nProfFiles = nfiles; }
236 static int GetNFiles() {
return nProfFiles; }
239 Real bltstart, bltelapsed;
243 static bool bWriteAll, bWriteFabs, groupSets;
244 static bool bFirstCommWrite;
245 static bool bInitialized, bNoOutput;
246 static bool bFlushPrint;
247 static int currentStep, nProfFiles;
248 static int baseFlushSize, csFlushSize, traceFlushSize;
249 static int baseFlushCount, csFlushCount, traceFlushCount, flushInterval;
250 static int finestLevel, maxLevel;
251 static Real pctTimeLimit;
252 static Real calcRunTime;
253 static Real startTime;
254 static Real timerTime;
255 static Real flushTimeInterval;
257 static Vector<IntVect> refRatio;
258 static Vector<Box> probDomain;
260 static std::stack<Real> nestedTimeStack;
261 static std::map<int, Real> mStepMap;
262 static std::map<std::string, ProfStats> mProfStats;
263 static Vector<CommStats> vCommStats;
264 static std::string procName;
265 static int procNumber;
266 static bool blProfDirCreated;
267 static std::string blProfDirName;
268 static int BLProfVersion;
270 static bool OnExcludeList(CommFuncType cft);
271 static int NameTagNameIndex(
const std::string &name);
273 static std::map<std::string, int> mFNameNumbers;
274 static Vector<CallStats> vCallTrace;
277 static std::map<std::string, int> mRegionNameNumbers;
278 static int inNRegions;
279 static Vector<RStartStop> rStartStop;
280 static const std::string noRegionName;
282 static bool bFirstTraceWrite;
284 static Vector<CallStatsStack> callIndexStack;
285 static Vector<CallStatsPatch> callIndexPatch;
287 #ifdef BL_TRACE_PROFILING
288 static int callStackDepth;
289 static int prevCallStackDepth;
292 using RIpair = std::pair<Real, int>;
294 bool operator()(
const RIpair &lhs,
const RIpair &rhs)
const {
295 return lhs.first > rhs.first;
303 class BLProfileRegion
306 BLProfileRegion (
const std::string& a_regname)
309 BLProfiler::RegionStart(regname);
312 ~BLProfileRegion () { BLProfiler::RegionStop(regname); }
318 namespace BLProfilerUtils {
319 void WriteHeader(std::ostream &os,
const int colWidth,
320 const Real maxlen,
const bool bwriteavg);
322 void WriteRow(std::ostream &os,
const std::string &fname,
323 const BLProfiler::ProfStats &pstats,
const Real percent,
324 const int colWidth,
const Real maxlen,
325 const bool bwriteavg);
327 void WriteStats(std::ostream &os,
328 const std::map<std::string, BLProfiler::ProfStats> &mpStats,
329 const std::map<std::string, int> &fnameNumbers,
330 const Vector<BLProfiler::CallStats> &callTraces,
331 bool bwriteavg =
false,
bool bwriteinclusivetimes =
false);
335 std::ostream &
operator<< (std::ostream &os,
const BLProfiler::CommStats &cs);
338 inline std::string BLProfiler::CommStats::CFTToString(CommFuncType cft) {
340 case InvalidCFT:
return "InvalidCFT";
341 case AllReduceT:
return "AllReduceT";
342 case AllReduceR:
return "AllReduceR";
343 case AllReduceL:
return "AllReduceL";
344 case AllReduceI:
return "AllReduceI";
345 case AsendTsii:
return "AsendTsii";
346 case AsendTsiiM:
return "AsendTsiiM";
347 case AsendvTii:
return "AsendvTii";
348 case SendTsii:
return "SendTsii";
349 case SendvTii:
return "SendvTii";
350 case ArecvTsii:
return "ArecvTsii";
351 case ArecvTsiiM:
return "ArecvTsiiM";
352 case ArecvTii:
return "ArecvTii";
353 case ArecvvTii:
return "ArecvvTii";
354 case RecvTsii:
return "RecvTsii";
355 case RecvvTii:
return "RecvvTii";
356 case ReduceT:
return "ReduceT";
357 case ReduceR:
return "ReduceR";
358 case ReduceL:
return "ReduceL";
359 case ReduceI:
return "ReduceI";
360 case BCastTsi:
return "BCastTsi";
361 case GatherTsT1Si:
return "GatherTsT1Si";
362 case GatherTi:
return "GatherTi";
363 case GatherRiRi:
return "GatherRiRi";
364 case ScatterTsT1si:
return "ScatterTsT1si";
365 case Barrier:
return "Barrier";
367 case NameTag:
return "NameTag";
368 case AllCFTypes:
return "AllCFTypes";
369 case NoCFTypes:
return "NoCFTypes";
370 case IOStart:
return "IOStart";
371 case IOEnd:
return "IOEnd";
372 case TagWrap:
return "TagWrap";
373 case Allgather:
return "Allgather";
374 case Alltoall:
return "Alltoall";
375 case Alltoallv:
return "Alltoallv";
376 case Gatherv:
return "Gatherv";
377 case Get_count:
return "Get_count";
378 case Iprobe:
return "Iprobe";
379 case Test:
return "Test";
380 case Wait:
return "Wait";
381 case Waitall:
return "Waitall";
382 case Waitany:
return "Waitany";
383 case NUMBER_OF_CFTS:
return "NUMBER_OF_CFTS";
385 return "*** Error: Bad CommFuncType.";
390 #define BL_PROFILE_INITIALIZE() amrex::BLProfiler::Initialize();
391 #define BL_PROFILE_INITPARAMS() amrex::BLProfiler::InitParams(); amrex::BLProfileSync::InitParams()
392 #define BL_PROFILE_FINALIZE() amrex::BLProfiler::Finalize();
394 #define BL_TINY_PROFILE_INITIALIZE()
395 #define BL_TINY_PROFILE_FINALIZE()
397 #define BL_TINY_PROFILE_MEMORYINITIALIZE()
398 #define BL_TINY_PROFILE_MEMORYFINALIZE()
400 #define BL_PROFILE(fname) amrex::BLProfiler bl_profiler_((fname));
401 #define BL_PROFILE_T(fname, T) amrex::BLProfiler bl_profiler_((std::string(fname) + typeid(T).name()));
402 #ifdef BL_PROFILING_SPECIAL
403 #define BL_PROFILE_S(fname) amrex::BLProfiler bl_profiler_((fname));
404 #define BL_PROFILE_T_S(fname, T) amrex::BLProfiler bl_profiler_((std::string(fname) + typeid(T).name()));
406 #define BL_PROFILE_S(fname)
407 #define BL_PROFILE_T_S(fname, T)
410 #define BL_PROFILE_VAR(fname, vname) amrex::BLProfiler bl_profiler_##vname((fname));
411 #define BL_PROFILE_VAR_NS(fname, vname) amrex::BLProfiler bl_profiler_##vname(fname, false);
412 #define BL_PROFILE_VAR_START(vname) bl_profiler_##vname.start();
413 #define BL_PROFILE_VAR_STOP(vname) bl_profiler_##vname.stop();
415 #define BL_PROFILE_INIT_PARAMS(ptl,wall,wfabs) \
416 amrex::BLProfiler::InitParams(ptl,wall, wfabs);
417 #define BL_PROFILE_ADD_STEP(snum) amrex::BLProfiler::AddStep(snum);
418 #define BL_PROFILE_SET_RUN_TIME(rtime) amrex::BLProfiler::SetRunTime(rtime);
420 #define BL_PROFILE_REGION(rname) amrex::BLProfileRegion bl_profile_region_##vname((rname));
422 #define BL_PROFILE_REGION_START(rname) amrex::BLProfiler::RegionStart(rname);
423 #define BL_PROFILE_REGION_STOP(rname) amrex::BLProfiler::RegionStop(rname);
426 #define BL_PROFILE_REGION_VAR(fname, rvname) amrex::BLProfiler::RegionStart(fname); \
427 amrex::BLProfiler bl_profiler_##rvname((fname));
428 #define BL_PROFILE_REGION_VAR_START(fname, rvname) amrex::BLProfiler::RegionStart(fname); \
429 bl_profiler_##rvname.start();
430 #define BL_PROFILE_REGION_VAR_STOP(fname, rvname) bl_profiler_##rvname.stop(); \
431 amrex::BLProfiler::RegionStop(fname);
433 #define BL_PROFILE_TINY_FLUSH()
434 #define BL_PROFILE_FLUSH() { amrex::BLProfiler::Finalize(true); }
436 #define BL_TRACE_PROFILE_FLUSH() { amrex::BLProfiler::WriteCallTrace(true, true); }
437 #define BL_TRACE_PROFILE_SETFLUSHSIZE(fsize) { amrex::BLProfiler::SetTraceFlushSize(fsize); }
439 #define BL_PROFILE_CHANGE_FORT_INT_NAME(fname, intname) { amrex::BLProfiler::ChangeFortIntName(fname, intname); }
441 #ifdef BL_COMM_PROFILING
443 #define BL_COMM_PROFILE(cft, size, pid, tag) { \
444 amrex::BLProfiler::AddCommStat(cft, size, pid, tag); \
446 #define BL_COMM_PROFILE_BARRIER(message, bc) { amrex::BLProfiler::AddBarrier(message, bc); }
447 #define BL_COMM_PROFILE_ALLREDUCE(cft, size, bc) { amrex::BLProfiler::AddAllReduce(cft, size, bc); }
448 #define BL_COMM_PROFILE_REDUCE(cft, size, pid) { \
449 amrex::BLProfiler::AddCommStat(cft, size, pid, amrex::BLProfiler::NoTag()); }
450 #define BL_COMM_PROFILE_WAIT(cft, reqs, status, bc) { \
451 amrex::BLProfiler::AddWait(cft, reqs, status, bc); \
453 #define BL_COMM_PROFILE_WAITSOME(cft, reqs, completed, status, bc) { \
454 amrex::BLProfiler::AddWaitsome(cft, reqs, completed, status, bc); \
456 #define BL_COMM_PROFILE_NAMETAG(message) { amrex::BLProfiler::AddNameTag(message); }
457 #define BL_COMM_PROFILE_FILTER(cft) { amrex::BLProfiler::CommStats::Filter(cft); }
458 #define BL_COMM_PROFILE_UNFILTER(cft) { amrex::BLProfiler::CommStats::UnFilter(cft); }
459 #define BL_COMM_PROFILE_FLUSH() { amrex::BLProfiler::WriteCommStats(true, true); }
460 #define BL_COMM_PROFILE_SETFLUSHSIZE(fsize) { amrex::BLProfiler::SetCSFlushSize(fsize); }
461 #define BL_COMM_PROFILE_TAGRANGE(tagmin, tagmax) { \
462 amrex::BLProfiler::TagRange(tagmin, tagmax); }
463 #define BL_COMM_PROFILE_TAGWRAP() { amrex::BLProfiler::AddTagWrap(); }
464 #define BL_COMM_PROFILE_INITAMR(flev, mlev, rr, pd) { \
465 amrex::BLProfiler::InitAMR(flev, mlev, rr, pd); \
472 #elif defined(AMREX_TINY_PROFILING)
477 #define BL_PROFILE_INITIALIZE()
478 #define BL_PROFILE_INITPARAMS()
479 #define BL_PROFILE_FINALIZE()
481 #define BL_TINY_PROFILE_INITIALIZE() amrex::TinyProfiler::Initialize(); amrex::BLProfileSync::InitParams()
482 #define BL_TINY_PROFILE_FINALIZE() amrex::TinyProfiler::Finalize()
484 #define BL_TINY_PROFILE_MEMORYINITIALIZE() amrex::TinyProfiler::MemoryInitialize()
485 #define BL_TINY_PROFILE_MEMORYFINALIZE() amrex::TinyProfiler::MemoryFinalize()
487 #define BL_PROFILE(fname) BL_PROFILE_IMPL(fname, __COUNTER__)
488 #define BL_PROFILE_IMPL(funame, counter) amrex::TinyProfiler BL_PROFILE_PASTE(tiny_profiler_, counter)((funame)); \
489 amrex::ignore_unused(BL_PROFILE_PASTE(tiny_profiler_, counter));
491 #define BL_PROFILE_T(a, T)
492 #define BL_PROFILE_S(fname)
493 #define BL_PROFILE_T_S(fname, T)
495 #define BL_PROFILE_VAR(fname, vname) amrex::TinyProfiler tiny_profiler_##vname((fname))
496 #define BL_PROFILE_VAR_NS(fname, vname) amrex::TinyProfiler tiny_profiler_##vname(fname, false)
497 #define BL_PROFILE_VAR_START(vname) tiny_profiler_##vname.start()
498 #define BL_PROFILE_VAR_STOP(vname) tiny_profiler_##vname.stop()
499 #define BL_PROFILE_INIT_PARAMS(ptl,wall,wfabs)
500 #define BL_PROFILE_ADD_STEP(snum)
501 #define BL_PROFILE_SET_RUN_TIME(rtime)
502 #define BL_PROFILE_REGION(rname) amrex::TinyProfileRegion tiny_profile_region_##vname((rname))
503 #define BL_PROFILE_REGION_START(rname)
504 #define BL_PROFILE_REGION_STOP(rname)
507 #define BL_PROFILE_REGION_VAR(fname, rvname)
508 #define BL_PROFILE_REGION_VAR_START(fname, rvname)
509 #define BL_PROFILE_REGION_VAR_STOP(fname, rvname)
510 #define BL_PROFILE_TINY_FLUSH() amrex::TinyProfiler::Finalize(true); amrex::TinyProfiler::MemoryFinalize(true)
511 #define BL_PROFILE_FLUSH()
512 #define BL_TRACE_PROFILE_FLUSH()
513 #define BL_TRACE_PROFILE_SETFLUSHSIZE(fsize)
514 #define BL_PROFILE_CHANGE_FORT_INT_NAME(fname, intname)
541 #define BL_PROFILE_INITIALIZE()
542 #define BL_PROFILE_INITPARAMS()
543 #define BL_PROFILE_FINALIZE()
545 #define BL_TINY_PROFILE_INITIALIZE()
546 #define BL_TINY_PROFILE_FINALIZE()
548 #define BL_TINY_PROFILE_MEMORYINITIALIZE()
549 #define BL_TINY_PROFILE_MEMORYFINALIZE()
551 #define BL_PROFILE(a)
552 #define BL_PROFILE_T(a, T)
553 #define BL_PROFILE_S(fname)
554 #define BL_PROFILE_T_S(fname, T)
555 #define BL_PROFILE_TIMER(var, a)
556 #define BL_PROFILE_START(var)
557 #define BL_PROFILE_STOP(var)
558 #define BL_PROFILE_THIS_NAME()
560 #define BL_PROFILE_VAR(fname, vname)
561 #define BL_PROFILE_VAR_NS(fname, vname)
562 #define BL_PROFILE_VAR_START(vname)
563 #define BL_PROFILE_VAR_STOP(vname)
564 #define BL_PROFILE_INIT_PARAMS(ptl,wall,wfabs)
565 #define BL_PROFILE_ADD_STEP(snum)
566 #define BL_PROFILE_SET_RUN_TIME(rtime)
567 #define BL_PROFILE_REGION(rname)
568 #define BL_PROFILE_REGION_START(rname)
569 #define BL_PROFILE_REGION_STOP(rname)
570 #define BL_PROFILE_REGION_VAR(fname, rvname)
571 #define BL_PROFILE_REGION_VAR_START(fname, rvname)
572 #define BL_PROFILE_REGION_VAR_STOP(fname, rvname)
573 #define BL_PROFILE_TINY_FLUSH()
574 #define BL_PROFILE_FLUSH()
575 #define BL_TRACE_PROFILE_FLUSH()
576 #define BL_TRACE_PROFILE_SETFLUSHSIZE(fsize)
577 #define BL_PROFILE_CHANGE_FORT_INT_NAME(fname, intname)
585 #ifndef BL_COMM_PROFILING
587 #define BL_COMM_PROFILE(cft, size, pid, tag)
588 #define BL_COMM_PROFILE_BARRIER(message, bc)
589 #define BL_COMM_PROFILE_ALLREDUCE(cft, size, bc)
590 #define BL_COMM_PROFILE_REDUCE(cft, size, pid)
591 #define BL_COMM_PROFILE_WAIT(cft, reqs, status, bc)
592 #define BL_COMM_PROFILE_WAITSOME(cft, reqs, completed, status, bc)
593 #define BL_COMM_PROFILE_NAMETAG(message)
594 #define BL_COMM_PROFILE_FILTER(cft)
595 #define BL_COMM_PROFILE_UNFILTER(cft)
596 #define BL_COMM_PROFILE_FLUSH()
597 #define BL_COMM_PROFILE_SETFLUSHSIZE(fsize)
598 #define BL_COMM_PROFILE_TAGRANGE(tagmin, tagmax)
599 #define BL_COMM_PROFILE_TAGWRAP()
600 #define BL_COMM_PROFILE_INITAMR(flev, mlev, rr, pd)
608 #if (defined(BL_PROFILING) || defined(AMREX_TINY_PROFILING))
612 class BLProfileSync {
615 static void Sync() noexcept;
616 static void Sync(
const std::string& name) noexcept;
617 static void Sync(
const char* name) noexcept;
619 static void InitParams() noexcept;
621 static void StartSyncRegion() noexcept;
622 static void StartSyncRegion(
const std::string& name) noexcept;
623 static void StartSyncRegion(
const char* name) noexcept;
624 static void EndSyncRegion() noexcept;
627 static int sync_counter;
628 static int use_prof_syncs;
633 #define BL_PROFILE_SYNC() amrex::BLProfileSync::Sync()
634 #define BL_PROFILE_SYNC_TIMED(fname) amrex::BLProfileSync::Sync(fname)
635 #define BL_PROFILE_SYNC_START() amrex::BLProfileSync::StartSyncRegion()
636 #define BL_PROFILE_SYNC_START_TIMED(fname) amrex::BLProfileSync::StartSyncRegion(fname)
637 #define BL_PROFILE_SYNC_STOP() amrex::BLProfileSync::EndSyncRegion()
641 #define BL_PROFILE_SYNC()
642 #define BL_PROFILE_SYNC_TIMED(fname)
643 #define BL_PROFILE_SYNC_START()
644 #define BL_PROFILE_SYNC_START_TIMED(fname)
645 #define BL_PROFILE_SYNC_STOP()
656 #if defined(AMREX_VTUNE)
658 #define BL_TP_PROFILE_REGION_START() __itt_resume(); \
659 amrex::Print() << "VTune regional recording has begun.\n";
660 #define BL_TP_PROFILE_REGION_STOP() __itt_pause(); \
661 amrex::Print() << "VTune regional recording has been stopped.\n";
663 #elif defined(AMREX_CRAYPAT)
665 #define BL_TP_PROFILE_REGION_START() PAT_record(PAT_STATE_ON); \
666 amrex::Print() << "CrayPat regional recording has begun.\n";
667 #define BL_TP_PROFILE_REGION_STOP() PAT_record(PAT_STATE_OFF); \
668 amrex::Print() << "CrayPat regional recording has been stopped.\n";
670 #elif defined(AMREX_FORGE)
672 #define BL_TP_PROFILE_REGION_START() allinea_start_sampling(); \
673 amrex::Print() << "MAP regional recording has begun.\n";
674 #define BL_TP_PROFILE_REGION_STOP() allinea_stop_sampling(); \
675 amrex::Print() << "MAP regional recording has begun.\n";
679 #define BL_TP_PROFILE_REGION_START()
680 #define BL_TP_PROFILE_REGION_STOP()
int MPI_Request
Definition: AMReX_ccse-mpi.H:50
Definition: AMReX_BLProfiler.H:524
BLProfiler(const std::string &)
Definition: AMReX_BLProfiler.H:526
void start()
Definition: AMReX_BLProfiler.H:532
static void Initialize()
Definition: AMReX_BLProfiler.H:527
static void InitParams(const Real, const bool, const bool)
Definition: AMReX_BLProfiler.H:534
static void WriteCommStats()
Definition: AMReX_BLProfiler.H:531
static void AddStep(const int)
Definition: AMReX_BLProfiler.H:536
static void Finalize()
Definition: AMReX_BLProfiler.H:529
void stop()
Definition: AMReX_BLProfiler.H:533
static void WriteStats(std::ostream &)
Definition: AMReX_BLProfiler.H:530
static void InitParams()
Definition: AMReX_BLProfiler.H:528
void Wait()
Definition: AMReX_AsyncOut.cpp:112
AMREX_GPU_HOST_DEVICE Long size(T const &b) noexcept
integer version
Definition: AMReX_GpuRange.H:26
void Test(MPI_Request &, int &, MPI_Status &)
Definition: AMReX_ParallelDescriptor.cpp:1207
void Waitany(Vector< MPI_Request > &, int &, MPI_Status &)
Definition: AMReX_ParallelDescriptor.cpp:1299
void Gatherv(const T *send, int sc, T *recv, const std::vector< int > &rc, const std::vector< int > &disp, int root)
Definition: AMReX_ParallelDescriptor.H:1202
void Waitsome(Vector< MPI_Request > &, int &, Vector< int > &, Vector< MPI_Status > &)
Definition: AMReX_ParallelDescriptor.cpp:1303
void Waitall(Vector< MPI_Request > &, Vector< MPI_Status > &)
Definition: AMReX_ParallelDescriptor.cpp:1295
void Barrier(const std::string &)
Definition: AMReX_ParallelDescriptor.cpp:1202
Definition: AMReX_Amr.cpp:49
std::ostream & operator<<(std::ostream &os, AmrMesh const &amr_mesh)
Definition: AMReX_AmrMesh.cpp:1236
Definition: AMReX_ccse-mpi.H:51