[cig-commits] r15162 - in long/3D/Gale/trunk: . python/BuildSystem/config/packages src/StGermain/Base/IO/src src/StGermain/Discretisation/Swarm/src
walter at geodynamics.org
walter at geodynamics.org
Tue Jun 9 15:30:11 PDT 2009
Author: walter
Date: 2009-06-09 15:30:11 -0700 (Tue, 09 Jun 2009)
New Revision: 15162
Modified:
long/3D/Gale/trunk/
long/3D/Gale/trunk/configure_vars.in
long/3D/Gale/trunk/python/BuildSystem/config/packages/MPI.py
long/3D/Gale/trunk/src/StGermain/Base/IO/src/MPIFile.c
long/3D/Gale/trunk/src/StGermain/Base/IO/src/MPIFile.h
long/3D/Gale/trunk/src/StGermain/Base/IO/src/MPIStream.c
long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/src/FileParticleLayout.c
Log:
r2689 at dante: boo | 2009-06-09 15:30:14 -0700
Now works even if MPI I/O is not available
Property changes on: long/3D/Gale/trunk
___________________________________________________________________
Name: svk:merge
- 3a629746-de10-0410-b17b-fd6ecaaa963e:/cig:2687
+ 3a629746-de10-0410-b17b-fd6ecaaa963e:/cig:2689
Modified: long/3D/Gale/trunk/configure_vars.in
===================================================================
--- long/3D/Gale/trunk/configure_vars.in 2009-06-09 21:34:24 UTC (rev 15161)
+++ long/3D/Gale/trunk/configure_vars.in 2009-06-09 22:30:11 UTC (rev 15162)
@@ -53,6 +53,9 @@
env.Append(LIBPATH=['#/'+path])
env.Append(RPATH=Split('@MPI_LIBPATH@'))
mpirun='@MPIRUN@'
+have_mpi_file='@HAVE_MPI_FILE@'
+if(have_mpi_file):
+ env.Append(CPPFLAGS=['-DHAVE_MPI_FILE'])
# Add in the libxml2 paths
Modified: long/3D/Gale/trunk/python/BuildSystem/config/packages/MPI.py
===================================================================
--- long/3D/Gale/trunk/python/BuildSystem/config/packages/MPI.py 2009-06-09 21:34:24 UTC (rev 15161)
+++ long/3D/Gale/trunk/python/BuildSystem/config/packages/MPI.py 2009-06-09 22:30:11 UTC (rev 15162)
@@ -512,6 +512,13 @@
# Substitutions added by Walter Landry
+ if self.libraries.check(self.dlib, "MPI_FILE",
+ prototype="#include <mpi.h>",
+ call="MPI_File fp; MPI_File_close(&fp);"):
+ self.addSubstitution('HAVE_MPI_FILE',"1")
+ else:
+ self.addSubstitution('HAVE_MPI_FILE',"")
+
self.executeTest(self.configureMPIRUN)
self.addSubstitution('MPIRUN',self.mpirun.replace(' -np 1',''))
Modified: long/3D/Gale/trunk/src/StGermain/Base/IO/src/MPIFile.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Base/IO/src/MPIFile.c 2009-06-09 21:34:24 UTC (rev 15161)
+++ long/3D/Gale/trunk/src/StGermain/Base/IO/src/MPIFile.c 2009-06-09 22:30:11 UTC (rev 15162)
@@ -120,10 +120,17 @@
/* Remove the file */
remove( fileName );
+#ifdef HAVE_MPI_FILE
MPI_File_open( MPI_COMM_WORLD, fileName, MPI_MODE_CREATE | MPI_MODE_WRONLY | MPI_MODE_EXCL,
MPI_INFO_NULL, &(self->mpiFile) );
+ self->fileHandle = &(self->mpiFile);
+#else
+ printf("Opening a file %s\n",fileName);
- self->fileHandle = &(self->mpiFile);
+ self->mpiFile=fopen(fileName, "w");
+ self->fileHandle = self->mpiFile;
+#endif
+
return True;
}
@@ -132,9 +139,14 @@
{
MPIFile* self = (MPIFile*) file;
+#ifdef HAVE_MPI_FILE
MPI_File_open( MPI_COMM_WORLD, fileName, MPI_MODE_WRONLY, MPI_INFO_NULL, &(self->mpiFile) );
+ self->fileHandle = &(self->mpiFile);
+#else
+ self->mpiFile=fopen(fileName, "w");
+ self->fileHandle = self->mpiFile;
+#endif
- self->fileHandle = &(self->mpiFile);
return True;
}
@@ -144,7 +156,11 @@
{
MPIFile* self = (MPIFile*) file;
+#ifdef HAVE_MPI_FILE
MPI_File_close( &(self->mpiFile) );
+#else
+ fclose(self->mpiFile);
+#endif
return True;
}
Modified: long/3D/Gale/trunk/src/StGermain/Base/IO/src/MPIFile.h
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Base/IO/src/MPIFile.h 2009-06-09 21:34:24 UTC (rev 15161)
+++ long/3D/Gale/trunk/src/StGermain/Base/IO/src/MPIFile.h 2009-06-09 22:30:11 UTC (rev 15162)
@@ -44,15 +44,23 @@
#define __Base_IO_MPIFile_h__
#include <mpi.h>
+#include <stdio.h>
/** Textual name for MPIFile class. */
extern const Type MPIFile_Type;
/** \def __MPIFile See MPIFile. */
+#ifdef HAVE_MPI_FILE
#define __MPIFile \
/* General info */ \
__JournalFile \
MPI_File mpiFile;
+#else
+ #define __MPIFile \
+ /* General info */ \
+ __JournalFile \
+ FILE *mpiFile;
+#endif
struct MPIFile { __MPIFile };
Modified: long/3D/Gale/trunk/src/StGermain/Base/IO/src/MPIStream.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Base/IO/src/MPIStream.c 2009-06-09 21:34:24 UTC (rev 15161)
+++ long/3D/Gale/trunk/src/StGermain/Base/IO/src/MPIStream.c 2009-06-09 22:30:11 UTC (rev 15162)
@@ -130,8 +130,12 @@
numChars = Stg_vasprintf( &buffer, fmt, args );
+#ifdef HAVE_MPI_FILE
result = MPI_File_write( *(MPI_File*)(self->_file->fileHandle), buffer, numChars, MPI_BYTE, &status );
-
+#else
+ result=fwrite(buffer, numChars,MPI_BYTE,
+ (FILE*)(self->_file->fileHandle));
+#endif
Memory_Free( buffer );
return result;
@@ -142,7 +146,12 @@
MPIStream* self = (MPIStream*)stream;
MPI_Status status;
+#ifdef HAVE_MPI_FILE
return MPI_File_write( *(MPI_File*)(self->_file->fileHandle), data, num_elems * elem_size, MPI_BYTE, &status );
+#else
+ return fwrite(data, num_elems * elem_size, MPI_BYTE,
+ (FILE*)(self->_file->fileHandle));
+#endif
}
Bool _MPIStream_Dump( Stream* stream, void *data )
@@ -192,7 +201,11 @@
MPI_Send( &endOffset, sizeof(MPI_Offset), MPI_BYTE, rank + 1, MPIStream_OffsetTag, communicator );
}
+#ifdef HAVE_MPI_FILE
MPI_File_seek( *(MPI_File*)stream->_file->fileHandle, offset, MPI_SEEK_SET );
+#else
+ fseek((FILE*)stream->_file->fileHandle, offset, SEEK_SET );
+#endif
return True;
}
Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/src/FileParticleLayout.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/src/FileParticleLayout.c 2009-06-09 21:34:24 UTC (rev 15161)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/src/FileParticleLayout.c 2009-06-09 22:30:11 UTC (rev 15162)
@@ -208,7 +208,11 @@
FileParticleLayout* self = (FileParticleLayout*)particleLayout;
Swarm* swarm = (Swarm*)_swarm;
Name filename = self->filename;
+#ifdef HAVE_MPI_FILE
MPI_File mpiFile;
+#else
+ FILE *mpiFile;
+#endif
int openResult;
MPI_Offset bytesCount;
SizeT particleSize = swarm->particleExtensionMgr->finalSize;
@@ -221,7 +225,12 @@
Journal_DPrintf( self->debug, "Finding number of bytes in checkpoint file \"%s\":\n",
self->filename );
+#ifdef HAVE_MPI_FILE
openResult = MPI_File_open( swarm->comm, filename, MPI_MODE_RDONLY, MPI_INFO_NULL, &mpiFile );
+#else
+ mpiFile= fopen( filename, "r");
+ openResult =(mpiFile!=NULL);
+#endif
Journal_Firewall(
openResult == 0,
@@ -232,8 +241,14 @@
self->name,
filename );
+#ifdef HAVE_MPI_FILE
MPI_File_get_size( mpiFile, &bytesCount );
MPI_File_close( &mpiFile );
+#else
+ fseek(mpiFile,0,SEEK_END);
+ bytesCount=ftell(fseek);
+ fclose(mpiFile);
+#endif
Journal_DPrintf( self->debug, "...calculated bytes total of %u.\n", bytesCount );
More information about the CIG-COMMITS
mailing list