HDF5 Failed to configure with New Intel Compilers

So in 2023 Intel is forcing everyone to update their compilers from the old intel compilers (ifort, icc, etc) to new compilers (icx, icpx, ifx, etc)

So I am trying to install HDF5 using the new compiler options that has been released ahead of the forced upgrade.

export CC=icx
export CXX=icpx
export FC=ifx
export F77=ifx
export F90=ifx
export MPIFC="mpiifort -fc=ifx"
export MPIF77="mpiifort -fc=ifx"
export MPIF90="mpiifort -fc=ifx"
export MPICC="mpiicc -cc=icx"
export MPICXX="mpiicpc -cxx=icpx"

I successfully installed zlib, libpng, jasper 1.900.1 with the new intel compilers. But when I get to hdf5 it fails.

I have attached the relevant logs to this thread.

configure.log (6.1 KB)
config.log (138.9 KB)

These are the commands I used to install HDF5:

  tar -xvzf hdf5-1_14_0.tar.gz
  cd hdf5-hdf5-1_14_0

  CC=$MPICC FC=$MPIFC CXX=$MPICXX F90=$MPIF90 F77=$MPIF77 CFLAGS="-fPIC -fPIE -diag-disable=10441 -O3" ./configure --prefix=$DIR/grib2 --with-zlib=$DIR/grib2 --enable-hl --enable-fortran --enable-parallel | tee configure.log

Unfortunately, we haven’t really been testing with OneAPI so our current releases can encounter problems with the new compiler names. We’ll be addressing this starting with the HDF5 1.10.10 release next month. 1.14.1 will probably come out later in the spring and we should have full OneAPI support in that release.

Thank you for the response.

One stopgap solution might be to install Intel’s HPC Toolkit, which includes the old compilers (icc, etc.). It’ll spit out a bunch of warnings about icc, etc. being deprecated, but it’ll build just like before.

This already works if you use CMake instead of ./configure - I’ve been using the icx and ifx to built HDF5 with Intel MPI for some time already. Both 1.12.2 and 1.14.0.

I have never used CMake before. So how do you install hdf5 with it?

Also can it install phdf5 too?

This is what I would need to convert to cmake…if you can help me I would be very appreciative

tar -xvzf hdf5-1_14_0.tar.gz
cd hdf5-hdf5-1_14_0
CC=$MPICC FC=$MPIFC F77=$MPIF77 F90=$MPIF90 CXX=$MPICXX ./configure --prefix=$DIR/grib2 --with-zlib=$DIR/grib2 --enable-hl --enable-fortran --enable-parallel
make -j $CPU_HALF_EVEN
make -j $CPU_HALF_EVEN install 2>&1 | tee make.install.log
#make check

  export HDF5=$DIR/grib2
  export PHDF5=$DIR/grib2

This is how I configure and build HDF5 with CMake:

export CC="icx"
export CXX="icpx"
export FC="ifx"
cmake \
    -GNinja \
    -DCMAKE_BUILD_TYPE=RelWithDebInfo \
    ../source 2>&1 | tee cmake.log
ninja install 2>&1 | tee ninja.log

Differ certainly from yours, but should get you pointed in the right direction.

You can also try the “ccmake”, this gives you a GUI with the configuration options.

Any idea when 14.1 will come out

@hatheway.will, I’ve updated GitHub Action for Intel OneAPI compilers to include Fortran and match your autoconf settings.

All tests passed on latest (22.04) Ubuntu: https://github.com/hyoklee/hdf5/actions/runs/4441304991

Please try the same exacting setting in the GitHub Action script and see how it goes on your system with CMake.

@hatheway.will , I finally figured out how to install HDF5 with Intel OneAPI using Autotools:

          source /opt/intel/oneapi/setvars.sh
          export PATH=$PATH:/opt/intel/oneapi/mpi/2021.9.0/bin:/opt/intel/oneapi/compiler/2023.1.0/linux/bin
          ./configure  --enable-fortran --enable-parallel CXX="$(which mpiicpc) -cc=$(which icpx)" CC="$(which mpiicc) -cc=$(which icx)" FC="$(which mpiifort) -fc=$(which ifx)" LDFLAGS="-L/opt/intel/oneapi/mpi/2021.9.0/lib -L/opt/intel/oneapi/mpi/2021.9.0/lib/release/"
          make -j
          make check -j 
          sudo make install

See this GitHub Action for the complete example: hdf5/linux-icx-auto.yml at develop · hdfeos/hdf5 · GitHub

See the above Action result: hdf5/WATCHME.md at develop · hdfeos/hdf5 · GitHub