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
[email protected]
http://www.beowulf-underground.org/mailman/listinfo/pvfs2-developers