HDF5 1.10 incompatibility

Issue #49 resolved
Nico Schlömer created an issue

This is a heads-up that MOAB is not yet compatible with HDF5 1.10; see, e.g., here. If not fixed, this will break building MOAB on Ubuntu 17.04.

Comments (16)

  1. Vijay M

    @iulian07 can we quickly test this on gnep? Start a branch with required changes for 1.10 compatibility. I'll find time this weekend to try it on my workstation and macbook.

    On a separate note, I think the newer NetCDF directly uses parallel HDF5. We have to check this dependency chain also.

  2. Iulian Grindeanu

    from your log file:

    cd "/<<PKGBUILDDIR>>/obj-x86_64-linux-gnu/src/io/mhdf" && /usr/bin/mpicc   -I/usr/lib/x86_64-linux-gnu/openmpi/include/openmpi -I/usr/lib/x86_64-linux-gnu/openmpi/include/openmpi/opal/mca/event/libevent2022/libevent -I/usr/lib/x86_64-linux-gnu/openmpi/include/openmpi/opal/mca/event/libevent2022/libevent/include -I/usr/lib/x86_64-linux-gnu/openmpi/include -I"/<<PKGBUILDDIR>>/src/io/mhdf/include" -I"/<<PKGBUILDDIR>>/src" -I"/<<PKGBUILDDIR>>/obj-x86_64-linux-gnu/src" -I"/<<PKGBUILDDIR>>/src/parallel" -I"/<<PKGBUILDDIR>>/src/LocalDiscretization" -I"/<<PKGBUILDDIR>>/src/io" -I"/<<PKGBUILDDIR>>/src/io/mhdf" -I"/<<PKGBUILDDIR>>/obj-x86_64-linux-gnu/src/parallel" -I"/<<PKGBUILDDIR>>/src/mhdf"  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -DPIC -pedantic -fpic -Wall -pipe -Wno-long-long -Wextra -Wcast-align -Wsign-compare -Wpointer-arith -Wformat-security -Wunused-parameter -fstack-protector-all -mtune=native   -o CMakeFiles/mhdf.dir/src/adjacency.c.o   -c "/<<PKGBUILDDIR>>/src/io/mhdf/src/adjacency.c"
    /<<PKGBUILDDIR>>/src/io/mhdf/src/adjacency.c:16:23: fatal error: H5Tpublic.h: No such file or directory
     #include <H5Tpublic.h>
    

    Basically, it did not find hdf5, because hdf5 includes are not there

    I have a build on blues.mcs.anl.gov, with autotools, which works fine on master, with hdf5.1.10, built with gcc 5.3 and mpich3.2. So it is not a problem with hdf51.10, it is a cmake problem, I think.

    your configuration says this:

    -- HDF5: Using hdf5 compiler wrapper to determine C configuration
    -- Found HDF5: /usr/lib/x86_64-linux-gnu/hdf5/openmpi/libhdf5.so;/usr/lib/x86_64-linux-gnu/libsz.so;/usr/lib/x86_64-linux-gnu/libz.so;/usr/lib/x86_64-linux-gnu/libdl.so;/usr/lib/x86_64-linux-gnu/libm.so (found version "1.10.0.1") found components:  C HL 
    -- ---   HDF5 Configuration ::
    --         IS_PARALLEL  : TRUE
    --         INCLUDES     : /usr/include/hdf5/openmpi
    --         LIBRARIES    : /usr/lib/x86_64-linux-gnu/hdf5/openmpi/libhdf5_hl.so;/usr/lib/x86_64-linux-gnu/hdf5/openmpi/libhdf5.so;/usr/lib/x86_64-linux-gnu/libsz.so;/usr/lib/x86_64-linux-gnu/libz.so;/usr/lib/x86_64-linux-gnu/libdl.so;/usr/lib/x86_64-linux-gnu/libm.so
    -- Found HDF5: /usr/include/hdf5/openmpi  
    

    so it must be something in cmake, that did not set the include for HDF5 correctly

  3. Vijay M

    Iulian, can you point me to the hdf5-1.10 installation along with the MPI wrappers that you are using on Blues ? I can try with the CMake system and get the configuration updated to support this.

  4. Iulian Grindeanu

    This is my build on blues, with hdf5 10
    /home/iulian/source/MOAB_hdf5_10
    config.cmd shows my config command

    I am using this soft file, from my home dir on blues:

    /home/iulian/hdf5_10.soft

    more hdf5_10.soft
    #
    # This is your SoftEnv configuration run control file.
    #
    #   It is used to tell SoftEnv how to customize your environment by
    #   setting up variables such as PATH and MANPATH.  To learn more
    #   about this file, do a "man softenv".
    #
    +gcc-5.3.0
    +zlib-1.2.8
    #+netcdf-c-4.4.0-f77-4.4.3-gcc-5.3.0-serial
    +pnetcdf-1.6.1-gcc-5.3.0-mpich-3.2
    +mpich-3.2-gcc-5.3.0
    +hdf5-1.10.0-gcc-5.3.0-mpich-3.2-parallel
    @default
    
  5. Iulian Grindeanu

    Current master works fine with cmake 3.4.0rc2, and with hdf5 1.10, mpich 3.2 and gcc 5.3
    When we tried cmake 3.2.0 (everything else the same), wrong hdf5 library are picked up from default installation folders, like /usr/lib64, which are usually built serially, and cause problems for mpi builds.

    So for hdf5 1.10 - cmake builds, we recommend using at least cmake 3.4.0rc2
    Ubuntu 16 (xenial) installs by default cmake 3.5.2, so there is no issue; ubuntu 14 (trusty) has cmake 2.8.12.

  6. Iulian Grindeanu

    hmm, actually it is picking the wrong mpich, hdf5, even with hdf5 1.8.12, when we use cmake 2.8.12.2 on ubuntu 14.

    so maybe we should require cmake 3.4.0 in all cases; our buildbot actually runs with cmake 3.5.1

    Another note: cmake will pick the right hdf5 if the path includes the right version of hdf5 binaries
    So we need to ensure:

    path contains the right hdf5 executables
    cmake 3.4 is used (or higher);
    also the path needs to contain the right mpi version ; then cmake works fine

  7. Vijay M

    @nschloe As long as CMake 3.4 or above is used, we haven't seen a compatibility issue either during configuration or linkage/runtime. Let us know if you see anything otherwise. We will make a note of this in documentation (min. CMake version) but will not officially enforce it yet.

  8. Vijay M

    @iulian07 Are the public interfaces not available in HDF5 1.10 ? I didn't think they removed this. Or are we screwing up configuration?

    In file included from /<<PKGBUILDDIR>>/src/io/mhdf/include/mhdf.h:19:0,
                     from /<<PKGBUILDDIR>>/src/io/WriteHDF5.hpp:26,
                     from /<<PKGBUILDDIR>>/src/parallel/WriteHDF5Parallel.hpp:5,
                     from /<<PKGBUILDDIR>>/src/parallel/WriteHDF5Parallel.cpp:28:
    /<<PKGBUILDDIR>>/src/moab/mhdf_public.h:4:23: fatal error: H5Tpublic.h: No such file or directory
     #include <H5Tpublic.h>
                           ^
    compilation terminated.
    

    @nschloe I'll recheck this locally. Thanks.

  9. Iulian Grindeanu

    I think it is a problem related to ubuntu 17 / hdf5 1.10 installation; in general, we rebuild hdf5, because most of the default hdf5 installations are not parallel; we need to probably test on a ubuntu 17.10 machine; Is there a default parallel hdf5 now? Can we get access to a 17.10 machine somewhere in the cloud?

  10. Nico Schlömer reporter

    Can we get access to a 17.10 machine somewhere in the cloud?

    Note that 17.04 has the same problem. Docker is your friend here.

  11. Vijay M

    Sorry about the late reply. I'm checking this now. I'll create a branch with fixes once I replicate the issue.

  12. Vijay M

    @nschloe The PR has been merged. Please verify if the builds pass. And resolve the issue if everything is good.

  13. Log in to comment