summaryrefslogtreecommitdiffstats
path: root/pablo/PabloHDF.c
diff options
context:
space:
mode:
authorDan Wells <dwells@cs.uiuc.edu>2001-07-05 15:07:00 (GMT)
committerDan Wells <dwells@cs.uiuc.edu>2001-07-05 15:07:00 (GMT)
commit5fa81dec82fee408f233a4d9df4b3367c16745a0 (patch)
tree66da37d2f5d49846cbc30b980c09c1f4dcc4299f /pablo/PabloHDF.c
parentd9d71b06e46f5b52eec44d8a86b0394de49940cf (diff)
downloadhdf5-5fa81dec82fee408f233a4d9df4b3367c16745a0.zip
hdf5-5fa81dec82fee408f233a4d9df4b3367c16745a0.tar.gz
hdf5-5fa81dec82fee408f233a4d9df4b3367c16745a0.tar.bz2
[svn-r4110]
Purpose: feature Description: allows the option of building the library libhdf-inst.a so that it can link with either the Pablo Trace Libraries or with the Pablo Performance Capture Facility (PCF) Solution: Added code for conditional compilation using the PCF_BUILD flag. When the library is made, the user can specify PABLO_BUILD=PCF which will cause the -DPCF_BUILD to be passed to the compiler. Platforms tested: Solaris, IRIX64
Diffstat (limited to 'pablo/PabloHDF.c')
-rw-r--r--pablo/PabloHDF.c1464
1 files changed, 241 insertions, 1223 deletions
diff --git a/pablo/PabloHDF.c b/pablo/PabloHDF.c
index d78cf07..aa11d85 100644
--- a/pablo/PabloHDF.c
+++ b/pablo/PabloHDF.c
@@ -112,6 +112,10 @@ int HDFtrace3OPEN( const char *, int, mode_t );
typedef unsigned int mode_t;
#endif
+#ifdef H5_HAVE_PARALLEL
+#define HAVE_MPIO
+#endif
+
int OUTPUT_SWITCH = 1;
int *procTrace;
extern void preInitIOTrace( void );
@@ -126,11 +130,27 @@ extern void preInitIOTrace( void );
#define ID_timeStamp 9999
#define DUMMY_HDF 10000
-#ifdef H5_HAVE_PARALLEL
-#include "mpi.h"
-int HDF_get_Bytes( MPI_Datatype datatype, int count );
-#endif /* H5_HAVE_PARALLEL*/
+extern char HDFprocNames[][40] = {
+"noName",
+"noName",
+"noName",
+"noName",
+"noName",
+#include "HDFentryNames.h"
+"HDF_LAST_ENTRY"
+};
+
+void startHDFtraceEvent (int );
+void endHDFtraceEvent (int , int , char *, int );
+
+#ifdef TRACELIB_BUILD
+#undef PCF_BUILD
+#endif
+#ifdef PCF_BUILD
+void hdfCaptureInit( const char* name, int captureType );
+void hdfCaptureEnd( void );
+#else
void HDFinitTrace_RT ( const char *, int );
void HDFinitTrace_SDDF ( const char *, int );
void hinittracex_ ( char [], int *, int[], int *,unsigned * );
@@ -138,17 +158,13 @@ void hdfendtrace_ ( void ) ;
void HDFendTrace_RT (int);
void HDFendTrace_SDDF(int);
void HDFfinalTimeStamp( void );
-void startHDFtraceEvent (int );
-int computeProcMask (int eventID);
-int computePacketTag(int eventID);
-void endHDFtraceEvent (int , int , char *, int );
void HDFtraceEvent_RT ( int , HDFsetInfo *, unsigned );
void HDFtraceIOEvent( int , void *, unsigned );
extern int IOtracingEnabled;
extern int suppressMPIOtrace;
char *hdfRecordPointer;
-double WriteTotals = 0.0;
-double ReadTotals = 0.0;
+#endif
+
/*======================================================================*
// NAME *
// HDFinitTrace -- initialize HDF tracing *
@@ -164,6 +180,7 @@ double ReadTotals = 0.0;
// RETURNS *
// None. *
//======================================================================*/
+#ifndef PCF_BUILD
/*======================================================================*
// fortran to C interface. *
// This is called from hdfinittracef_ *
@@ -249,9 +266,12 @@ hinittracex_( char *file,
exit (-1);
}
}
-void HDFinitTrace( const char *traceFileName, int id_flag, ... )
+#endif /* PCF_BUILD */
+void
+HDFinitTrace( const char *traceFileName, int id_flag, ... )
{
- int i, nIDs;
+ int i;
+ int nIDs;
va_list ap;
/*===================================================================*
@@ -280,7 +300,7 @@ void HDFinitTrace( const char *traceFileName, int id_flag, ... )
//===================================================================*/
nIDs = 0;
va_start( ap, id_flag );
- while ( id_flag > NO_TRACE )
+ while ( id_flag > LAST_TRACE_TYPE )
{
procTrace[id_flag] = 1;
++nIDs;
@@ -298,6 +318,9 @@ void HDFinitTrace( const char *traceFileName, int id_flag, ... )
procTrace[i] = 1;
}
}
+#ifdef PCF_BUILD
+ hdfCaptureInit( traceFileName, OUTPUT_SWITCH );
+#else
suppressMPIOtrace = TRUE;
if ( OUTPUT_SWITCH == RUNTIME_TRACE
|| OUTPUT_SWITCH == MPI_RUNTIME_TRACE )
@@ -324,6 +347,7 @@ void HDFinitTrace( const char *traceFileName, int id_flag, ... )
fprintf(stderr," Exiting Program. <<\n");
exit (-1);
}
+#endif /* PCF_BUILD */
}
/*======================================================================*
// NAME *
@@ -339,6 +363,9 @@ void hdfendtrace_( void )
}
void HDFendTrace(void)
{
+#ifdef PCF_BUILD
+ hdfCaptureEnd();
+#else
if ( OUTPUT_SWITCH == RUNTIME_TRACE
|| OUTPUT_SWITCH == MPI_RUNTIME_TRACE )
{
@@ -349,9 +376,13 @@ void HDFendTrace(void)
{
HDFendTrace_RT( OUTPUT_SWITCH );
}
+#endif /* PCF_BUILD */
}
void startHDFtraceEvent(int eventID)
{
+#ifdef PCF_BUILD
+ traceHDFentryEvent( eventID ) ;
+#else
if ( OUTPUT_SWITCH == RUNTIME_TRACE
|| OUTPUT_SWITCH == MPI_RUNTIME_TRACE )
{
@@ -361,9 +392,13 @@ void startHDFtraceEvent(int eventID)
{
HDFtraceEvent_RT( eventID, NULL, 0 ) ;
}
+#endif /* PCF_BUILD */
}
void endHDFtraceEvent(int eventID, int setID, char *setName, int IDtype )
{
+#ifdef PCF_BUILD
+ traceHDFexitEvent( eventID );
+#else
HDFsetInfo info;
info.setID = setID;
info.setName = setName;
@@ -383,7 +418,43 @@ void endHDFtraceEvent(int eventID, int setID, char *setName, int IDtype )
fprintf(stderr,"invalid OUTPUT_SWITCH %d, IDtype = %d\n",
OUTPUT_SWITCH, IDtype ) ;
}
+#endif /* PCF_BUILD */
+}
+#ifdef PCF_BUILD
+void
+hdfCaptureInit( const char* name, int captureType )
+{
+ int procNum;
+ HDF_get_NodeNum( &procNum );
+ basePerformanceInit( name, procNum );
+ genericBaseInit( captureType, procNum );
+ unixIObaseInit( captureType, procNum );
+#ifdef HAVE_MPIO
+ mpiIObaseInit( captureType, procNum );
+#endif
+ hdfBaseInit( captureType,
+ procNum,
+ ID_HDF_Last_Entry,
+ HDFprocNames );
}
+void
+hdfCaptureEnd( void )
+{
+ int i;
+ timeStamp();
+ for ( i = 0; i < NUM_HDF_IDS; ++i )
+ {
+ procTrace[i] = 0;
+ }
+ hdfBaseEnd();
+#ifdef HAVE_MPIO
+ mpiIObaseEnd();
+#endif
+ unixIObaseEnd();
+ genericBaseEnd();
+ basePerformanceEnd();
+}
+#endif /* PCF_BUILD */
/*****************************************************************************/
/* The HDFtraceXXXX routines are substitutes for the standard I/O routines. */
/* When libhdf5-inst.a is compiled, macros in HDFTrace.h substitute the name */
@@ -401,9 +472,13 @@ void endHDFtraceEvent(int eventID, int setID, char *setName, int IDtype )
/*+ Mode = -1 +*/
/*+ +*/
/*****************************************************************************/
-FILE*HDFtraceFOPEN( const char *filename, const char *type )
+FILE*
+HDFtraceFOPEN( const char *filename, const char *type )
{
FILE *fp;
+#ifdef PCF_BUILD
+ fp = (FILE *)traceFOPEN( filename, type );
+#else
int fd, id;
int flags = 0;
struct open_args openArgs;
@@ -471,7 +546,7 @@ FILE*HDFtraceFOPEN( const char *filename, const char *type )
{
HDFtraceIOEvent( fopenEndID, (void *) &id, int_SIZE );
}
-
+#endif /* PCF_BUILD */
return( fp );
}
@@ -485,8 +560,11 @@ FILE*HDFtraceFOPEN( const char *filename, const char *type )
int
HDFtraceCREAT( const char *path, mode_t mode )
{
- struct open_args openArgs;
int fd;
+#ifdef PCF_BUILD
+ fd = traceCREAT( path, mode );
+#else
+ struct open_args openArgs;
int id;
if ( IOtracingEnabled ) {
@@ -503,7 +581,7 @@ HDFtraceCREAT( const char *path, mode_t mode )
if ( IOtracingEnabled ) {
HDFtraceIOEvent( openEndID, (void *) &id, int_SIZE );
}
-
+#endif /* PCF_BUILD */
return( fd );
}
@@ -517,9 +595,13 @@ HDFtraceCREAT( const char *path, mode_t mode )
/*+ record Flush (fflushBeginID) +*/
/*+ +*/
/*****************************************************************************/
-int HDFtraceFFLUSH( FILE *stream )
+int
+HDFtraceFFLUSH( FILE *stream )
{
int ret;
+#ifdef PCF_BUILD
+ ret = traceFFLUSH( stream );
+#else
int id;
int fd;
@@ -555,7 +637,7 @@ int HDFtraceFFLUSH( FILE *stream )
* is moved to EOF if it isn't there already. We don't account for that
* in our file positioning information.
*/
-
+#endif /* PCF_BUILD */
return( ret );
}
@@ -573,6 +655,9 @@ int
HDFtraceFCLOSE( FILE *stream )
{
int ret;
+#ifdef PCF_BUILD
+ ret = traceFCLOSE( stream );
+#else
int id;
int fd = fileno( stream );
@@ -588,6 +673,7 @@ HDFtraceFCLOSE( FILE *stream )
{
HDFtraceIOEvent( fcloseEndID, (void *) 0, 0 );
}
+#endif /* PCF_BUILD */
return( ret );
}
@@ -602,8 +688,11 @@ HDFtraceFCLOSE( FILE *stream )
int
HDFtrace3OPEN( const char *path, int flags, mode_t mode )
{
- struct open_args openArgs;
int fd;
+#ifdef PCF_BUILD
+ fd = trace3OPEN( path, flags, mode );
+#else
+ struct open_args openArgs;
int id;
if ( IOtracingEnabled )
@@ -622,6 +711,7 @@ HDFtrace3OPEN( const char *path, int flags, mode_t mode )
{
HDFtraceIOEvent( openEndID, (char *) &id, int_SIZE );
}
+#endif /* PCF_BUILD */
return( fd );
}
@@ -637,6 +727,9 @@ int
HDFtraceCLOSE( int fd )
{
int ret;
+#ifdef PCF_BUILD
+ ret = traceCLOSE( fd );
+#else
int id;
if ( IOtracingEnabled )
@@ -651,6 +744,7 @@ HDFtraceCLOSE( int fd )
{
HDFtraceIOEvent( closeEndID, (void *) 0, 0 );
}
+#endif /* PCF_BUILD */
return( ret );
}
@@ -670,8 +764,11 @@ HDFtraceCLOSE( int fd )
ssize_t
HDFtraceREAD( int fd, void *buf, size_t nbyte )
{
- struct read_write_args readArgs;
ssize_t ret;
+#ifdef PCF_BUILD
+ ret = traceREAD( fd, buf, nbyte );
+#else
+ struct read_write_args readArgs;
int bytes;
CLOCK t1, t2, incDur;
@@ -688,7 +785,6 @@ HDFtraceREAD( int fd, void *buf, size_t nbyte )
ret = read( fd, buf, nbyte );
t2 = getClock();
incDur = clockSubtract(t2,t1);
- ReadTotals += clockToSeconds( incDur );
if ( IOtracingEnabled )
{
@@ -702,6 +798,7 @@ HDFtraceREAD( int fd, void *buf, size_t nbyte )
}
HDFtraceIOEvent( readEndID, (void *) &bytes, int_SIZE );
}
+#endif /* PCF_BUILD */
return( ret );
}
@@ -719,8 +816,11 @@ HDFtraceREAD( int fd, void *buf, size_t nbyte )
size_t
HDFtraceFREAD( void *ptr, size_t size, size_t nitems, FILE *stream )
{
- struct read_write_args readArgs;
size_t ret;
+#ifdef PCF_BUILD
+ ret = traceFREAD( ptr, size, nitems, stream );
+#else
+ struct read_write_args readArgs;
int nbytes;
int fd = fileno( stream );
CLOCK t1, t2, incDur;
@@ -737,7 +837,6 @@ HDFtraceFREAD( void *ptr, size_t size, size_t nitems, FILE *stream )
ret = fread( ptr, size, nitems, stream );
t2 = getClock();
incDur = clockSubtract(t2,t1);
- ReadTotals += clockToSeconds( incDur );
if ( IOtracingEnabled )
{
@@ -751,11 +850,10 @@ HDFtraceFREAD( void *ptr, size_t size, size_t nitems, FILE *stream )
}
HDFtraceIOEvent( freadEndID, (void *) &nbytes, int_SIZE );
}
+#endif /* PCF_BUILD */
return( ret );
}
-
-
/*****************************************************************************/
/*+ Seek routines +*/
/*+ ------------- +*/
@@ -769,8 +867,11 @@ HDFtraceFREAD( void *ptr, size_t size, size_t nitems, FILE *stream )
off_t
HDFtraceLSEEK( int fd, off_t offset, int whence )
{
- struct seek_args seekArgs;
off_t ret;
+#ifdef PCF_BUILD
+ ret = traceLSEEK( fd, offset, whence );
+#else
+ struct seek_args seekArgs;
long arg;
if ( IOtracingEnabled )
@@ -789,6 +890,7 @@ HDFtraceLSEEK( int fd, off_t offset, int whence )
arg = (long) ret;
HDFtraceIOEvent( lseekEndID, (void *)&arg, long_SIZE );
}
+#endif /* PCF_BUILD */
return( ret );
}
@@ -803,8 +905,11 @@ HDFtraceLSEEK( int fd, off_t offset, int whence )
int
HDFtraceFSEEK( FILE *stream, long offset, int whence )
{
- struct seek_args seekArgs;
int ret;
+#ifdef PCF_BUILD
+ ret = traceFSEEK( stream, offset, whence );
+#else
+ struct seek_args seekArgs;
long arg;
int fd = fileno( stream );
@@ -824,6 +929,7 @@ HDFtraceFSEEK( FILE *stream, long offset, int whence )
arg = ftell( stream );
HDFtraceIOEvent( fseekEndID, (void *)&arg, long_SIZE );
}
+#endif /* PCF_BUILD */
return( ret );
}
@@ -839,8 +945,11 @@ HDFtraceFSEEK( FILE *stream, long offset, int whence )
int
HDFtraceFSETPOS( FILE stream, const fpos_t *position )
{
- struct seek_args seekArgs;
int ret;
+#ifdef PCF_BUILD
+ ret = traceFSETPOS( stream, position );
+#else
+ struct seek_args seekArgs;
long arg;
int fd = fileno( stream );
@@ -860,6 +969,7 @@ HDFtraceFSETPOS( FILE stream, const fpos_t *position )
arg = (long) *position;
HDFtraceIOEvent( fsetposEndID, (void *)&arg, long_SIZE );
}
+#endif /* PCF_BUILD */
return( ret );
}
@@ -874,10 +984,14 @@ HDFtraceFSETPOS( FILE stream, const fpos_t *position )
/*+ Whence = SEEK_SET +*/
/*+ +*/
/*****************************************************************************/
-void HDFtraceREWIND( FILE *stream )
+void
+HDFtraceREWIND( FILE *stream )
{
- struct seek_args seekArgs;
+#ifdef PCF_BUILD
+ traceREWIND( stream );
+#else
long arg;
+ struct seek_args seekArgs;
int fd = fileno( stream );
if ( IOtracingEnabled )
@@ -896,6 +1010,7 @@ void HDFtraceREWIND( FILE *stream )
arg = 0;
HDFtraceIOEvent( rewindEndID, (void *)&arg, long_SIZE );
}
+#endif /* PCF_BUILD */
return;
}
@@ -912,10 +1027,14 @@ void HDFtraceREWIND( FILE *stream )
/*+ Cause = -1 +*/
/*+ +*/
/*****************************************************************************/
-ssize_t HDFtraceWRITE( int fd, const void *buf, size_t nbyte )
+ssize_t
+HDFtraceWRITE( int fd, const void *buf, size_t nbyte )
{
- struct read_write_args writeArgs;
ssize_t ret;
+#ifdef PCF_BUILD
+ ret = traceWRITE( fd, buf, nbyte );
+#else
+ struct read_write_args writeArgs;
int bytes;
CLOCK t1, t2, incDur;
@@ -932,7 +1051,6 @@ ssize_t HDFtraceWRITE( int fd, const void *buf, size_t nbyte )
ret = write( fd, buf, nbyte );
t2 = getClock();
incDur = clockSubtract(t2,t1);
- WriteTotals += clockToSeconds( incDur );
if ( IOtracingEnabled )
{
@@ -946,6 +1064,7 @@ ssize_t HDFtraceWRITE( int fd, const void *buf, size_t nbyte )
}
HDFtraceIOEvent( writeEndID, (void *) &bytes, int_SIZE );
}
+#endif /* PCF_BUILD */
return( ret );
}
@@ -963,8 +1082,11 @@ size_t
HDFtraceFWRITE(const void *ptr,size_t size,size_t nitems,FILE *stream )
{
- struct read_write_args writeArgs;
size_t ret;
+#ifdef PCF_BUILD
+ ret = traceFWRITE( ptr, size, nitems, stream );
+#else
+ struct read_write_args writeArgs;
int nbytes;
int fd = fileno( stream );
CLOCK t1, t2, incDur;
@@ -982,8 +1104,6 @@ HDFtraceFWRITE(const void *ptr,size_t size,size_t nitems,FILE *stream )
ret = fwrite( ptr, size, nitems, stream );
t2 = getClock();
incDur = clockSubtract(t2,t1);
- WriteTotals += clockToSeconds( incDur );
-
if ( IOtracingEnabled )
{
@@ -997,27 +1117,29 @@ HDFtraceFWRITE(const void *ptr,size_t size,size_t nitems,FILE *stream )
}
HDFtraceIOEvent( fwriteEndID, (void *) &nbytes, int_SIZE );
}
+#endif /* PCF_BUILD */
return( ret );
}
-
/*****************************************************************************/
/*+ Routine: int HDFtracePUTS( char *s ) +*/
-/*+ substitute for puts() +*/
+/*+ substitute for puts() +*/
/*+ generates fwriteBeginID, fwriteEndID +*/
-/*+ record Write (fwriteBeginID) +*/
-/*+ Number Variables = 1 +*/
-/*+ Cause = -1 +*/
-/*+ +*/
+/*+ record Write (fwriteBeginID) +*/
+/*+ Number Variables = 1 +*/
+/*+ Cause = -1 +*/
+/*+ +*/
/*****************************************************************************/
-int
-HDFtracePUTS( char *s )
+int
+HDFtracePUTS( const char *s )
{
- struct read_write_args writeArgs;
int ret;
int fd = fileno( stdout );
-
- if ( IOtracingEnabled )
+#ifdef PCF_BUILD
+ tracePUTS( s );
+#else
+ struct read_write_args writeArgs;
+ if ( IOtracingEnabled )
{
writeArgs.fileID = c_mappedID( fd );
writeArgs.numVariables = 1;
@@ -1028,14 +1150,15 @@ HDFtracePUTS( char *s )
ret = puts( s );
- if ( IOtracingEnabled )
+ if ( IOtracingEnabled )
{
HDFtraceIOEvent( fwriteEndID, (void *) &ret, int_SIZE );
}
+#endif
return( ret );
}
-
+
/*****************************************************************************/
/*+ Routine: int HDFtraceFPUTC( int c, FILE *stream ) +*/
/*+ substitute for fputc() +*/
@@ -1048,8 +1171,11 @@ HDFtracePUTS( char *s )
int
HDFtraceFPUTC( int c, FILE *stream )
{
- struct read_write_args writeArgs;
int ret;
+#ifdef PCF_BUILD
+ ret = traceFPUTC( c, stream );
+#else
+ struct read_write_args writeArgs;
int nbytes = char_SIZE;
int fd = fileno( stream );
@@ -1072,72 +1198,92 @@ HDFtraceFPUTC( int c, FILE *stream )
HDFtraceIOEvent( fwriteEndID, (void *) &nbytes, int_SIZE );
}
}
-
- return( ret );
+#endif /* PCF_BUILD */
+ return( ret );
}
/*****************************************************************************/
/*+ Routine: int HDFtraceFPUTS( char *s, FILE *stream ) +*/
-/*+ substitute for fputs() +*/
+/*+ substitute for fputs() +*/
/*+ generates fwriteBeginID, fwriteEndID +*/
-/*+ record Write (fwriteBeginID) +*/
-/*+ Number Variables = 1 +*/
-/*+ Cause = -1 +*/
-/*+ +*/
+/*+ record Write (fwriteBeginID) +*/
+/*+ Number Variables = 1 +*/
+/*+ Cause = -1 +*/
+/*+ +*/
/*****************************************************************************/
int HDFtraceFPUTS( const char *s, FILE *stream )
{
- struct read_write_args writeArgs;
- int ret;
- int fd = fileno( stream );
+ int ret;
+ int fd = fileno( stream );
- if ( IOtracingEnabled ) {
- writeArgs.fileID = c_mappedID( fd );
- writeArgs.numVariables = 1;
- writeArgs.cause = -1;
+#ifdef PCF_BUILD
+ ret = traceFPUTS( s, stream );
+#else
+ struct read_write_args writeArgs;
+ if ( IOtracingEnabled )
+ {
+ writeArgs.fileID = c_mappedID( fd );
+ writeArgs.numVariables = 1;
+ writeArgs.cause = -1;
- HDFtraceIOEvent(fwriteBeginID, (void *)&writeArgs, sizeof(writeArgs));
- }
+ HDFtraceIOEvent(fwriteBeginID, (void *)&writeArgs, sizeof(writeArgs));
+ }
- ret = fputs( s, stream );
+ ret = fputs( s, stream );
- if ( IOtracingEnabled ) {
- HDFtraceIOEvent( fwriteEndID, (void *) &ret, int_SIZE );
- }
+ if ( IOtracingEnabled )
+ {
+ HDFtraceIOEvent( fwriteEndID, (void *) &ret, int_SIZE );
+ }
+#endif /* PCF_BUILD */
- return( ret );
+ return( ret );
}
-void *HDFtraceMALLOC(size_t bytes )
+
+void*
+HDFtraceMALLOC(size_t bytes )
{
- void *ptr;
- int byte_req;
- byte_req = (int)bytes;
- if ( IOtracingEnabled ) {
- HDFtraceIOEvent ( ID_malloc, NULL, 0 );
- }
+ void *ptr;
+#ifdef PCF_BUILD
+ ptr = (void *)traceMALLOC( bytes );
+#else
+ int byte_req;
+ byte_req = (int)bytes;
+ if ( IOtracingEnabled )
+ {
+ HDFtraceIOEvent ( ID_malloc, NULL, 0 );
+ }
- ptr = malloc( bytes );
+ ptr = malloc( bytes );
- if ( IOtracingEnabled ) {
- HDFtraceIOEvent ( -ID_malloc, &byte_req, sizeof(int) );
- }
+ if ( IOtracingEnabled )
+ {
+ HDFtraceIOEvent ( -ID_malloc, &byte_req, sizeof(int) );
+ }
+#endif /* PCF_BUILD */
- return ptr ;
+ return ptr ;
}
-void HDFtraceIOEvent( int eventType, void *dataPtr, unsigned dataLen )
+#ifndef PCF_BUILD
+void
+HDFtraceIOEvent( int eventType, void *dataPtr, unsigned dataLen )
{
- if ( OUTPUT_SWITCH == RUNTIME_TRACE
- || OUTPUT_SWITCH == MPI_RUNTIME_TRACE ) {
- traceEvent( eventType, dataPtr, dataLen );
- } else {
- HDFtraceEvent_RT( eventType, (HDFsetInfo *)dataPtr, dataLen );
- }
+ if ( OUTPUT_SWITCH == RUNTIME_TRACE
+ || OUTPUT_SWITCH == MPI_RUNTIME_TRACE )
+ {
+ traceEvent( eventType, dataPtr, dataLen );
+ }
+ else
+ {
+ HDFtraceEvent_RT( eventType, (HDFsetInfo *)dataPtr, dataLen );
+ }
}
/*======================================================================*
// record the final time stamp *
//======================================================================*/
-void HDFfinalTimeStamp( void )
+void
+HDFfinalTimeStamp( void )
{
CLOCK currentTime;
double seconds;
@@ -1177,7 +1323,8 @@ void HDFfinalTimeStamp( void )
// the elements of procTrace corresponding to HDF files will be *
// turned on, in which case all HDF procedures will be traced. *
//======================================================================*/
-void PabloHDFTrace( int ID )
+void
+PabloHDFTrace( int ID )
{
int i;
if ( procTrace == NULL ) {
@@ -1201,1133 +1348,4 @@ void PabloHDFTrace( int ID )
exit (-1);
}
}
-#ifdef H5_HAVE_PARALLEL
-#include "MPIO_Trace.h"
-#include "MPIO_EventArgs.h"
-#include "MPIO_Data.h"
-
-/* Global variable declarations and definitions. */
-static int HDFlocalNode = 0;
-int HDFmyNode;
-int myHDFid = 3;
-/* Function prototypes */
-int HDF_get_mode( int );
-int HDF_get_source( int );
-int HDF_get_comm( MPI_Comm );
-int HDF_get_Datatype( MPI_Datatype );
-int HDF_get_DataRep( char* );
-int HDF_get_Bytes( MPI_Datatype, int );
-
-/* Get the mode at the file openning */
-int HDF_get_mode( int amode )
-{
- if( amode == MPI_MODE_RDONLY || amode == MPI_MODE_RDWR ||
- amode == MPI_MODE_WRONLY || amode == MPI_MODE_CREATE ||
- amode == MPI_MODE_EXCL || amode == MPI_MODE_DELETE_ON_CLOSE ||
- amode == MPI_MODE_UNIQUE_OPEN ||
- /* amode == MPI_MODE_SEQUENTIAL || */
- amode == MPI_MODE_APPEND )
- return amode;
- else
- return PABLO_MPI_MODE_NULL;
-}
-
-/* Get the node number */
-int HDF_get_source( int source )
-{
- if ( source == MPI_ANY_SOURCE ) {
- return PABLO_MPI_ANYSOURCE;
- }
-
- if ( source == MPI_PROC_NULL ) {
- return PABLO_MPI_PROCNULL;
- }
-
- else {
- return source;
- }
-}
-
-/* get the communicator ID */
-/* this is dummy for compatability with MPIO Traceing */
-int HDF_get_comm( MPI_Comm in_comm )
-{
- return 0;
-}
-/* Get the MPI_Datatype (mapped to a integer) */
-int HDF_get_Datatype( MPI_Datatype datatype )
-{
- /* elementary datatypes (C) */
- if ( datatype == MPI_CHAR )
- return PABLO_MPI_CHAR;
- else if ( datatype == MPI_SHORT )
- return PABLO_MPI_SHORT;
- else if ( datatype == MPI_INT )
- return PABLO_MPI_INT;
- else if ( datatype == MPI_LONG )
- return PABLO_MPI_LONG;
- else if ( datatype == MPI_UNSIGNED_CHAR )
- return PABLO_MPI_UNSIGNED_CHAR;
- else if ( datatype == MPI_UNSIGNED_SHORT )
- return PABLO_MPI_UNSIGNED_SHORT;
- else if ( datatype == MPI_UNSIGNED )
- return PABLO_MPI_UNSIGNED;
- else if ( datatype == MPI_UNSIGNED_LONG )
- return PABLO_MPI_UNSIGNED_LONG;
- else if ( datatype == MPI_FLOAT )
- return PABLO_MPI_FLOAT;
- else if ( datatype == MPI_DOUBLE )
- return PABLO_MPI_DOUBLE;
- else if ( datatype == MPI_LONG_DOUBLE )
- return PABLO_MPI_LONG_DOUBLE;
-
- /* elementary datatypes (FORTRAN) */
-#ifdef MPI_INTEGER
- else if ( datatype == MPI_INTEGER )
- return PABLO_MPI_INTEGER;
-#endif
-#ifdef MPI_REAL
- else if ( datatype == MPI_REAL )
- return PABLO_MPI_REAL;
-#endif
-#ifdef MPI_DOUBLE_PRECISION
- else if ( datatype == MPI_DOUBLE_PRECISION )
- return PABLO_MPI_DOUBLE_PRECISION;
-#endif
-#ifdef MPI_COMPLEX
- else if ( datatype == MPI_COMPLEX )
- return PABLO_MPI_COMPLEX;
-#endif
-#ifdef MPI_DOUBLE_COMPLEX
- else if ( datatype == MPI_DOUBLE_COMPLEX )
- return PABLO_MPI_DOUBLE_COMPLEX;
-#endif
-#ifdef MPI_LOGICAL
- else if ( datatype == MPI_LOGICAL )
- return PABLO_MPI_LOGICAL;
-#endif
-#ifdef MPI_CHARACTER
- else if ( datatype == MPI_CHARACTER )
- return PABLO_MPI_CHARACTER;
-#endif
-
- /* other datatypes (C, Fortran).*/
- else if ( datatype == MPI_BYTE )
- return PABLO_MPI_BYTE;
- else if ( datatype == MPI_PACKED )
- return PABLO_MPI_PACKED;
- else if ( datatype == MPI_LB )
- return PABLO_MPI_LB;
- else if ( datatype == MPI_UB )
- return PABLO_MPI_UB;
-
-
- /* reduction datatypes (C). */
- else if ( datatype == MPI_FLOAT_INT )
- return PABLO_MPI_FLOAT_INT;
- else if ( datatype == MPI_DOUBLE_INT )
- return PABLO_MPI_DOUBLE_INT;
- else if ( datatype == MPI_LONG_INT )
- return PABLO_MPI_LONG_INT;
- else if ( datatype == MPI_2INT )
- return PABLO_MPI_2INT;
- else if ( datatype == MPI_SHORT_INT )
- return PABLO_MPI_SHORT_INT;
- else if ( datatype == MPI_LONG_DOUBLE_INT )
- return PABLO_MPI_LONG_DOUBLE_INT;
-
- /* Reduction datatypes (FORTRAN) */
-#ifdef MPI_2REAL
- else if ( datatype == MPI_2REAL )
- return PABLO_MPI_2REAL;
-#endif
-#ifdef MPI_2DOUBLE_PRECISION
- else if ( datatype == MPI_2DOUBLE_PRECISION )
- return PABLO_MPI_2DOUBLE_PRECISION;
-#endif
-#ifdef MPI_2INTEGER
- else if ( datatype == MPI_2INTEGER )
- return PABLO_MPI_2INTEGER;
-#endif
-
-#ifdef MPI_2COMPLEX
- else if ( datatype == MPI_2COMPLEX )
- return PABLO_MPI_2COMPLEX;
-#endif
-#ifdef MPI_2DOUBLE_COMPLEX
- else if ( datatype == MPI_2DOUBLE_COMPLEX )
- return PABLO_MPI_2DOUBLE_COMPLEX;
-#endif
-
-/* optional datatypes (C).*/
-#ifdef MPI_LONG_LONG_INT
- else if ( datatype == MPI_LONG_LONG_INT )
- return PABLO_MPI_LONG_LONG_INT;
-#endif
- else if ( datatype == MPI_DATATYPE_NULL )
- return PABLO_MPI_DATATYPE_NULL;
- else
- return PABLO_MPI_USER_DEF;
-}
-
-/* data representations */
-int HDF_get_DataRep( char* datarep )
-{
- if ( !strcmp( datarep, "native" ) )
- return PABLO_MPI_NATIVE;
- else if ( !strcmp( datarep, "internal" ) )
- return PABLO_MPI_INTERNAL;
- else if ( !strcmp( datarep, "external32" ) )
- return PABLO_MPI_EXTERNAL32;
- else
- return (-1);
-}
-
-/*****************************************************************************/
-/* The routines below are there to bypass the MPI I/O Tracing. When MPI I/O */
-/* tracing is done with a nonstandard MPI I/O implementation, problems can */
-/* occur in linking and in data recording. */
-/* For each of the MPI I/O routines MPI_File_xxx used in HDF, there are two */
-/* entries: HDF_MPI_File_xxx and PabloMPI_File_xxx. Macros replace the */
-/* MPI_File_xxx call with HDF_MPI_File_xxx. */
-/* If SUMMARY Tracing is used */
-/* HDF_MPI_File_xxx routine will record entry data in a table, call the */
-/* IF RUNTIME Tracing is used */
-/* HDF_MPI_File_xxx routine calls PabloMPI_File_xxx. This routine writes */
-/* data to the trace file, calls the standard MPI_File_xxx routine, then */
-/* records exit data to a trace file. */
-/* The PabloMPI_File_xxx functionality could have been incorporated into the */
-/* HDF_MPI_File_xxx routine, but was not done so for expediency. */
-/*****************************************************************************/
-int PabloMPI_File_open( MPI_Comm comm,
- char *filename,
- int amode,
- MPI_Info info,
- MPI_File *fh ) ;
-
-int PabloMPI_File_close( MPI_File *fh ) ;
-
-int PabloMPI_File_set_size( MPI_File fh, MPI_Offset size ) ;
-
-int PabloMPI_File_get_size( MPI_File fh, MPI_Offset *size ) ;
-
-int PabloMPI_File_set_view( MPI_File fh,
- MPI_Offset disp,
- MPI_Datatype etype,
- MPI_Datatype filetype,
- char *datarep,
- MPI_Info info ) ;
-
-int PabloMPI_File_get_view( MPI_File fh,
- MPI_Offset *disp,
- MPI_Datatype *etype,
- MPI_Datatype *filetype,
- char *datarep ) ;
-
-int PabloMPI_File_read_at( MPI_File fh,
- MPI_Offset offset,
- void *buf,
- int count,
- MPI_Datatype datatype,
- MPI_Status *status ) ;
-
-int PabloMPI_File_read_at_all( MPI_File fh,
- MPI_Offset offset,
- void *buf,
- int count,
- MPI_Datatype datatype,
- MPI_Status *status ) ;
-
-int PabloMPI_File_write_at( MPI_File fh,
- MPI_Offset offset,
- void *buf,
- int count,
- MPI_Datatype datatype,
- MPI_Status *status ) ;
-
-int PabloMPI_File_write_at_all( MPI_File fh,
- MPI_Offset offset,
- void *buf,
- int count,
- MPI_Datatype datatype,
- MPI_Status *status ) ;
-
-int
-PabloMPI_File_sync( MPI_File fh ) ;
-
-/*======================================================================*
-// Pass call through to regular MPIO entry except in case of Real Time *
-// tracing. *
-// Note: The regular MPIO entry may or may not be instrumented. *
-//======================================================================*/
-int HDF_MPI_File_open( MPI_Comm comm, char *filename, int amode,
- MPI_Info info, MPI_File *fh )
-{
- int returnVal;
- HDFsetInfo dataPtr;
- int dataLen;
-
- if ( OUTPUT_SWITCH != MPI_SUMMARY_TRACE )
- {
- returnVal = PabloMPI_File_open( comm, filename, amode, info, fh );
- }
- else
- {
- dataLen = sizeof( HDFsetInfo );
- dataPtr.setID = 0;
- dataPtr.setName = (char *)malloc( strlen(filename) + 1);
- strcpy( dataPtr.setName , filename );
- HDFtraceEvent_RT( HDFmpiOpenID, &dataPtr, dataLen );
- returnVal = MPI_File_open( comm, filename, amode, info, fh );
- dataPtr.setID = (long)fh;
- HDFtraceEvent_RT( -HDFmpiOpenID, &dataPtr, dataLen );
- }
- return returnVal;
-}
-
-
-
-/*======================================================================*
-// Pass call through to regular MPIO entry except in case of Real Time *
-// tracing. *
-// Note: The regular MPIO entry may or may not be instrumented. *
-//======================================================================*/
-int HDF_MPI_File_close( MPI_File *fh )
-{
- int returnVal;
- HDFsetInfo dataPtr;
- int dataLen;
-
- if ( OUTPUT_SWITCH != MPI_SUMMARY_TRACE )
- {
- returnVal = PabloMPI_File_close( fh );
- }
- else
- {
- dataLen = sizeof( HDFsetInfo );
- dataPtr.setID = (long)fh;
- dataPtr.setName = NULL;
- HDFtraceEvent_RT( HDFmpiCloseID, &dataPtr, dataLen );
- returnVal = MPI_File_close( fh );
- HDFtraceEvent_RT( -HDFmpiCloseID, &dataPtr, dataLen );
- free( dataPtr.setName );
- }
- return returnVal;
-}
-
-
-/*======================================================================*
-// Pass call through to regular MPIO entry except in case of Real Time *
-// tracing. *
-// Note: The regular MPIO entry may or may not be instrumented. *
-//======================================================================*/
-int HDF_MPI_File_set_size( MPI_File fh, MPI_Offset size )
-{
- int returnVal;
- HDFsetInfo dataPtr;
- int dataLen;
-
- if ( OUTPUT_SWITCH != MPI_SUMMARY_TRACE )
- {
- returnVal = PabloMPI_File_set_size( fh, size );
- }
- else
- {
- dataLen = 1;
- dataPtr.setID = (long)fh;
- HDFtraceEvent_RT( HDFmpiSetSizeID,&dataPtr,dataLen );
- returnVal = MPI_File_set_size( fh, size );
- HDFtraceEvent_RT( -HDFmpiSetSizeID, &dataPtr, dataLen );
- }
- return returnVal;
-}
-
-/*======================================================================*
-// Pass call through to regular MPIO entry except in case of Real Time *
-// tracing. *
-// Note: The regular MPIO entry may or may not be instrumented. *
-//======================================================================*/
-int HDF_MPI_File_get_size( MPI_File fh, MPI_Offset *size )
-{
- int returnVal;
- HDFsetInfo dataPtr;
- int dataLen;
-
- if ( OUTPUT_SWITCH != MPI_SUMMARY_TRACE ) {
- returnVal = PabloMPI_File_get_size( fh, size);
- } else {
- dataLen = 1;
- dataPtr.setID = (long)fh;
- HDFtraceEvent_RT( HDFmpiGetSizeID,
- &dataPtr,dataLen );
- returnVal = MPI_File_get_size( fh, size);
- HDFtraceEvent_RT( -HDFmpiGetSizeID,
- &dataPtr,dataLen );
- }
- return returnVal;
-}
-
-/*======================================================================*
-// Pass call through to regular MPIO entry except in case of Real Time *
-// tracing. *
-// Note: The regular MPIO entry may or may not be instrumented. *
-//======================================================================*/
-int HDF_MPI_File_set_view( MPI_File fh, MPI_Offset disp, MPI_Datatype etype,
- MPI_Datatype filetype, char *datarep, MPI_Info info )
-{
- int returnVal;
- HDFsetInfo dataPtr;
- int dataLen;
-
- if ( OUTPUT_SWITCH != MPI_SUMMARY_TRACE ) {
- returnVal = PabloMPI_File_set_view( fh, disp, etype, filetype,
- datarep, info );
- } else {
- dataLen = 1;
- dataPtr.setID = (long)fh;
- HDFtraceEvent_RT( HDFmpiSetViewID,
- &dataPtr,dataLen );
- returnVal = MPI_File_set_view( fh, disp, etype, filetype,
- datarep, info );
- HDFtraceEvent_RT( -HDFmpiSetViewID,
- &dataPtr,dataLen );
- }
- return returnVal;
-}
-
-/*======================================================================*
-// Pass call through to regular MPIO entry except in case of Real Time *
-// tracing. *
-// Note: The regular MPIO entry may or may not be instrumented. *
-//======================================================================*/
-int HDF_MPI_File_get_view( MPI_File fh, MPI_Offset *disp, MPI_Datatype *etype,
- MPI_Datatype *filetype, char *datarep )
-{
- int returnVal;
- HDFsetInfo dataPtr;
- int dataLen;
-
- if ( OUTPUT_SWITCH != MPI_SUMMARY_TRACE )
- {
- returnVal = PabloMPI_File_get_view(fh, disp, etype, filetype, datarep);
- }
- else
- {
- dataLen = 1;
- dataPtr.setID = (long)fh;
- HDFtraceEvent_RT( HDFmpiSetViewID,
- &dataPtr,dataLen );
- returnVal = MPI_File_get_view(fh, disp, etype, filetype, datarep);
- HDFtraceEvent_RT( -HDFmpiSetViewID, &dataPtr,dataLen );
- returnVal = MPI_File_get_view(fh, disp, etype, filetype, datarep);
-
- }
- return returnVal;
-}
-
-/*======================================================================*
-// Pass call through to regular MPIO entry except in case of Real Time *
-// tracing. *
-// Note: The regular MPIO entry may or may not be instrumented. *
-//======================================================================*/
-int HDF_MPI_File_read_at( MPI_File fh, MPI_Offset offset, void *buf,
- int count, MPI_Datatype datatype, MPI_Status *status )
-{
- int returnVal;
- HDFsetInfo dataPtr;
- int dataLen;
- int rCount;
-
- if ( OUTPUT_SWITCH != MPI_SUMMARY_TRACE ) {
- returnVal = PabloMPI_File_read_at( fh, offset, buf, count, datatype,
- status );
- } else {
- dataLen = sizeof(dataPtr);
- dataPtr.setID = (long)fh;
- dataPtr.numBytes = HDF_get_Bytes( datatype, count );
- HDFtraceEvent_RT( HDFmpiReadAtID,
- &dataPtr,dataLen );
- returnVal = MPI_File_read_at( fh, offset, buf, count, datatype,
- status );
- MPI_Get_count(status,datatype,&rCount);
- if ( rCount < 0 || rCount > count )
- {
- dataPtr.numBytes = -1;
- }
- else
- {
- dataPtr.numBytes = HDF_get_Bytes( datatype, rCount );
- }
- HDFtraceEvent_RT( -HDFmpiReadAtID,
- &dataPtr,dataLen );
- }
- return returnVal;
-}
-
-/*======================================================================*
-// Pass call through to regular MPIO entry except in case of Real Time *
-// tracing. *
-// Note: The regular MPIO entry may or may not be instrumented. *
-//======================================================================*/
-int HDF_MPI_File_read_at_all( MPI_File fh, MPI_Offset offset, void *buf,
- int count, MPI_Datatype datatype, MPI_Status *status )
-{
-
- int returnVal;
- HDFsetInfo dataPtr;
- int dataLen;
- int rCount;
-
- if ( OUTPUT_SWITCH != MPI_SUMMARY_TRACE ) {
- returnVal = PabloMPI_File_read_at_all( fh, offset, buf,
- count, datatype, status );
- } else {
- dataLen = sizeof(dataPtr);
- dataPtr.setID = (long)fh;
- dataPtr.numBytes = HDF_get_Bytes( datatype, count );
- HDFtraceEvent_RT( HDFmpiReadAtAllID,
- &dataPtr,dataLen );
- returnVal = MPI_File_read_at_all( fh, offset, buf,
- count, datatype, status );
- MPI_Get_count(status,datatype,&rCount);
- if ( rCount < 0 || rCount > count )
- {
- dataPtr.numBytes = -1;
- }
- else
- {
- dataPtr.numBytes = HDF_get_Bytes( datatype, rCount );
- }
- HDFtraceEvent_RT( -HDFmpiReadAtAllID,
- &dataPtr,dataLen );
- }
- return returnVal;
-}
-
-/*======================================================================*
-// Pass call through to regular MPIO entry except in case of Real Time *
-// tracing. *
-// Note: The regular MPIO entry may or may not be instrumented. *
-//======================================================================*/
-int HDF_MPI_File_write_at( MPI_File fh, MPI_Offset offset, void *buf,
- int count, MPI_Datatype datatype, MPI_Status *status )
-{
-
- int returnVal;
- HDFsetInfo dataPtr;
- int dataLen;
- int rCount;
-
- if ( OUTPUT_SWITCH != MPI_SUMMARY_TRACE )
- {
- returnVal = PabloMPI_File_write_at( fh, offset, buf, count, datatype,
- status );
- }
- else
- {
- dataLen = sizeof(dataPtr);
- dataPtr.setID = (long)fh;
- dataPtr.numBytes = HDF_get_Bytes( datatype, count );
- HDFtraceEvent_RT( HDFmpiWriteAtID, &dataPtr,dataLen );
- returnVal = MPI_File_write_at( fh, offset, buf, count, datatype,
- status );
- MPI_Get_count(status,datatype,&rCount);
- if ( rCount < 0 || rCount > count )
- {
- dataPtr.numBytes = -1;
- }
- else
- {
- dataPtr.numBytes = HDF_get_Bytes( datatype, rCount );
- }
- HDFtraceEvent_RT( -HDFmpiWriteAtID, &dataPtr,dataLen );
- }
- return returnVal;
-}
-
-/*======================================================================*
-// Pass call through to regular MPIO entry except in case of Real Time *
-// tracing. *
-// Note: The regular MPIO entry may or may not be instrumented. *
-//======================================================================*/
-int HDF_MPI_File_write_at_all( MPI_File fh, MPI_Offset offset, void *buf,
- int count, MPI_Datatype datatype, MPI_Status *status )
-{
- int returnVal;
- HDFsetInfo dataPtr;
- int dataLen;
- int numBytes;
-
- if ( OUTPUT_SWITCH != MPI_SUMMARY_TRACE ) {
- returnVal = PabloMPI_File_write_at_all( fh, offset, buf,
- count, datatype, status );
- } else {
- dataLen = sizeof(dataPtr);
- dataPtr.setID = (long)fh;
- dataPtr.numBytes = HDF_get_Bytes( datatype, count );
- HDFtraceEvent_RT( HDFmpiWriteAtAllID,
- &dataPtr,dataLen );
- returnVal = MPI_File_write_at_all( fh, offset, buf,
- count, datatype, status );
- if ( returnVal == MPI_SUCCESS )
- {
- numBytes = HDF_get_Bytes( datatype, count );
- }
- else
- {
- numBytes = -1;
- }
- dataPtr.numBytes = numBytes;
- HDFtraceEvent_RT( -HDFmpiWriteAtAllID,
- &dataPtr,dataLen );
- }
- return returnVal;
-}
-
-/*======================================================================*
-// Pass call through to regular MPIO entry except in case of Real Time *
-// tracing. *
-// Note: The regular MPIO entry may or may not be instrumented. *
-//======================================================================*/
-int HDF_MPI_File_sync( MPI_File fh )
-{
- int returnVal;
- HDFsetInfo dataPtr;
- int dataLen;
-
- if ( OUTPUT_SWITCH != MPI_SUMMARY_TRACE ) {
- returnVal = PabloMPI_File_sync ( fh );
- } else {
- dataLen = 1;
- dataPtr.setID = (long)fh;
- HDFtraceEvent_RT( HDFmpiSyncID,
- &dataPtr,dataLen );
- returnVal = MPI_File_sync ( fh );
- HDFtraceEvent_RT( -HDFmpiSyncID,
- &dataPtr,dataLen );
- }
- return returnVal;
-}
-
-int HDF_get_Bytes( MPI_Datatype datatype, int count )
-{
- int nm_bytes;
-
- MPI_Type_size( datatype, &nm_bytes );
- return( nm_bytes * count );
-}
-
-int
-PabloMPI_File_open( MPI_Comm comm,
- char *filename,
- int amode,
- MPI_Info info,
- MPI_File *fh )
-{
- int returnVal;
-
- struct mpiOpenBeginArgs mpiOpenBeginArguments;
- struct mpiOpenEndArgs mpiOpenEndArguments;
-
-#ifdef DEBUG
- fprintf( debugFile, "MPI_File_open\n" );
- fflush( debugFile );
-#endif /* DEBUG */
-
- MPI_Comm_rank( comm, &HDFlocalNode );
- MPI_Comm_rank( MPI_COMM_WORLD, &HDFmyNode );
-
- mpiOpenBeginArguments.localNode = HDF_get_source( HDFlocalNode );
- mpiOpenBeginArguments.globalNode = HDFmyNode;
- mpiOpenBeginArguments.communicatorID = HDF_get_comm( comm );
- mpiOpenBeginArguments.mode = amode;
- strcpy( mpiOpenBeginArguments.fileName, filename );
-
- /* Generate entry record */
- HDFtraceIOEvent( mpiOpenBeginID, (char *) &mpiOpenBeginArguments,
- sizeof( mpiOpenBeginArguments ) );
-
- returnVal = MPI_File_open( comm, filename, amode, info, fh );
-
- mpiOpenEndArguments.localNode = HDF_get_source( HDFlocalNode );
- mpiOpenEndArguments.globalNode = HDFmyNode;
- /* the fileID is mapped to the fp's address */
- myHDFid++;
- mpiOpenEndArguments.fileID = myHDFid;
-
- /* Generate exit record */
- HDFtraceIOEvent( mpiOpenEndID, (char *) &mpiOpenEndArguments,
- sizeof( mpiOpenEndArguments ) );
-
- return returnVal;
-}
-
-int
-PabloMPI_File_close( MPI_File *fh )
-{
- int returnVal;
-
- struct mpiCloseBeginArgs mpiCloseBeginArguments;
- struct mpiCloseEndArgs mpiCloseEndArguments;
-
-#ifdef DEBUG
- fprintf( debugFile, "MPI_File_close\n" );
- fflush( debugFile );
-#endif /* DEBUG */
-
- mpiCloseBeginArguments.localNode = HDFlocalNode;
- mpiCloseBeginArguments.globalNode = HDFmyNode;
- mpiCloseBeginArguments.fileID = myHDFid;
-
- /* Generate entry record */
- HDFtraceIOEvent( mpiCloseBeginID, (char *) &mpiCloseBeginArguments,
- sizeof( mpiCloseBeginArguments ) );
-
- returnVal = MPI_File_close( fh );
-
- mpiCloseEndArguments.localNode = HDFlocalNode;
- mpiCloseEndArguments.globalNode = HDFmyNode;
- mpiCloseEndArguments.fileID = myHDFid;
-
- /* Generate exit record */
- HDFtraceIOEvent( mpiCloseEndID, (char *) &mpiCloseEndArguments,
- sizeof( mpiCloseEndArguments ) );
-
- return returnVal;
-}
-
-int
-PabloMPI_File_set_size( MPI_File fh, MPI_Offset size )
-{
- int returnVal;
-
- struct mpiSetSizeBeginArgs mpiSetSizeBeginArguments;
- struct mpiSetSizeEndArgs mpiSetSizeEndArguments;
-
-#ifdef DEBUG
- fprintf( debugFile, "MPI_File_set_size\n" );
- fflush( debugFile );
-#endif /* DEBUG */
-
- mpiSetSizeBeginArguments.localNode = HDFlocalNode;
- mpiSetSizeBeginArguments.globalNode = HDFmyNode;
- /* mpiSetSizeBeginArguments.fileID = (long) (&fh); */
- mpiSetSizeBeginArguments.fileID = myHDFid;
-
- mpiSetSizeBeginArguments.fileSize = (long) size;
-
- /* Generate entry record */
- HDFtraceIOEvent( mpiSetSizeBeginID, (char *) &mpiSetSizeBeginArguments,
- sizeof( mpiSetSizeBeginArguments ) );
-
- returnVal = MPI_File_set_size( fh, size );
-
- mpiSetSizeEndArguments.localNode = HDFlocalNode;
- mpiSetSizeEndArguments.globalNode = HDFmyNode;
- /* mpiSetSizeEndArguments.fileID = (long) ( &fh ); */
- mpiSetSizeEndArguments.fileID = myHDFid;
-
- /* Generate entry record */
- HDFtraceIOEvent( mpiSetSizeEndID, (char *) &mpiSetSizeEndArguments,
- sizeof( mpiSetSizeEndArguments ) );
-
- return returnVal;
-}
-
-int
-PabloMPI_File_get_size( MPI_File fh, MPI_Offset *size )
-{
- int returnVal;
-
- struct mpiGetSizeBeginArgs mpiGetSizeBeginArguments;
- struct mpiGetSizeEndArgs mpiGetSizeEndArguments;
-
-#ifdef DEBUG
- fprintf( debugFile, "MPI_File_get_size\n" );
- fflush( debugFile );
-#endif /* DEBUG */
-
- mpiGetSizeBeginArguments.localNode = HDFlocalNode;
- mpiGetSizeBeginArguments.globalNode = HDFmyNode;
- /* mpiGetSizeBeginArguments.fileID = (long) (&fh); */
- mpiGetSizeBeginArguments.fileID = myHDFid;
-
- /* Generate entry record */
- HDFtraceIOEvent( mpiGetSizeBeginID, (char *) &mpiGetSizeBeginArguments,
- sizeof( mpiGetSizeBeginArguments ) );
-
- returnVal = MPI_File_get_size( fh, size);
-
- mpiGetSizeEndArguments.localNode = HDFlocalNode;
- mpiGetSizeEndArguments.globalNode = HDFmyNode;
- /* mpiGetSizeEndArguments.fileID = (long) ( &fh ); */
- mpiGetSizeEndArguments.fileID = myHDFid;
-
- mpiGetSizeEndArguments.fileSize = (long) (*size);
-
- /* Generate entry record */
- HDFtraceIOEvent( mpiGetSizeEndID, (char *) &mpiGetSizeEndArguments,
- sizeof( mpiGetSizeEndArguments ) );
-
- return returnVal;
-}
-
-int
-PabloMPI_File_set_view( MPI_File fh,
- MPI_Offset disp,
- MPI_Datatype etype,
- MPI_Datatype filetype,
- char *datarep,
- MPI_Info info )
-{
- int returnVal;
-
- struct mpiSetViewBeginArgs mpiSetViewBeginArguments;
- struct mpiSetViewEndArgs mpiSetViewEndArguments;
-
-#ifdef DEBUG
- fprintf( debugFile, "MPI_File_set_view\n" );
- fflush( debugFile );
-#endif /* DEBUG */
-
- mpiSetViewBeginArguments.localNode = HDFlocalNode;
- mpiSetViewBeginArguments.globalNode = HDFmyNode;
- /* mpiSetViewBeginArguments.fileID = (long) ( &fh ); */
- mpiSetViewBeginArguments.fileID = myHDFid;
-
- mpiSetViewBeginArguments.disp = (long) ( disp );
- mpiSetViewBeginArguments.etype = HDF_get_Datatype( etype );
- mpiSetViewBeginArguments.fileType = HDF_get_Datatype( filetype );
- mpiSetViewBeginArguments.dataRep = HDF_get_DataRep( datarep );
-
- /* Generate entry record */
- HDFtraceIOEvent( mpiSetViewBeginID, (char *) &mpiSetViewBeginArguments,
- sizeof( mpiSetViewBeginArguments ) );
-
- returnVal = MPI_File_set_view( fh, disp, etype, filetype,
- datarep, info );
-
- mpiSetViewEndArguments.localNode = HDFlocalNode;
- mpiSetViewEndArguments.globalNode = HDFmyNode;
- /* mpiSetViewEndArguments.fileID = (long) ( &fh ); */
- mpiSetViewEndArguments.fileID = myHDFid;
-
- /* Generate entry record */
- HDFtraceIOEvent( mpiSetViewEndID, (char *) &mpiSetViewEndArguments,
- sizeof( mpiSetViewEndArguments ) );
-
- return returnVal;
-}
-
-int
-PabloMPI_File_get_view( MPI_File fh,
- MPI_Offset *disp,
- MPI_Datatype *etype,
- MPI_Datatype *filetype,
- char *datarep )
-{
- int returnVal;
-
- struct mpiGetViewBeginArgs mpiGetViewBeginArguments;
- struct mpiGetViewEndArgs mpiGetViewEndArguments;
-
-#ifdef DEBUG
- fprintf( debugFile, "MPI_File_get_view\n" );
- fflush( debugFile );
-#endif /* DEBUG */
-
- mpiGetViewBeginArguments.localNode = HDFlocalNode;
- mpiGetViewBeginArguments.globalNode = HDFmyNode;
- /* mpiGetViewBeginArguments.fileID = (long) ( &fh ); */
- mpiGetViewBeginArguments.fileID = myHDFid;
-
- /* Generate entry record */
- HDFtraceIOEvent( mpiGetViewBeginID, (char *) &mpiGetViewBeginArguments,
- sizeof( mpiGetViewBeginArguments ) );
-
- returnVal = MPI_File_get_view( fh, disp, etype, filetype, datarep );
-
- mpiGetViewEndArguments.localNode = HDFlocalNode;
- mpiGetViewEndArguments.globalNode = HDFmyNode;
- /* mpiGetViewEndArguments.fileID = (long) ( &fh ); */
- mpiGetViewEndArguments.fileID = myHDFid;
-
- mpiGetViewEndArguments.disp = (long) ( *disp );
- mpiGetViewEndArguments.etype = HDF_get_Datatype( *etype );
- mpiGetViewEndArguments.fileType = HDF_get_Datatype( *filetype );
- mpiGetViewEndArguments.dataRep = HDF_get_DataRep( datarep );
-
- /* Generate entry record */
- HDFtraceIOEvent( mpiGetViewEndID, (char *) &mpiGetViewEndArguments,
- sizeof( mpiGetViewEndArguments ) );
-
- return returnVal;
-}
-
-int
-PabloMPI_File_read_at( MPI_File fh,
- MPI_Offset offset,
- void *buf,
- int count,
- MPI_Datatype datatype,
- MPI_Status *status )
-{
- int returnVal, bcount;
-
- struct mpiReadAtBeginArgs mpiReadAtBeginArguments;
- struct mpiReadAtEndArgs mpiReadAtEndArguments;
-
-#ifdef DEBUG
- fprintf( debugFile, "MPI_File_read_at\n" );
- fflush( debugFile );
-#endif /* DEBUG */
-
- mpiReadAtBeginArguments.localNode = HDFlocalNode;
- mpiReadAtBeginArguments.globalNode = HDFmyNode;
- /* mpiReadAtBeginArguments.fileID = (long) ( &fh ); */
- mpiReadAtBeginArguments.fileID = myHDFid;
-
- mpiReadAtBeginArguments.offset = (long) ( offset );
- mpiReadAtBeginArguments.count = count;
- mpiReadAtBeginArguments.dataType = HDF_get_Datatype( datatype );
- mpiReadAtBeginArguments.numBytes = HDF_get_Bytes( datatype, count );
-
-
- /* Generate entry record */
- HDFtraceIOEvent( mpiReadAtBeginID, (char *) &mpiReadAtBeginArguments,
- sizeof( mpiReadAtBeginArguments ) );
-
- returnVal = MPI_File_read_at( fh, offset, buf, count, datatype, status );
-
- mpiReadAtEndArguments.localNode = HDFlocalNode;
- mpiReadAtEndArguments.globalNode = HDFmyNode;
- /* mpiReadAtEndArguments.fileID = (long) ( &fh ); */
- mpiReadAtEndArguments.fileID = myHDFid;
-
- MPI_Get_count( status, datatype, &bcount );
- if ( bcount < 0 || bcount > count )
- {
- mpiReadAtEndArguments.rCount = -1;
- mpiReadAtEndArguments.numBytes = -1;
- }
- else
- {
- mpiReadAtEndArguments.rCount = bcount;
- mpiReadAtEndArguments.numBytes = HDF_get_Bytes( datatype, bcount );
- }
- /* Generate entry record */
- HDFtraceIOEvent( mpiReadAtEndID, (char *) &mpiReadAtEndArguments,
- sizeof( mpiReadAtEndArguments ) );
-
- return returnVal;
-}
-
-int
-PabloMPI_File_read_at_all( MPI_File fh,
- MPI_Offset offset,
- void *buf,
- int count,
- MPI_Datatype datatype,
- MPI_Status *status )
-{
- int returnVal, bcount;
-
- struct mpiReadAtAllBeginArgs mpiReadAtAllBeginArguments;
- struct mpiReadAtAllEndArgs mpiReadAtAllEndArguments;
-
-#ifdef DEBUG
- fprintf( debugFile, "MPI_File_read_at_all\n" );
- fflush( debugFile );
-#endif /* DEBUG */
-
- mpiReadAtAllBeginArguments.localNode = HDFlocalNode;
- mpiReadAtAllBeginArguments.globalNode = HDFmyNode;
- /* mpiReadAtAllBeginArguments.fileID = (long) ( &fh ); */
- mpiReadAtAllBeginArguments.fileID = myHDFid;
-
- mpiReadAtAllBeginArguments.offset = (long) ( offset );
- mpiReadAtAllBeginArguments.count = count;
- mpiReadAtAllBeginArguments.dataType = HDF_get_Datatype( datatype );
- mpiReadAtAllBeginArguments.numBytes = HDF_get_Bytes( datatype, count );
-
- /* Generate entry record */
- HDFtraceIOEvent( mpiReadAtAllBeginID, (char *) &mpiReadAtAllBeginArguments,
- sizeof( mpiReadAtAllBeginArguments ) );
-
- returnVal = MPI_File_read_at_all( fh, offset, buf,
- count, datatype, status );
-
- mpiReadAtAllEndArguments.localNode = HDFlocalNode;
- mpiReadAtAllEndArguments.globalNode = HDFmyNode;
- /* mpiReadAtAllEndArguments.fileID = (long) ( &fh ); */
- mpiReadAtAllEndArguments.fileID = myHDFid;
-
- MPI_Get_count( status, datatype, &bcount );
- if ( bcount < 0 || bcount > count )
- {
- mpiReadAtAllEndArguments.rCount = -1;
- mpiReadAtAllEndArguments.numBytes = -1;
- }
- else
- {
- mpiReadAtAllEndArguments.rCount = bcount;
- mpiReadAtAllEndArguments.numBytes = HDF_get_Bytes( datatype, bcount );
- }
-
- /* Generate entry record */
- HDFtraceIOEvent( mpiReadAtAllEndID, (char *) &mpiReadAtAllEndArguments,
- sizeof( mpiReadAtAllEndArguments ) );
-
- return returnVal;
-}
-
-int
-PabloMPI_File_write_at( MPI_File fh,
- MPI_Offset offset,
- void *buf,
- int count,
- MPI_Datatype datatype,
- MPI_Status *status )
-{
- int returnVal, bcount;
-
- struct mpiWriteAtBeginArgs mpiWriteAtBeginArguments;
- struct mpiWriteAtEndArgs mpiWriteAtEndArguments;
-
-#ifdef DEBUG
- fprintf( debugFile, "MPI_File_write_at\n" );
- fflush( debugFile );
-#endif /* DEBUG */
-
- mpiWriteAtBeginArguments.localNode = HDFlocalNode;
- mpiWriteAtBeginArguments.globalNode = HDFmyNode;
- /* mpiWriteAtBeginArguments.fileID = (long) ( &fh ); */
- mpiWriteAtBeginArguments.fileID = myHDFid;
-
- mpiWriteAtBeginArguments.offset = (long) ( offset );
- mpiWriteAtBeginArguments.count = count;
- mpiWriteAtBeginArguments.dataType = HDF_get_Datatype( datatype );
- mpiWriteAtBeginArguments.numBytes = HDF_get_Bytes( datatype, count );
-
- /* Generate entry record */
- HDFtraceIOEvent( mpiWriteAtBeginID, (char *) &mpiWriteAtBeginArguments,
- sizeof( mpiWriteAtBeginArguments ) );
-
- returnVal = MPI_File_write_at( fh, offset, buf, count,
- datatype, status );
-
- mpiWriteAtEndArguments.localNode = HDFlocalNode;
- mpiWriteAtEndArguments.globalNode = HDFmyNode;
- /* mpiWriteAtEndArguments.fileID = (long) ( &fh ); */
- mpiWriteAtEndArguments.fileID = myHDFid;
-
- MPI_Get_count( status, datatype, &bcount );
- mpiWriteAtEndArguments.wCount = bcount;
- mpiWriteAtEndArguments.numBytes = HDF_get_Bytes( datatype, bcount );
-
- /* Generate entry record */
- HDFtraceIOEvent( mpiWriteAtEndID, (char *) &mpiWriteAtEndArguments,
- sizeof( mpiWriteAtEndArguments ) );
-
- return returnVal;
-}
-
-int
-PabloMPI_File_write_at_all( MPI_File fh,
- MPI_Offset offset,
- void *buf,
- int count,
- MPI_Datatype datatype,
- MPI_Status *status )
-{
- int returnVal, bcount;
- int numBytes;
-
- struct mpiWriteAtAllBeginArgs mpiWriteAtAllBeginArguments;
- struct mpiWriteAtAllEndArgs mpiWriteAtAllEndArguments;
-
-#ifdef DEBUG
- fprintf( debugFile, "MPI_File_write_at\n" );
- fflush( debugFile );
-#endif /* DEBUG */
-
- mpiWriteAtAllBeginArguments.localNode = HDFlocalNode;
- mpiWriteAtAllBeginArguments.globalNode = HDFmyNode;
- /* mpiWriteAtAllBeginArguments.fileID = (long) ( &fh ); */
- mpiWriteAtAllBeginArguments.fileID = myHDFid;
-
- mpiWriteAtAllBeginArguments.offset = (long) ( offset );
- mpiWriteAtAllBeginArguments.count = count;
- mpiWriteAtAllBeginArguments.dataType = HDF_get_Datatype( datatype );
- mpiWriteAtAllBeginArguments.numBytes = HDF_get_Bytes( datatype, count );
-
- /* Generate entry record */
- HDFtraceIOEvent( mpiWriteAtAllBeginID, (char *) &mpiWriteAtAllBeginArguments,
- sizeof( mpiWriteAtAllBeginArguments ) );
-
- returnVal = MPI_File_write_at_all( fh, offset, buf,
- count, datatype, status );
-
- mpiWriteAtAllEndArguments.localNode = HDFlocalNode;
- mpiWriteAtAllEndArguments.globalNode = HDFmyNode;
- /* mpiWriteAtAllEndArguments.fileID = (long) ( &fh ); */
- mpiWriteAtAllEndArguments.fileID = myHDFid;
-
- if ( returnVal == MPI_SUCCESS )
- {
- bcount = count;
- numBytes = HDF_get_Bytes( datatype, count );
- }
- else
- {
- bcount = -1;
- numBytes = -1;
- }
- mpiWriteAtAllEndArguments.wCount = bcount;
- mpiWriteAtAllEndArguments.numBytes = numBytes;
-
- /* Generate entry record */
- HDFtraceIOEvent( mpiWriteAtAllEndID, (char *) &mpiWriteAtAllEndArguments,
- sizeof( mpiWriteAtAllEndArguments ) );
-
- return returnVal;
-}
-
-int
-PabloMPI_File_sync( MPI_File fh )
-{
- int returnVal;
-
- struct mpiSyncBeginArgs mpiSyncBeginArguments;
- struct mpiSyncEndArgs mpiSyncEndArguments;
-
-#ifdef DEBUG
- fprintf( debugFile, "MPI_File_sync\n" );
- fflush( debugFile );
-#endif /* DEBUG */
-
- mpiSyncBeginArguments.localNode = HDFlocalNode;
- mpiSyncBeginArguments.globalNode = HDFmyNode;
- /* mpiSyncBeginArguments.fileID = (long) ( &fh ); */
- mpiSyncBeginArguments.fileID = myHDFid;
-
- /* Generate entry record */
- HDFtraceIOEvent( mpiSyncBeginID,
- (char *) &mpiSyncBeginArguments,
- sizeof( mpiSyncBeginArguments ) );
-
- returnVal = MPI_File_sync ( fh );
-
- mpiSyncEndArguments.localNode = HDFlocalNode;
- mpiSyncEndArguments.globalNode = HDFmyNode;
- /* mpiSyncEndArguments.fileID = (long) ( &fh ); */
- mpiSyncEndArguments.fileID = myHDFid;
-
- /* Generate entry record */
- HDFtraceIOEvent( mpiSyncEndID, (char *) &mpiSyncEndArguments,
- sizeof( mpiSyncEndArguments ) );
-
- return returnVal;
-}
-
-#endif /* H5_HAVE_PARALLEL */
+#endif /* PCF_BUILD */