I’ve asked the OMPI team if we can/should have a separate mpio.h in our install - will let you know as soon as I hear back.
Ralph > On Sep 11, 2015, at 8:45 AM, Michael Gutteridge > <[email protected]> wrote: > > Thanks for all the advice- I followed Jared's suggestion- a basic .c that > includes the hdf5 headers. That and the HDF examples all compiled and ran > fine. > > Until, that is, I had 'src/common' in the include path. Building my examples > in the Slurm build tree using an include path with src/common and the slurm > source top level fails with the same error. > > What I see as possibly problematic is 'src/common/mpi.h'. The HDF include > file ('/usr/include/H5public.h') has a check that handles the MPICH vs. > OpenMPI differences: > > > 60 #ifdef H5_HAVE_PARALLEL > 61 # define MPICH_SKIP_MPICXX 1 > 62 # define OMPI_SKIP_MPICXX 1 > 63 # include <mpi.h> > 64 #ifndef MPI_FILE_NULL /*MPIO may be defined in mpi.h already > */ > 65 # include <mpio.h> > 66 #endif > 67 #endif > > > It appears that OpenMPI has MPIO defined in mpi.h, whereas MPICH defines that > stuff in mpio.h. As I've got a parallel build, I suspect that the make > includes src/common/mpi.h, doesn't find "MPI_FILE_NULL" defined and attempts > to include mpio.h. > > I'm not the strongest C user, so I could be wrong on that, though when I > remove "src/common" from the include path for libsh5util_old it does compile > successfully. > > I think worst case I'll end up with bootstrapping as Paul has indicated > (thanks for the procedure, BTW). > > Thanks for all your time > > M > > > > On Fri, Sep 11, 2015 at 7:30 AM, Van Der Mark, Paul <[email protected] > <mailto:[email protected]>> wrote: > I'm glad we were not the only one with that problem. I basically did a > bootstrap compilation > 1. compile openmpi without slurm > 2. compile hdf5 with that openmpi version > 3. compile slurm with that hpdf5 version > 4. recompile openmpi with slurm > 5. for safety recompile hdf5 & slurm > > One of the reasons for that slightly confusing setup is because our > semi-automated building system compiles 3 different versions of openmpi > and compiles hdf5 for serial and all those openmpi versions at once. > > Beet, > Paul > > On Thu, 2015-09-10 at 14:13 -0700, Jared David Baker wrote: > > Hello Michael, > > > > > > > > I had this problem the other day when I was building Slurm on Arch. I > > had hdf-mpi package installed with OpenMPI and there was an > > inconsistency there as well. Basically the HDF5 implementation was > > built with mpio in mind, but the compiler invocation does not find an > > mpio.h as part of the OpenMPI installation. I guess my base point is I > > have a different HDF5 implementation on our HPC clusters to satisfy > > the Slurm requirements separate from the MPI enabled versions. Anyway, > > I’d be suspicious of the OpenMPI/HDF5 packages you’ve installed in > > Ubuntu and possibly open a bug if the HDF5 uses OpenMPI as the MPI > > implementation and doesn’t contain the mpio.h file. Can you compile a > > simple code with your MPI compiler wrapper that includes mpio.h? > > > > > > > > Best, > > > > > > > > Jared > > > > > > > > From: Michael Gutteridge [mailto:[email protected] > > <mailto:[email protected]>] > > Sent: Thursday, September 10, 2015 12:41 PM > > To: slurm-dev > > Subject: [slurm-dev] Compile of 15.08.0 fails on trusty missing mpio.h > > > > > > > > > > Hi > > > > > > > > > > > > This really feels like an obvious one, but I'm having a devil of a > > time sorting out how to address this. I'm building Slurm 15.08.0 on > > Ubuntu 14.04 LTS with a minimal set of configure options: > > > > > > > > > > > > --sysconfdir=/etc/slurm-llnl --localstatedir=/var/run/slurm-llnl > > --with-munge --without-blcr --enable-pam --without-rpath > > --disable-debug > > > > > > > > > > > > Configure succeeds OK, but make fails a little while in during the > > build of the HDF5 components: > > > > > > > > > > > > Making all in libsh5util_old > > > > > > make[8]: Entering directory > > `/home/build/trusty/slurm-llnl/15.08.0/build/slurm-15.08.0/obj-x86_64-linux-gnu/src/plugins/acct_gather_profile/hdf5/sh5util/libsh5util_old' > > > > > > /bin/bash ../../../../../../libtool --tag=CC --mode=compile gcc > > -DHAVE_CONFIG_H -I. > > -I../../../../../../../src/plugins/acct_gather_profile/hdf5/sh5util/libsh5util_old > > -I../../../../../.. -I../../../../../../slurm -I../../../../../../.. > > -I../../../../../../../src/common -I. -I/usr/lib/openmpi/include -I > > /usr/include -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat > > -Werror=format-security -pthread -fno-gcse -c -o sh5util.lo > > ../../../../../../../src/plugins/acct_gather_profile/hdf5/sh5util/libsh5util_old/sh5util.c > > > > > > libtool: compile: gcc -DHAVE_CONFIG_H -I. > > -I../../../../../../../src/plugins/acct_gather_profile/hdf5/sh5util/libsh5util_old > > -I../../../../../.. -I../../../../../../slurm -I../../../../../../.. > > -I../../../../../../../src/common -I. -I/usr/lib/openmpi/include -I > > /usr/include -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat > > -Werror=format-security -pthread -fno-gcse -c > > ../../../../../../../src/plugins/acct_gather_profile/hdf5/sh5util/libsh5util_old/sh5util.c > > -fPIC -DPIC -o .libs/sh5util.o > > > > > > In file included from /usr/include/hdf5.h:24:0, > > > > > > > > from > > ../../../../../../../src/plugins/acct_gather_profile/hdf5/sh5util/libsh5util_old/hdf5_api.h:61, > > > > > > > > from > > ../../../../../../../src/plugins/acct_gather_profile/hdf5/sh5util/libsh5util_old/sh5util.c:72: > > > > > > /usr/include/H5public.h:65:21: fatal error: mpio.h: No such file or > > directory > > > > > > # include <mpio.h> > > > > > > ^ > > > > > > compilation terminated. > > > > > > make[8]: *** [sh5util.lo] Error 1 > > > > > > > > > > > > > > > > > > I have both OpenMPI (1.6.5) and MPICH (3.0.4) development packages > > installed- mpio.h is present in /usr/include/mpich/mpio.h. If I add > > "CFLAGS=-I/usr/include/mpich" then the build succeeds. That sort of > > feels kludgy- I'm of the opinion that the configure should have picked > > that up or that I don't, in fact, have the correct development headers > > installed. We'd never needed/used MPICH in past... I thought OpenMPI > > would have supplied mpio.h. > > > > > > > > > > > > Does anyone have any insights into this? Should configure pick it up? > > Is it a quirk of Ubuntu? > > > > > > > > > > > > Thanks much > > > > > > > > > > > > Michael > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
