MOAB: Mesh Oriented datABase
(version 5.4.1)
|
00001 #ifndef MOAB_MPE_H 00002 #define MOAB_MPE_H 00003 00004 #include "moab/MOABConfig.h" 00005 #ifdef MOAB_HAVE_LIBMPE 00006 #include "moab_mpi.h" 00007 #include "mpe.h" 00008 #else 00009 00010 /* Define dummy logging functions */ 00011 00012 /* mpe_misc.h */ 00013 00014 #define MPE_Seq_begin( A, B ) \ 00015 { \ 00016 if( ( A ) || ( B ) ) \ 00017 { \ 00018 } \ 00019 } 00020 00021 #define MPE_Seq_end( A, B ) \ 00022 { \ 00023 if( ( A ) || ( B ) ) \ 00024 { \ 00025 } \ 00026 } 00027 00028 #define MPE_DelTag( A, B, C, D ) \ 00029 ( \ 00030 { \ 00031 if( ( A ) || ( B ) || ( C ) || ( D ) ) \ 00032 { \ 00033 } \ 00034 }, \ 00035 MPI_SUCCESS ) 00036 #define MPE_GetTags( A, B, C, D ) ( ( A ) = *( C ), *( D ) = 0, if( B ){}, MPI_SUCCESS ) 00037 #define MPE_ReturnTags( A, B, C ) \ 00038 ( \ 00039 { \ 00040 if( ( A ) || ( B ) || ( C ) ) \ 00041 { \ 00042 } \ 00043 }, \ 00044 0 ) 00045 #define MPE_TagsEnd() ( MPI_SUCCESS ) 00046 00047 #define MPE_IO_Stdout_to_file( A, B ) \ 00048 { \ 00049 if( ( A ) || ( B ) ) \ 00050 { \ 00051 } \ 00052 } 00053 00054 #define MPE_GetHostName( A, B ) \ 00055 { \ 00056 if( ( A ) || ( B ) ) \ 00057 { \ 00058 } \ 00059 } 00060 00061 #define MPI_Start_debugger() 00062 00063 /* 00064 #if (defined(__STDC__) || defined(__cplusplus)) 00065 #define MPE_Errors_to_dbx ( MPI_Comm *, int *, ... ); 00066 #else 00067 void MPE_Errors_to_dbx ( MPI_Comm *, int *, char *, char *, int * ); 00068 #endif 00069 void MPE_Errors_call_debugger ( char *, char *, char ** ); 00070 void MPE_Errors_call_xdbx ( char *, char * ); 00071 void MPE_Errors_call_dbx_in_xterm ( char *, char * ); 00072 void MPE_Signals_call_debugger ( void ); 00073 00074 int MPE_Decomp1d ( int, int, int, int *, int * ); 00075 00076 void MPE_Comm_global_rank ( MPI_Comm, int, int * ); 00077 */ 00078 00079 /* mpe_log.h */ 00080 00081 #define MPE_LOG_OK 0 00082 #define MPE_Log_OK MPE_LOG_OK 00083 /* no problems */ 00084 #define MPE_LOG_LOCKED_OUT 1 00085 #define MPE_Log_LOCKED_OUT MPE_LOG_LOCKED_OUT 00086 /* logs are being worked on, cannot insert any new entries */ 00087 #define MPE_LOG_NO_MEMORY 2 00088 #define MPE_Log_NO_MEMORY MPE_LOG_NO_MEMORY 00089 /* could not allocate memory for logging data */ 00090 #define MPE_LOG_FILE_PROB 3 00091 #define MPE_Log_FILE_PROB MPE_LOG_FILE_PROB 00092 /* cound not open file for writing out the logged info */ 00093 #define MPE_LOG_NOT_INITIALIZED 4 00094 #define MPE_Log_NOT_INITIALIZED MPE_LOG_NOT_INITIALIZED 00095 /* logging not initialized */ 00096 #define MPE_LOG_PACK_FAIL 5 00097 #define MPE_Log_PACK_FAIL MPE_LOG_PACK_FAIL 00098 00099 #define MPE_Init_log() ( MPI_SUCCESS ) 00100 #define MPE_Initialized_logging() 1 00101 00102 #define MPE_Describe_state( A, B, C, D ) \ 00103 { \ 00104 if( ( A ) || ( B ) || ( C ) || ( D ) ) \ 00105 { \ 00106 } \ 00107 } 00108 #define MPE_Describe_event( A, B, C ) \ 00109 { \ 00110 if( ( A ) || ( B ) || ( C ) ) \ 00111 { \ 00112 } \ 00113 } 00114 #define MPE_Log_get_event_number() 00115 #define MPE_Log_send( A, B, C ) \ 00116 { \ 00117 if( ( A ) || ( B ) || ( C ) ) \ 00118 { \ 00119 } \ 00120 } 00121 #define MPE_Log_receive( A, B, C ) \ 00122 { \ 00123 if( ( A ) || ( B ) || ( C ) ) \ 00124 { \ 00125 } \ 00126 } 00127 #define MPE_Log_event( A, B, C ) \ 00128 { \ 00129 if( ( A ) || ( B ) || ( C ) ) \ 00130 { \ 00131 } \ 00132 } 00133 #define MPE_Start_log() 00134 #define MPE_Stop_log() 00135 #define MPE_Finish_log( A ) \ 00136 { \ 00137 if( A ) \ 00138 { \ 00139 } \ 00140 } 00141 00142 #endif 00143 00144 #ifdef __cplusplus 00145 00146 namespace moab 00147 { 00148 00149 class MPEState 00150 { 00151 private: 00152 int sid, eid; 00153 bool ok; 00154 00155 public: 00156 MPEState( const char* name, const char* color = 0 ) 00157 : sid( MPE_Log_get_event_number() ), eid( MPE_Log_get_event_number() ), ok( true ) 00158 { 00159 MPE_Describe_state( sid, eid, name, color ? color : "yellow" ); 00160 } 00161 00162 MPEState() : ok( false ) {} 00163 bool valid() const 00164 { 00165 return ok; 00166 } 00167 00168 void start( int data = 0, const char* str = 0 ) 00169 { 00170 MPE_Log_event( sid, data, str ); 00171 } 00172 void start( const char* str, int data = 0 ) 00173 { 00174 MPE_Log_event( sid, data, str ); 00175 } 00176 void start( const char* str, const char* str2 ) 00177 { 00178 MPE_Log_event( sid, 0, ( std::string( str ).append( str2 ) ).c_str() ); 00179 } 00180 void end( int data = 0, const char* str = 0 ) 00181 { 00182 MPE_Log_event( eid, data, str ); 00183 } 00184 void end( const char* str, int data = 0 ) 00185 { 00186 MPE_Log_event( eid, data, str ); 00187 } 00188 }; 00189 00190 class MPEEvent 00191 { 00192 private: 00193 int id; 00194 00195 public: 00196 MPEEvent( const char* name, const char* color = 0 ) : id( MPE_Log_get_event_number() ) 00197 { 00198 MPE_Describe_event( id, name, color ? color : "red" ); 00199 } 00200 void log( int data = 0, const char* str = 0 ) 00201 { 00202 MPE_Log_event( id, data, str ); 00203 } 00204 void log( const char* str, int data = 0 ) 00205 { 00206 MPE_Log_event( id, data, str ); 00207 } 00208 }; 00209 00210 } /* namespace moab */ 00211 00212 #endif /* __cplusplus */ 00213 00214 #endif /* MOAB_MPE_H */