/usr/lib/petscdir/3.4.2/include/petsclog.hh is in libpetsc3.4.2-dev 3.4.2.dfsg1-6.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 | #if !defined(__PETSCLOG_HH)
#define __PETSCLOG_HH
#if defined(PETSC_CLANGUAGE_CXX) && defined(__cplusplus)
#include <map>
#include <string>
namespace PETSc {
class LogStage {
protected:
std::string name;
PetscLogEvent id;
public:
LogStage() : name(), id() {};
LogStage(const std::string& name, PetscLogStage id) : name(name), id(id) {};
LogStage(const LogStage& stage) : name(stage.name), id(stage.id) {};
void push() {
PetscErrorCode ierr = PetscLogStagePush(this->id);CHKERRXX(ierr);
};
void pop() {
PetscErrorCode ierr = PetscLogStagePop();CHKERRXX(ierr);
};
PetscLogEvent getId() {return this->id;};
};
class LogEvent {
protected:
std::string name;
PetscLogEvent id;
public:
LogEvent() : name(), id() {};
LogEvent(const std::string& name, PetscLogEvent id) : name(name), id(id) {};
LogEvent(const LogEvent& event) : name(event.name), id(event.id) {};
void begin(PetscObject o1 = NULL, PetscObject o2 = NULL, PetscObject o3 = NULL, PetscObject o4 = NULL) {
PetscErrorCode ierr = PetscLogEventBegin(this->id, o1, o2, o3, o4);CHKERRXX(ierr);
};
void end(PetscObject o1 = NULL, PetscObject o2 = NULL, PetscObject o3 = NULL, PetscObject o4 = NULL) {
PetscErrorCode ierr = PetscLogEventEnd(this->id, o1, o2, o3, o4);CHKERRXX(ierr);
};
void barrierBegin(PetscObject o1 = NULL, PetscObject o2 = NULL, PetscObject o3 = NULL, PetscObject o4 = NULL, MPI_Comm comm = MPI_COMM_NULL) {
if (comm == MPI_COMM_NULL) comm = PETSC_COMM_WORLD;
PetscErrorCode ierr = PetscLogEventBarrierBegin(this->id, o1, o2, o3, o4, comm);CHKERRXX(ierr);
};
void barrierEnd(PetscObject o1 = NULL, PetscObject o2 = NULL, PetscObject o3 = NULL, PetscObject o4 = NULL, MPI_Comm comm = MPI_COMM_NULL) {
if (comm == MPI_COMM_NULL) comm = PETSC_COMM_WORLD;
PetscErrorCode ierr = PetscLogEventBarrierEnd(this->id, o1, o2, o3, o4, comm);CHKERRXX(ierr);
};
PetscLogEvent getId() {return this->id;};
PetscLogDouble time() {
PetscInt stage = 0;
PetscStageLog stageLog;
PetscEventPerfLog eventLog;
PetscErrorCode ierr;
ierr = PetscLogGetStageLog(&stageLog);CHKERRXX(ierr);
ierr = PetscStageLogGetEventPerfLog(stageLog, stage, &eventLog);CHKERRXX(ierr);
PetscEventPerfInfo eventInfo = eventLog->eventInfo[this->id];
return eventInfo.time;
};
};
class Log {
public:
static std::map<std::string,LogEvent> event_registry;
static std::map<std::string,LogStage> stage_registry;
static LogEvent& Event(const std::string& name, PetscClassId classid = PETSC_OBJECT_CLASSID) {
if (event_registry.find(name) == event_registry.end()) {
PetscLogEvent id;
PetscErrorCode ierr;
/* Should check for already registered events */
ierr = PetscLogEventRegister(name.c_str(), classid, &id);CHKERRXX(ierr);
event_registry[name] = LogEvent(name, id);
}
return event_registry[name];
};
static LogStage& Stage(const std::string& name) {
if (stage_registry.find(name) == stage_registry.end()) {
PetscLogStage id;
PetscErrorCode ierr;
/* Should check for already registered stages */
ierr = PetscLogStageRegister(name.c_str(), &id);CHKERRXX(ierr);
stage_registry[name] = LogStage(name, id);
}
return stage_registry[name];
};
};
}
#endif /* PETSC_CLANGUAGE_CXX */
/* Reset __FUNCT__ in case the user does not define it themselves */
#undef __FUNCT__
#define __FUNCT__ "User provided function"
#endif /* __PETSCLOG_HH */
|