whoops in line 103 has to be a MPI_COMM_WORLD, I attached the modified MPE.patch
Sorry, Julian
diff -r 9e1df1d6fa98 src/wrappers/src/log_mpi_io.c --- a/src/wrappers/src/log_mpi_io.c Mon Aug 21 12:37:31 2006 +0200 +++ b/src/wrappers/src/log_mpi_io.c Mon Aug 21 14:50:03 2006 +0200 @@ -8,7 +8,6 @@ Also set MPE_MAX_KNOWN_STATES to 180 */ - #define MPE_FILE_OPEN_ID 128 #define MPE_FILE_CLOSE_ID 129 #define MPE_FILE_DELETE_ID 130 @@ -66,6 +65,94 @@ #define MPIO_Request MPI_Request #endif +#define PVFS2_REQUEST_ID + +#ifdef PVFS2_REQUEST_ID +#include <unistd.h> +#include <stdio.h> +#define PVFS2_MAX_HINT 100 + +static int pvfs2_increment_id = 0; +static char hostname[PVFS2_MAX_HINT] = "\0"; + +static int pvfs2_set_request_ID (MPI_Comm comm, MPI_Info * info, const char * io_type, int * added_info){ + char value[PVFS2_MAX_HINT]; + int rank; + + if( hostname[0] == 0 ) + { + int ret; + ret = gethostname(hostname, PVFS2_MAX_HINT); + if(ret < 0) + { + fprintf(stderr, "gethostname could not determine hostname ! " + "Request ID can not transfer hostname to server \n"); + hostname[0] = 0; + } + } + + if( comm != 0 ) + { + MPI_Comm_rank(comm, &rank); + snprintf(value, PVFS2_MAX_HINT, "host:%s,comm:%d,rank:%d,id:%d,op:%s", + hostname, comm, rank, pvfs2_increment_id++,io_type); + } + else + { + MPI_Comm_rank(MPI_COMM_WORLD, &rank); + snprintf(value, PVFS2_MAX_HINT, "host:%s,comm:%d,rank:%d,id:%d,op:%s", + hostname,comm, MPI_COMM_WORLD ,pvfs2_increment_id++,io_type); + } + + if (* info == MPI_INFO_NULL) + { + /* + * Create new info object ! This object has to be freed later with wipe_request_id + */ + *added_info = 1; + MPI_Info_create(info); + } + else + { + *added_info = 0; + } + MPI_Info_set(*info, "REQUEST_ID", value); + + return 0; +} + + +static int pvfs2_set_request_ID_single_shot(MPI_File fh, MPI_Comm comm, const char * io_type){ + int added_info; + MPI_Info info = MPI_INFO_NULL; + pvfs2_set_request_ID(comm, & info, io_type, & added_info); + MPI_File_set_info(fh, info); + MPI_Info_free(& info); + return 0; +} + + +static int pvfs2_wipe_request_ID (MPI_Info * info, int added_info){ + if( added_info) + { + MPI_Info_free(info); + } + return 0; +} + +#define pvfs2_set_request_ID_wrapper(comm, info, io_type, added_info) \ + pvfs2_set_request_ID(comm, info, io_type, added_info) +#define pvfs2_wipe_request_ID_wrapper(info, added_info) \ + pvfs2_wipe_request_ID(info, added_info) +#define pvfs2_set_request_ID_single_shot_wrapper(fh, comm, io_type) \ + pvfs2_set_request_ID_single_shot(fh, comm, io_type) + +#else + #define pvfs2_set_request_ID_wrapper(comm, info, io_type, added_info) + #define pvfs2_wipe_request_ID_wrapper(info, added_info) + #define pvfs2_set_request_ID_single_shot_wrapper(fh, comm, io_type) +#endif + void MPE_Init_mpi_io( void ) { @@ -336,6 +423,8 @@ int MPI_File_open( MPI_Comm comm,char * int MPI_File_open( MPI_Comm comm,char * filename,int amode,MPI_Info info,MPI_File * fh ) { int returnVal; + int added_info; + pvfs2_set_request_ID_wrapper (comm, & info, "open", & added_info); /* MPI_File_open - prototyping replacement for MPI_File_open @@ -349,6 +438,8 @@ int MPI_File_open( MPI_Comm comm,char * MPE_LOG_OFF #endif returnVal = PMPI_File_open( comm, filename, amode, info, fh ); + pvfs2_wipe_request_ID_wrapper(& info, added_info); + #if defined( MAKE_SAFE_PMPI_CALL ) MPE_LOG_ON #endif @@ -362,7 +453,10 @@ int MPI_File_close( MPI_File * fh ) int MPI_File_close( MPI_File * fh ) { int returnVal; - + /* Not really necessary right now, but maybe in the future, pvfs2 close is + empty right now */ + pvfs2_set_request_ID_single_shot_wrapper (*fh, 0, "close"); + /* MPI_File_close - prototyping replacement for MPI_File_close Log the beginning and ending of the time spent in MPI_File_close calls. @@ -375,6 +469,7 @@ int MPI_File_close( MPI_File * fh ) MPE_LOG_OFF #endif returnVal = PMPI_File_close( fh ); + #if defined( MAKE_SAFE_PMPI_CALL ) MPE_LOG_ON #endif @@ -388,7 +483,9 @@ int MPI_File_delete( char * filename,MPI int MPI_File_delete( char * filename,MPI_Info info ) { int returnVal; - + int added_info; + pvfs2_set_request_ID_wrapper (0, & info, "delete", & added_info); + /* MPI_File_delete - prototyping replacement for MPI_File_delete Log the beginning and ending of the time spent in MPI_File_delete calls. @@ -401,6 +498,7 @@ int MPI_File_delete( char * filename,MPI MPE_LOG_OFF #endif returnVal = PMPI_File_delete( filename, info ); + pvfs2_wipe_request_ID_wrapper(& info, added_info); #if defined( MAKE_SAFE_PMPI_CALL ) MPE_LOG_ON #endif @@ -414,7 +512,8 @@ int MPI_File_set_size( MPI_File fh,MPI_ int MPI_File_set_size( MPI_File fh,MPI_Offset size ) { int returnVal; - + pvfs2_set_request_ID_single_shot_wrapper (fh, 0, "set_size"); + /* MPI_File_set_size - prototyping replacement for MPI_File_set_size Log the beginning and ending of the time spent in MPI_File_set_size calls. @@ -440,7 +539,7 @@ int MPI_File_preallocate( MPI_File fh,M int MPI_File_preallocate( MPI_File fh,MPI_Offset size ) { int returnVal; - + pvfs2_set_request_ID_single_shot_wrapper (fh, 0, "preallocate"); /* MPI_File_preallocate - prototyping replacement for MPI_File_preallocate Log the beginning and ending of the time spent in MPI_File_preallocate calls. @@ -466,7 +565,7 @@ int MPI_File_get_size( MPI_File fh,MPI_ int MPI_File_get_size( MPI_File fh,MPI_Offset * size ) { int returnVal; - + pvfs2_set_request_ID_single_shot_wrapper (fh, 0, "get_size"); /* MPI_File_get_size - prototyping replacement for MPI_File_get_size Log the beginning and ending of the time spent in MPI_File_get_size calls. @@ -648,7 +747,8 @@ int MPI_File_read_at( MPI_File fh,MPI_O int MPI_File_read_at( MPI_File fh,MPI_Offset offset,void * buf,int count,MPI_Datatype datatype,MPI_Status * status ) { int returnVal; - + pvfs2_set_request_ID_single_shot_wrapper (fh, 0, "read_at"); + /* MPI_File_read_at - prototyping replacement for MPI_File_read_at Log the beginning and ending of the time spent in MPI_File_read_at calls. @@ -674,7 +774,8 @@ int MPI_File_read_at_all( MPI_File fh,M int MPI_File_read_at_all( MPI_File fh,MPI_Offset offset,void * buf,int count,MPI_Datatype datatype,MPI_Status * status ) { int returnVal; - + pvfs2_set_request_ID_single_shot_wrapper (fh, 0, "read_at_all"); + /* MPI_File_read_at_all - prototyping replacement for MPI_File_read_at_all Log the beginning and ending of the time spent in MPI_File_read_at_all calls. @@ -700,7 +801,8 @@ int MPI_File_write_at( MPI_File fh,MPI_ int MPI_File_write_at( MPI_File fh,MPI_Offset offset,void * buf,int count,MPI_Datatype datatype,MPI_Status * status ) { int returnVal; - + pvfs2_set_request_ID_single_shot_wrapper (fh, 0, "write_at"); + /* MPI_File_write_at - prototyping replacement for MPI_File_write_at Log the beginning and ending of the time spent in MPI_File_write_at calls. @@ -726,7 +828,7 @@ int MPI_File_write_at_all( MPI_File fh, int MPI_File_write_at_all( MPI_File fh,MPI_Offset offset,void * buf,int count,MPI_Datatype datatype,MPI_Status * status ) { int returnVal; - + pvfs2_set_request_ID_single_shot_wrapper (fh, 0, "write_at_all"); /* MPI_File_write_at_all - prototyping replacement for MPI_File_write_at_all Log the beginning and ending of the time spent in MPI_File_write_at_all calls. @@ -752,7 +854,8 @@ int MPI_File_iread_at( MPI_File fh,MPI_ int MPI_File_iread_at( MPI_File fh,MPI_Offset offset,void * buf,int count,MPI_Datatype datatype,MPIO_Request * request ) { int returnVal; - + pvfs2_set_request_ID_single_shot_wrapper (fh, 0, "iread_at"); + /* MPI_File_iread_at - prototyping replacement for MPI_File_iread_at Log the beginning and ending of the time spent in MPI_File_iread_at calls. @@ -778,7 +881,7 @@ int MPI_File_iwrite_at( MPI_File fh,MPI int MPI_File_iwrite_at( MPI_File fh,MPI_Offset offset,void * buf,int count,MPI_Datatype datatype,MPIO_Request * request ) { int returnVal; - + pvfs2_set_request_ID_single_shot_wrapper (fh, 0, "iwrite_at"); /* MPI_File_iwrite_at - prototyping replacement for MPI_File_iwrite_at Log the beginning and ending of the time spent in MPI_File_iwrite_at calls. @@ -804,7 +907,7 @@ int MPI_File_read( MPI_File fh,void * b int MPI_File_read( MPI_File fh,void * buf,int count,MPI_Datatype datatype,MPI_Status * status ) { int returnVal; - + pvfs2_set_request_ID_single_shot_wrapper (fh, 0, "read"); /* MPI_File_read - prototyping replacement for MPI_File_read Log the beginning and ending of the time spent in MPI_File_read calls. @@ -831,6 +934,7 @@ int MPI_File_read_all( MPI_File fh,void { int returnVal; + pvfs2_set_request_ID_single_shot_wrapper (fh, 0, "read_all"); /* MPI_File_read_all - prototyping replacement for MPI_File_read_all Log the beginning and ending of the time spent in MPI_File_read_all calls. @@ -856,7 +960,8 @@ int MPI_File_write( MPI_File fh,void * int MPI_File_write( MPI_File fh,void * buf,int count,MPI_Datatype datatype,MPI_Status * status ) { int returnVal; - + pvfs2_set_request_ID_single_shot_wrapper (fh, 0, "write"); + /* MPI_File_write - prototyping replacement for MPI_File_write Log the beginning and ending of the time spent in MPI_File_write calls. @@ -882,7 +987,8 @@ int MPI_File_write_all( MPI_File fh,voi int MPI_File_write_all( MPI_File fh,void * buf,int count,MPI_Datatype datatype,MPI_Status * status ) { int returnVal; - + pvfs2_set_request_ID_single_shot_wrapper (fh, 0, "write_all"); + /* MPI_File_write_all - prototyping replacement for MPI_File_write_all Log the beginning and ending of the time spent in MPI_File_write_all calls. @@ -908,7 +1014,7 @@ int MPI_File_iread( MPI_File fh,void * int MPI_File_iread( MPI_File fh,void * buf,int count,MPI_Datatype datatype,MPIO_Request * request ) { int returnVal; - + pvfs2_set_request_ID_single_shot_wrapper (fh, 0, "iread"); /* MPI_File_iread - prototyping replacement for MPI_File_iread Log the beginning and ending of the time spent in MPI_File_iread calls. @@ -934,7 +1040,7 @@ int MPI_File_iwrite( MPI_File fh,void * int MPI_File_iwrite( MPI_File fh,void * buf,int count,MPI_Datatype datatype,MPIO_Request * request ) { int returnVal; - + pvfs2_set_request_ID_single_shot_wrapper (fh, 0, "iwrite"); /* MPI_File_iwrite - prototyping replacement for MPI_File_iwrite Log the beginning and ending of the time spent in MPI_File_iwrite calls. @@ -960,7 +1066,11 @@ int MPI_File_seek( MPI_File fh,MPI_Offs int MPI_File_seek( MPI_File fh,MPI_Offset offset,int whence ) { int returnVal; - + /* + * Not needed for pvfs2 right now, but added + */ + pvfs2_set_request_ID_single_shot_wrapper (fh, 0, "seek"); + /* MPI_File_seek - prototyping replacement for MPI_File_seek Log the beginning and ending of the time spent in MPI_File_seek calls. @@ -1038,7 +1148,7 @@ int MPI_File_read_shared( MPI_File fh,v int MPI_File_read_shared( MPI_File fh,void * buf,int count,MPI_Datatype datatype,MPI_Status * status ) { int returnVal; - + pvfs2_set_request_ID_single_shot_wrapper (fh, 0, "read_shared"); /* MPI_File_read_shared - prototyping replacement for MPI_File_read_shared Log the beginning and ending of the time spent in MPI_File_read_shared calls. @@ -1064,7 +1174,8 @@ int MPI_File_write_shared( MPI_File fh, int MPI_File_write_shared( MPI_File fh,void * buf,int count,MPI_Datatype datatype,MPI_Status * status ) { int returnVal; - + pvfs2_set_request_ID_single_shot_wrapper (fh, 0, "write_shared"); + /* MPI_File_write_shared - prototyping replacement for MPI_File_write_shared Log the beginning and ending of the time spent in MPI_File_write_shared calls. @@ -1090,7 +1201,8 @@ int MPI_File_iread_shared( MPI_File fh, int MPI_File_iread_shared( MPI_File fh,void * buf,int count,MPI_Datatype datatype,MPIO_Request * request ) { int returnVal; - + pvfs2_set_request_ID_single_shot_wrapper (fh, 0, "iread_shared"); + /* MPI_File_iread_shared - prototyping replacement for MPI_File_iread_shared Log the beginning and ending of the time spent in MPI_File_iread_shared calls. @@ -1116,7 +1228,8 @@ int MPI_File_iwrite_shared( MPI_File fh int MPI_File_iwrite_shared( MPI_File fh,void * buf,int count,MPI_Datatype datatype,MPIO_Request * request ) { int returnVal; - + pvfs2_set_request_ID_single_shot_wrapper (fh, 0, "iwrite_shared"); + /* MPI_File_iwrite_shared - prototyping replacement for MPI_File_iwrite_shared Log the beginning and ending of the time spent in MPI_File_iwrite_shared calls. @@ -1142,7 +1255,8 @@ int MPI_File_read_ordered( MPI_File fh, int MPI_File_read_ordered( MPI_File fh,void * buf,int count,MPI_Datatype datatype,MPI_Status * status ) { int returnVal; - + pvfs2_set_request_ID_single_shot_wrapper (fh, 0, "read_ordered"); + /* MPI_File_read_ordered - prototyping replacement for MPI_File_read_ordered Log the beginning and ending of the time spent in MPI_File_read_ordered calls. @@ -1168,7 +1282,7 @@ int MPI_File_write_ordered( MPI_File fh int MPI_File_write_ordered( MPI_File fh,void * buf,int count,MPI_Datatype datatype,MPI_Status * status ) { int returnVal; - + pvfs2_set_request_ID_single_shot_wrapper (fh, 0, "write_ordered"); /* MPI_File_write_ordered - prototyping replacement for MPI_File_write_ordered Log the beginning and ending of the time spent in MPI_File_write_ordered calls. @@ -1194,7 +1308,11 @@ int MPI_File_seek_shared( MPI_File fh,M int MPI_File_seek_shared( MPI_File fh,MPI_Offset offset,int whence ) { int returnVal; - + /* + * Not needed right now in pvfs2 + */ + pvfs2_set_request_ID_single_shot_wrapper (fh, 0, "seek_shared"); + /* MPI_File_seek_shared - prototyping replacement for MPI_File_seek_shared Log the beginning and ending of the time spent in MPI_File_seek_shared calls. @@ -1220,7 +1338,11 @@ int MPI_File_get_position_shared( MPI_Fi int MPI_File_get_position_shared( MPI_File fh,MPI_Offset * offset ) { int returnVal; - + /* + * Not needed right now in pvfs2 + */ + pvfs2_set_request_ID_single_shot_wrapper (fh, 0, "get_position_shared"); + /* MPI_File_get_position_shared - prototyping replacement for MPI_File_get_position_shared Log the beginning and ending of the time spent in MPI_File_get_position_shared calls. @@ -1246,7 +1368,8 @@ int MPI_File_read_at_all_begin( MPI_File int MPI_File_read_at_all_begin( MPI_File fh,MPI_Offset offset,void * buf,int count,MPI_Datatype datatype ) { int returnVal; - + pvfs2_set_request_ID_single_shot_wrapper (fh, 0, "read_at_all_begin"); + /* MPI_File_read_at_all_begin - prototyping replacement for MPI_File_read_at_all_begin Log the beginning and ending of the time spent in MPI_File_read_at_all_begin calls. @@ -1272,7 +1395,8 @@ int MPI_File_read_at_all_end( MPI_File int MPI_File_read_at_all_end( MPI_File fh,void * buf,MPI_Status * status ) { int returnVal; - + pvfs2_set_request_ID_single_shot_wrapper (fh, 0, "read_at_all_end"); + /* MPI_File_read_at_all_end - prototyping replacement for MPI_File_read_at_all_end Log the beginning and ending of the time spent in MPI_File_read_at_all_end calls. @@ -1298,7 +1422,8 @@ int MPI_File_write_at_all_begin( MPI_Fil int MPI_File_write_at_all_begin( MPI_File fh,MPI_Offset offset,void * buf,int count,MPI_Datatype datatype ) { int returnVal; - + pvfs2_set_request_ID_single_shot_wrapper (fh, 0, "write_at_all_begin"); + /* MPI_File_write_at_all_begin - prototyping replacement for MPI_File_write_at_all_begin Log the beginning and ending of the time spent in MPI_File_write_at_all_begin calls. @@ -1324,7 +1449,8 @@ int MPI_File_write_at_all_end( MPI_File int MPI_File_write_at_all_end( MPI_File fh,void * buf,MPI_Status * status ) { int returnVal; - + pvfs2_set_request_ID_single_shot_wrapper (fh, 0, "write_at_all_end"); + /* MPI_File_write_at_all_end - prototyping replacement for MPI_File_write_at_all_end Log the beginning and ending of the time spent in MPI_File_write_at_all_end calls. @@ -1350,7 +1476,8 @@ int MPI_File_read_all_begin( MPI_File f int MPI_File_read_all_begin( MPI_File fh,void * buf,int count,MPI_Datatype datatype ) { int returnVal; - + pvfs2_set_request_ID_single_shot_wrapper (fh, 0, "read_all_begin"); + /* MPI_File_read_all_begin - prototyping replacement for MPI_File_read_all_begin Log the beginning and ending of the time spent in MPI_File_read_all_begin calls. @@ -1376,7 +1503,8 @@ int MPI_File_read_all_end( MPI_File fh, int MPI_File_read_all_end( MPI_File fh,void * buf,MPI_Status * status ) { int returnVal; - + pvfs2_set_request_ID_single_shot_wrapper (fh, 0, "read_all_end"); + /* MPI_File_read_all_end - prototyping replacement for MPI_File_read_all_end Log the beginning and ending of the time spent in MPI_File_read_all_end calls. @@ -1402,6 +1530,7 @@ int MPI_File_write_all_begin( MPI_File int MPI_File_write_all_begin( MPI_File fh,void * buf,int count,MPI_Datatype datatype ) { int returnVal; + pvfs2_set_request_ID_single_shot_wrapper (fh, 0, "write_all_begin"); /* MPI_File_write_all_begin - prototyping replacement for MPI_File_write_all_begin @@ -1428,7 +1557,8 @@ int MPI_File_write_all_end( MPI_File fh int MPI_File_write_all_end( MPI_File fh,void * buf,MPI_Status * status ) { int returnVal; - + pvfs2_set_request_ID_single_shot_wrapper (fh, 0, "write_all_end"); + /* MPI_File_write_all_end - prototyping replacement for MPI_File_write_all_end Log the beginning and ending of the time spent in MPI_File_write_all_end calls. @@ -1454,7 +1584,8 @@ int MPI_File_read_ordered_begin( MPI_Fil int MPI_File_read_ordered_begin( MPI_File fh,void * buf,int count,MPI_Datatype datatype ) { int returnVal; - + pvfs2_set_request_ID_single_shot_wrapper (fh, 0, "read_ordered_begin"); + /* MPI_File_read_ordered_begin - prototyping replacement for MPI_File_read_ordered_begin Log the beginning and ending of the time spent in MPI_File_read_ordered_begin calls. @@ -1480,7 +1611,8 @@ int MPI_File_read_ordered_end( MPI_File int MPI_File_read_ordered_end( MPI_File fh,void * buf,MPI_Status * status ) { int returnVal; - + pvfs2_set_request_ID_single_shot_wrapper (fh, 0, "read_ordered_end"); + /* MPI_File_read_ordered_end - prototyping replacement for MPI_File_read_ordered_end Log the beginning and ending of the time spent in MPI_File_read_ordered_end calls. @@ -1506,7 +1638,7 @@ int MPI_File_write_ordered_begin( MPI_Fi int MPI_File_write_ordered_begin( MPI_File fh,void * buf,int count,MPI_Datatype datatype ) { int returnVal; - + pvfs2_set_request_ID_single_shot_wrapper (fh, 0, "write_ordered_begin"); /* MPI_File_write_ordered_begin - prototyping replacement for MPI_File_write_ordered_begin Log the beginning and ending of the time spent in MPI_File_write_ordered_begin calls. @@ -1532,7 +1664,7 @@ int MPI_File_write_ordered_end( MPI_File int MPI_File_write_ordered_end( MPI_File fh,void * buf,MPI_Status * status ) { int returnVal; - + pvfs2_set_request_ID_single_shot_wrapper (fh, 0, "write_ordered_end"); /* MPI_File_write_ordered_end - prototyping replacement for MPI_File_write_ordered_end Log the beginning and ending of the time spent in MPI_File_write_ordered_end calls. @@ -1636,7 +1768,8 @@ int MPI_File_sync( MPI_File fh ) int MPI_File_sync( MPI_File fh ) { int returnVal; - + pvfs2_set_request_ID_single_shot_wrapper (fh, 0, "sync"); + /* MPI_File_sync - prototyping replacement for MPI_File_sync Log the beginning and ending of the time spent in MPI_File_sync calls.
_______________________________________________ Pvfs2-developers mailing list Pvfs2-developers@beowulf-underground.org http://www.beowulf-underground.org/mailman/listinfo/pvfs2-developers