1 #ifndef MOAB_MPE_H 2 #define MOAB_MPE_H 3 4 #include "moab/MOABConfig.h" 5 #ifdef MOAB_HAVE_LIBMPE 6 # include "moab_mpi.h" 7 # include "mpe.h" 8 #else 9 10 /* Define dummy logging functions */ 11 12 /* mpe_misc.h */ 13 14 #define MPE_Seq_begin( A, B ) {if (A || B) {}} 15 16 #define MPE_Seq_end( A, B ) {if (A || B) {}} 17 18 #define MPE_DelTag( A, B, C, D ) ( {if (A || B || C || D) {}}, MPI_SUCCESS) 19 #define MPE_GetTags( A, B, C, D ) (A = *C, *D = 0, if (B) {}, MPI_SUCCESS) 20 #define MPE_ReturnTags( A, B, C ) ( {if (A || B || C) {}}, 0) 21 #define MPE_TagsEnd() (MPI_SUCCESS) 22 23 #define MPE_IO_Stdout_to_file( A, B ) {if (A || B) {}} 24 25 #define MPE_GetHostName( A, B ) {if (A || B) {}} 26 27 #define MPI_Start_debugger() 28 29 /* 30 #if (defined(__STDC__) || defined(__cplusplus)) 31 #define MPE_Errors_to_dbx ( MPI_Comm *, int *, ... ); 32 #else 33 void MPE_Errors_to_dbx ( MPI_Comm *, int *, char *, char *, int * ); 34 #endif 35 void MPE_Errors_call_debugger ( char *, char *, char ** ); 36 void MPE_Errors_call_xdbx ( char *, char * ); 37 void MPE_Errors_call_dbx_in_xterm ( char *, char * ); 38 void MPE_Signals_call_debugger ( void ); 39 40 int MPE_Decomp1d ( int, int, int, int *, int * ); 41 42 void MPE_Comm_global_rank ( MPI_Comm, int, int * ); 43 */ 44 45 /* mpe_log.h */ 46 47 #define MPE_LOG_OK 0 48 #define MPE_Log_OK MPE_LOG_OK 49 /* no problems */ 50 #define MPE_LOG_LOCKED_OUT 1 51 #define MPE_Log_LOCKED_OUT MPE_LOG_LOCKED_OUT 52 /* logs are being worked on, cannot insert any new entries */ 53 #define MPE_LOG_NO_MEMORY 2 54 #define MPE_Log_NO_MEMORY MPE_LOG_NO_MEMORY 55 /* could not allocate memory for logging data */ 56 #define MPE_LOG_FILE_PROB 3 57 #define MPE_Log_FILE_PROB MPE_LOG_FILE_PROB 58 /* cound not open file for writing out the logged info */ 59 #define MPE_LOG_NOT_INITIALIZED 4 60 #define MPE_Log_NOT_INITIALIZED MPE_LOG_NOT_INITIALIZED 61 /* logging not initialized */ 62 #define MPE_LOG_PACK_FAIL 5 63 #define MPE_Log_PACK_FAIL MPE_LOG_PACK_FAIL 64 65 #define MPE_Init_log() (MPI_SUCCESS) 66 #define MPE_Initialized_logging() 1 67 68 #define MPE_Describe_state( A, B, C, D ) {if (A || B || C || D) {}} 69 #define MPE_Describe_event( A, B, C ) {if (A || B || C) {}} 70 #define MPE_Log_get_event_number() 71 #define MPE_Log_send( A, B, C ) {if (A || B || C) {}} 72 #define MPE_Log_receive( A, B, C ) {if (A || B || C) {}} 73 #define MPE_Log_event( A, B, C ) {if (A || B || C) {}} 74 #define MPE_Start_log() 75 #define MPE_Stop_log() 76 #define MPE_Finish_log( A ) {if (A) {}} 77 78 #endif 79 80 #ifdef __cplusplus 81 82 namespace moab { 83 84 class MPEState { 85 private: 86 int sid,eid; 87 bool ok; 88 public: 89 MPEState( const char* name, const char* color = 0 ) sid(MPE_Log_get_event_number ())90 : sid(MPE_Log_get_event_number()), 91 eid(MPE_Log_get_event_number()), 92 ok(true) 93 { 94 MPE_Describe_state( sid, eid, name, color ? color : "yellow" ); 95 } 96 MPEState()97 MPEState( ) : ok(false) {} valid()98 bool valid() const { return ok; } 99 100 void start( int data = 0, const char* str = 0 ) { 101 MPE_Log_event( sid, data, str ); 102 } 103 void start( const char* str, int data = 0 ) { 104 MPE_Log_event( sid, data, str ); 105 } start(const char * str,const char * str2)106 void start( const char* str, const char* str2 ) { 107 MPE_Log_event( sid, 0, (std::string(str).append(str2)).c_str() ); 108 } 109 void end( int data = 0, const char* str = 0 ) { 110 MPE_Log_event( eid, data, str ); 111 } 112 void end( const char* str, int data = 0 ) { 113 MPE_Log_event( eid, data, str ); 114 } 115 }; 116 117 class MPEEvent { 118 private: 119 int id; 120 public: 121 MPEEvent( const char* name, const char* color = 0 ) id(MPE_Log_get_event_number ())122 : id(MPE_Log_get_event_number()) 123 { 124 MPE_Describe_event( id, name, color ? color : "red" ); 125 } 126 void log( int data = 0, const char* str = 0 ) { 127 MPE_Log_event( id, data, str ); 128 } 129 void log( const char* str, int data = 0 ) { 130 MPE_Log_event( id, data, str ); 131 } 132 }; 133 134 } /* namespace moab */ 135 136 #endif /* __cplusplus */ 137 138 #endif /* MOAB_MPE_H */ 139