[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