You can try the attached [untested] patch. It replicates the MPICH_NUMVERSION code and replaces it with MVAPICH2_NUMVERSION
Satish On Tue, 25 Apr 2017, Kong, Fande wrote: > On Tue, Apr 25, 2017 at 3:42 PM, Barry Smith <bsm...@mcs.anl.gov> wrote: > > > > > The error message is generated based on the macro MPICH_NUMVERSION > > contained in the mpi.h file. > > > > Apparently MVAPICH also provides this macro, hence PETSc has no way to > > know that it is not MPICH. > > > > If you can locate in the MVAPICH mpi.h include files macros related > > explicitly to MVAPICH then we could possibly use that macro to provide a > > more specific error message. > > > > > There is also a macro: MVAPICH2_NUMVERSION in mpi.h. We might use it to > have a right message. > > Looks possible for me. > > Fande, > > > > > > > Barry > > > > > > > On Apr 25, 2017, at 4:35 PM, Kong, Fande <fande.k...@inl.gov> wrote: > > > > > > Hi, > > > > > > We configured PETSc with a version of MVAPICH, and complied with another > > version of MVAPICH. Got the error messages: > > > > > > error "PETSc was configured with one MPICH mpi.h version but now appears > > to be compiling using a different MPICH mpi.h version" > > > > > > > > > Why we could not say something about "MVAPICH" (not "MPICH")? > > > > > > Do we just simply consider all MPI implementations (MVAPICH, maybe Intel > > MPI, IBM mpi?) based on MPICH as "MPICH"? > > > > > > Fande, > > > > >
diff --git a/config/BuildSystem/config/packages/MPI.py b/config/BuildSystem/config/packages/MPI.py index f016a019eb..daed0d3f69 100644 --- a/config/BuildSystem/config/packages/MPI.py +++ b/config/BuildSystem/config/packages/MPI.py @@ -425,14 +425,22 @@ class Configure(config.package.Package): return def checkMPICHorOpenMPI(self): - '''Determine if MPICH_NUMVERSION or OMPI_MAJOR_VERSION exist in mpi.h + '''Determine if MVAPICH2_NUMVERSION, MPICH_NUMVERSION or OMPI_MAJOR_VERSION exist in mpi.h Used for consistency checking of MPI installation at compile time''' import re + mvapich2_test = '#include <mpi.h>\nint mpich_ver = MVAPICH2_NUMVERSION;\n' mpich_test = '#include <mpi.h>\nint mpich_ver = MPICH_NUMVERSION;\n' openmpi_test = '#include <mpi.h>\nint ompi_major = OMPI_MAJOR_VERSION;\nint ompi_minor = OMPI_MINOR_VERSION;\nint ompi_release = OMPI_RELEASE_VERSION;\n' oldFlags = self.compilers.CPPFLAGS self.compilers.CPPFLAGS += ' '+self.headers.toString(self.include) - if self.checkCompile(mpich_test): + if self.checkCompile(mvapich2_test): + buf = self.outputPreprocess(mvapich2_test) + try: + mvapich2_numversion = re.compile('\nint mvapich2_ver = *([0-9]*) *;').search(buf).group(1) + self.addDefine('HAVE_MVAPICH2_NUMVERSION',mvapich2_numversion) + except: + self.logPrint('Unable to parse MVAPICH2 version from header. Probably a buggy preprocessor') + elif self.checkCompile(mpich_test): buf = self.outputPreprocess(mpich_test) try: mpich_numversion = re.compile('\nint mpich_ver = *([0-9]*) *;').search(buf).group(1) diff --git a/include/petscsys.h b/include/petscsys.h index 1ece229001..4a9446fdd4 100644 --- a/include/petscsys.h +++ b/include/petscsys.h @@ -139,8 +139,14 @@ void assert_never_put_petsc_headers_inside_an_extern_c(int); void assert_never_p # if !defined(__MPIUNI_H) # error "PETSc was configured with --with-mpi=0 but now appears to be compiling using a different mpi.h" # endif +#elif defined(PETSC_HAVE_MVAPICH2_NUMVERSION) +# if !defined(MVAPICH2_NUMVERSION) +# error "PETSc was configured with MVAPICH2 but now appears to be compiling using a non-MVAPICH2 mpi.h" +# elif MVAPICH2_NUMVERSION != PETSC_HAVE_MVAPICH2_NUMVERSION +# error "PETSc was configured with one MVAPICH2 mpi.h version but now appears to be compiling using a different MVAPICH2 mpi.h version" +# endif #elif defined(PETSC_HAVE_MPICH_NUMVERSION) -# if !defined(MPICH_NUMVERSION) +# if !defined(MPICH_NUMVERSION) || defined(MVAPICH2_NUMVERSION) # error "PETSc was configured with MPICH but now appears to be compiling using a non-MPICH mpi.h" # elif MPICH_NUMVERSION != PETSC_HAVE_MPICH_NUMVERSION # error "PETSc was configured with one MPICH mpi.h version but now appears to be compiling using a different MPICH mpi.h version"