[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

PETSc tight dependency on OpenMPI (or MPICH) version



PETSc has a tight dependency on the version of OpenMPI it was built
against:

At l.154 of 
/usr/lib/petscdir/*/x86_64-linux-gnu-real/include/petscsys.h
PETSc tests the OpenMPI version:

#  elif (OMPI_MAJOR_VERSION != PETSC_HAVE_OMPI_MAJOR_VERSION) || (OMPI_MINOR_VERSION != PETSC_HAVE_OMPI_MINOR_VERSION) || (OMPI_RELEASE_VERSION != PETSC_HAVE_OMPI_RELEASE_VERSION)
#    error "PETSc was configured with one OpenMPI mpi.h version but now appears to be compiling using a different OpenMPI mpi.h version"
#  endif

So each of the major, minor and release versions need to match.  This
is really annoying, I thought the point of release versions is that
they didn't change the API or ABI and so could be swapped out
interchangeably. I can only imagine (or hope) the PETSc developers have
their reasons.

PETSc is not built directly against OpenMPI. The build-dependency
is mpi-default-dev (>= 1.0.2). mpi-default-dev is also used as a
dependency by the libpetsc3.6.4-dev and libpetsc-complex-3.6.4-dev
packages.

mpi-default-dev calls in libmpich-dev on hppa, m68k and sh4. 	li
bopenmpi-dev is the standard MPI implementation on all other
architectures.  petscsys.h also checks the MPICH version if present,
just a single value (MPICH_NUMVERSION), but it too references the patch
version (e.g. 30101300 for MPICH v3.1.1)

Eventually the autobuildds will catch up and rebuild petsc against the
latest openmpi (or mpich).  But while we wait for that, petsc (and
therefore its client programs like dolfin) are in a broken state.

Any thoughts on how we could improve that, while keeping the build-
dependency on the general mpi-default-dev rather than the specific
implementation of MPI?

Drew


Reply to: