Intel® oneAPI HPC Toolkit
Get help with building, analyzing, optimizing, and scaling high-performance computing (HPC) applications.
1983 Discussions

How to build HDF5 using Intel compiler?

TamnaSidharth
Beginner
2,218 Views

I am trying to compile hdf5-1.8.22 using intel oneAPI base toolkit/HPC toolkit 2022.1. The Configuration without intel oneAPI was performed with the following commnad: 

CC=$DIR/mpich/bin/mpicc FC=$DIR/mpich/bin/mpif90 CXX=$DIR/mpich/bin/mpicxx CFLAGS=-fPIC ./configure --prefix=$DIR/hdf5 --enable-parallel --enable-fortran --enable-production --enable-shared

The process completed successfully. The configuration with Intel oneAPI looks like this:

CC=$INTEL/oneapi/compiler/latest/linux/bin/intel64/icc CXX=$INTEL/oneapi/compiler/latest/linux/bin/intel64/icpc F77=$INTEL/oneapi/compiler/latest/linux/bin/intel64/ifort MPIF90=$INTEL/oneapi/mpi/latest/bin/mpif90 MPICC=$INTEL/oneapi/mpi/latest/bin/mpicc MPICXX=$INTEL/oneapi/mpi/latest/bin/mpiicpc CFLAGS="-fPIC -O3 -xHost -ip -fno-alias -align" FFLAGS="-fPIC -O3 -xHost -ip -fno-alias -align" CXXFLAGS="-fPIC -O3 -xHost -ip -fno-alias -align" FFLAGS="-I$INTEL/oneapi/mpi/latest/include -L$INTEL/oneapi/mpi/latest/lib" ./configure --prefix=$DIR/hdf5 --enable-parallel --enable-fortran --enable-production --enable-shared --enable-static --enable-hl --with-szlib=$DIR/szip-2.1 --with-zlib=$DIR/zlib-1.2.7

It fails with the following log:

checking for an ANSI C-conforming const... yes
checking if the compiler understands  __inline__... yes
checking if the compiler understands __inline... yes
checking if the compiler understands inline... yes
checking for __attribute__ extension... yes
checking for __func__ extension... yes
checking for __FUNCTION__ extension... yes
checking for C99 designated initialization support... yes
checking how to print long long... %unknownd and %unknownu
checking Threads support system scope... no
checking enable debugging symbols... no
checking enable developer warnings... no
checking profiling... no
checking optimization level... high
checking for debug flags... none
checking whether function stack tracking is enabled... no
checking whether metadata trace file code is enabled... no
checking for API tracing... no
checking for instrumented library... no
checking whether to clear file buffers... yes
checking whether a memory checking tool will be used... no
checking for parallel support files... provided by compiler
checking whether a simple MPI-IO C program can be linked... no
configure: error: unable to link a simple MPI-IO C program

How to fix this error?

UPD: If I use CC=mpiicc the full error log looks like this:

configure:4562: $? = 0
configure:4551: /../../intel/oneapi/mpi/latest/bin/mpiicc -qversion >&5
icc: command line warning #10006: ignoring unknown option '-qversion'
ld: cannot find -lmpifort
ld: cannot find -lmpi
configure:4562: $? = 1
configure:4582: checking whether the C compiler works
configure:4604: /../../intel/oneapi/mpi/latest/bin/mpiicc  -fPIC -O3 -xHost -ip -fno-alias -align     conftest.c  >&5
ld: cannot find -lmpifort
ld: cannot find -lmpi
configure:4608: $? = 1
configure:4646: result: no
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME "HDF5"
| #define PACKAGE_TARNAME "hdf5"
| #define PACKAGE_VERSION "1.8.22"
| #define PACKAGE_STRING "HDF5 1.8.22"
| #define PACKAGE_BUGREPORT "help@hdfgroup.org"
| #define PACKAGE_URL ""
| #define PACKAGE "hdf5"
| #define VERSION "1.8.22"
| /* end confdefs.h.  */
|
| int
| main ()
| {
|
|   ;
|   return 0;
| }
configure:4651: error: in `/../../hdf5-1.8.22':
configure:4653: error: C compiler cannot create executables

 

0 Kudos
4 Replies
HemanthCH_Intel
Moderator
2,192 Views

Hi,

 

Thanks for reaching out to us.

 

We can build the HDF5-1.13.1 application successfully. So we suggest you try any of the latest versions of HDF5.

We followed the below steps to build the application :

 

 

git clone https://github.com/HDFGroup/hdf5.git
./autogen.sh
./configure --prefix=/home/intel/hemanth/hdf5 --enable-fortran --enable-shared --enable-parallel --with-pic CC=mpiicc FC=mpiifort CXX=mpiicpc CFLAGS="-fPIC -O3 -xHost -ip -fno-alias -align" FFLAGS="-fPIC -O3 -xHost -ip -fno-alias -align" CXXFLAGS="-fPIC -O3 -xHost -ip -fno-alias -align" FFLAGS="-I/opt/intel/oneapi/mpi/latest/include -L/opt/intel/oneapi/mpi/latest/lib"  --with-szlib=/home/intel/hdf5/szip-2.1 --with-zlib=/home/intel/hdf5/zlib-1.2.7
make

 

 

Thanks & Regards,

Hemanth.

 

 

HuanWang
Novice
2,111 Views

Hi,

I come to this link when I was hindered by the similar problem on compiling HDF5-1.12.1 with the Intel oneAPI HPC 2022.1.2.117 on Ubuntu 20.04 system.

Thank you for your suggestion. However, I got other problems...

I tried to git clone the latest HDF5 followed by your code, but the next step in the hdf5 directory, it appeared like


**************************
* HDF5 autogen.sh script *
**************************

dirname: missing operand
Try 'dirname --help' for more information.
Running trace script:
./autogen.sh: 215: bin/trace: Permission denied
(base) huan@grape:~/Downloads/hdf5$ 

 

I also tried to add sudo, but it did not work.

(base) huan@grape:~/Downloads/hdf5$ 
(base) huan@grape:~/Downloads/hdf5$ sudo ./autogen.sh 
[sudo] password for huan: 

**************************
* HDF5 autogen.sh script *
**************************

dirname: missing operand
Try 'dirname --help' for more information.
dirname: missing operand
Try 'dirname --help' for more information.
Running trace script:
./autogen.sh: 215: bin/trace: Permission denied
(base) huan@grape:~/Downloads/hdf5$ 
(base) huan@grape:~/Downloads/hdf5$ 

 

I also found that there is NO configure file in the hdf5 directory!

 

 

Then, I returned to the hdf5 version 1.12.1 and tried your code. Firstly, I did like

(base) huan@grape:~/Downloads/hdf5-1.12.1$ ./autogen.sh 

**************************
* HDF5 autogen.sh script *
**************************

dirname: missing operand
Try 'dirname --help' for more information.
Running trace script:
Finished processing HDF5 API calls

Running error generation script:
Generating 'H5Epubgen.h'
Generating 'H5Einit.h'
Generating 'H5Eterm.h'
Generating 'H5Edefin.h'

Running API version generation script:
Generating 'src/H5version.h'

Running overflow macro generation script:
Generating 'H5overflow.h'

/opt/anaconda3/bin/libtoolize --copy --force
libtoolize: putting auxiliary files in AC_CONFIG_AUX_DIR, 'bin'.
libtoolize: copying file 'bin/ltmain.sh'
libtoolize: putting macros in AC_CONFIG_MACRO_DIRS, 'm4'.
libtoolize: copying file 'm4/libtool.m4'
libtoolize: copying file 'm4/ltoptions.m4'
libtoolize: copying file 'm4/ltsugar.m4'
libtoolize: copying file 'm4/ltversion.m4'
libtoolize: copying file 'm4/lt~obsolete.m4'
libtoolize: Consider adding '-I m4' to ACLOCAL_AMFLAGS in Makefile.am.

NOTE: You can ignore the warning about adding -I m4.
      We already do this in an included file.

--force -I m4 -I /opt/anaconda3/bin/../share/aclocal
./autogen.sh: 271: --force: not found
(base) huan@grape:~/Downloads/hdf5-1.12.1$

It worked fine, and then I found that "FFLAGS" (behind the FCFLAGS) in your code is NOT in the configure options. Here I show the options below.

Some influential environment variables:
  CC          C compiler command
  CFLAGS      C compiler flags
  LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
              nonstandard directory <lib dir>
  LIBS        libraries to pass to the linker, e.g. -l<library>
  CPPFLAGS    (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
              you have headers in a nonstandard directory <include dir>
  CPP         C preprocessor
  FC          Fortran compiler command
  FCFLAGS     Fortran compiler flags
  CXX         C++ compiler command
  CXXFLAGS    C++ compiler flags
  CXXCPP      C++ preprocessor
  DOXYGEN_PAPER_SIZE
              a4wide (default), a4, letter, legal or executive
  LT_SYS_LIBRARY_PATH
              User-defined run-time library search path.

Use these variables to override the choices made by `configure' or to help
it to find libraries and programs with nonstandard names/locations.

Should the first "FFLAGS" in your code be "FCFLAGS" ?

And the second "FFLAGS= -I/.../include -L/.../lib " might be "LDFLAGS" ?

 

So, I tried with

(base) huan@grape:~/Downloads/hdf5-1.12.1$ ./configure --prefix=/opt/hdf5 --enable-fortran --enable-parallel --enable-shared --with-pic CC=mpiicc FC=mpiifort CXX=mpiicpc \
> CFLAGS="-fPIC -O3 -xHost -ip -fno-alias -align" FCFLAGS="-fPIC -O3 -xHost -ip -fno-alias -align" CXXFLAGS="-fPIC -O3 -xHost -ip -fno-alias -align" \
> LDFLAGS="-I/opt/intel/oneapi/mpi/latest/include -L/opt/intel/oneapi/mpi/latest/lib" \
> --with-szlib=/opt/szip21 --with-zlib=/opt/zlib121 

 

It seemed fine at first.

SUMMARY OF THE HDF5 CONFIGURATION
	    =================================

General Information:
-------------------
                   HDF5 Version: 1.12.1
                  Configured on: Thu Mar  3 13:40:17 CST 2022
                  Configured by: huan@grape
                    Host system: x86_64-unknown-linux-gnu
              Uname information: Linux grape 5.13.0-30-generic #33~20.04.1-Ubuntu SMP Mon Feb 7 14:25:10 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux
                       Byte sex: little-endian
             Installation point: /opt/hdf5

Compiling Options:
------------------
                     Build Mode: production
              Debugging Symbols: no
                        Asserts: no
                      Profiling: no
             Optimization Level: high

Linking Options:
----------------
                      Libraries: static, shared
  Statically Linked Executables: 
                        LDFLAGS: -I/opt/intel/oneapi/mpi/latest/include -L/opt/intel/oneapi/mpi/latest/lib
                     H5_LDFLAGS: 
                     AM_LDFLAGS:  -L/opt/zlib121/lib -L/opt/szip21/lib
                Extra libraries: -lsz -lz -ldl -lm 
                       Archiver: ar
                       AR_FLAGS: cr
                         Ranlib: ranlib

Languages:
----------
                              C: yes
                     C Compiler: /opt/intel/oneapi/mpi/2021.5.1//bin/mpiicc ( Intel(R) C Intel(R) 64 Compiler Version 2021.5.0 Build 20211109_000000)
                       CPPFLAGS: 
                    H5_CPPFLAGS: -D_GNU_SOURCE -D_POSIX_C_SOURCE=200809L   -DNDEBUG -UH5_DEBUG_API
                    AM_CPPFLAGS:  -I/opt/zlib121/include -I/opt/szip21/include
                        C Flags: -fPIC -O3 -xHost -ip -fno-alias -align
                     H5 C Flags:   -std=c99 -Wall -Wcomment -Wdeprecated -Wextra-tokens -Wformat -Wformat-security -Wmain -Wmissing-declarations -Wmissing-prototypes -Wp64 -Wpointer-arith -Wreturn-type -Wshadow -Wstrict-prototypes -Wtrigraphs -Wuninitialized -Wunknown-pragmas -Wunused-function -Wunused-variable -Wwrite-strings -Wextra-tokens -Wformat -Wformat-security -Wic-pointer -Wshadow -Wsign-compare -Wtrigraphs -Wwrite-strings   -Wl,-s   -O3
                     AM C Flags: 
               Shared C Library: yes
               Static C Library: yes


                        Fortran: yes
               Fortran Compiler: /opt/intel/oneapi/mpi/2021.5.1//bin/mpiifort ( Intel(R) Fortran Intel(R) 64 Compiler Version 2021.5.0 Build 20211109_000000)
                  Fortran Flags: -fPIC -O3 -xHost -ip -fno-alias -align
               H5 Fortran Flags:  -stand:f03 -free -warn:all    -O3
               AM Fortran Flags: 
         Shared Fortran Library: yes
         Static Fortran Library: yes

                            C++: no

                           Java: no


Features:
---------
                   Parallel HDF5: yes
Parallel Filtered Dataset Writes: yes
              Large Parallel I/O: yes
              High-level library: yes
                Build HDF5 Tests: yes
                Build HDF5 Tools: yes
                    Threadsafety: no (recursive RW locks: no)
             Default API mapping: v112
  With deprecated public symbols: yes
          I/O filters (external): deflate(zlib),szip(encoder)
                             MPE: 
                   Map (H5M) API: no
                      Direct VFD: no
                      Mirror VFD: no
              (Read-Only) S3 VFD: no
            (Read-Only) HDFS VFD: no
                         dmalloc: no
  Packages w/ extra debug output: none
                     API tracing: no
            Using memory checker: no
 Memory allocation sanity checks: no
          Function stack tracing: no
                Use file locking: best-effort
       Strict file format checks: no
    Optimization instrumentation: no
(base) huan@grape:~/Downloads/hdf5-1.12.1$

 

However, the next step, "make", produced lots of warnings...

H5Tconv.c(8323): warning #2259: non-pointer conversion from "unsigned long long" to "double" may lose significant bits
      H5T_CONV_Fx(DOUBLE, ULLONG, double, unsigned long long, 0, ULLONG_MAX);
      ^

H5Tconv.c(8323): warning #2259: non-pointer conversion from "unsigned long long" to "double" may lose significant bits
      H5T_CONV_Fx(DOUBLE, ULLONG, double, unsigned long long, 0, ULLONG_MAX);
      ^

H5Tconv.c(8323): warning #2259: non-pointer conversion from "unsigned long long" to "double" may lose significant bits
      H5T_CONV_Fx(DOUBLE, ULLONG, double, unsigned long long, 0, ULLONG_MAX);
      ^

H5Tconv.c(8462): warning #2259: non-pointer conversion from "size_t={unsigned long}" to "double" may lose significant bits
                  double olap_d = HDceil((double)(dst_p->shared->size) /
                                  ^

H5Tconv.c(8462): warning #2259: non-pointer conversion from "unsigned long" to "double" may lose significant bits
                  double olap_d = HDceil((double)(dst_p->shared->size) /
                                  ^

H5Tconv.c(8469): warning #2259: non-pointer conversion from "size_t={unsigned long}" to "double" may lose significant bits
                  double olap_d = HDceil((double)(src_p->shared->size) /

 

and

./src/H5Ppublic.h(6333): warning #1946: trigraph detected and converted
   *            <td>????????</td>
                          ^

In file included from ../src/hdf5.h(35),
                 from h5test.h(27),
                 from testhdf5.h(22),
                 from testhdf5.c(36):
../src/H5Ppublic.h(6336): warning #1946: trigraph detected and converted
   *            <td>PPPP????</td>
                          ^

  CC       tarray.o
icc: command line remark #10010: option '-fno-alias' is deprecated and will be removed in a future release. See '-help deprecated'
In file included from ../src/hdf5.h(35),
                 from h5test.h(27),
                 from testhdf5.h(22),
                 from tarray.c(22):
../src/H5Ppublic.h(6333): warning #1946: trigraph detected and converted
   *            <td>????????</td>
                          ^

In file included from ../src/hdf5.h(35),
                 from h5test.h(27),
                 from testhdf5.h(22),
                 from tarray.c(22):
../src/H5Ppublic.h(6336): warning #1946: trigraph detected and converted
   *            <td>PPPP????</td>
                          ^

  CC       tattr.o
icc: command line remark #10010: option '-fno-alias' is deprecated and will be removed in a future release. See '-help deprecated'
In file included from ../src/hdf5.h(35),
                 from h5test.h(27),
                 from testhdf5.h(22),
                 from tattr.c(22):

 

and finally,

-----^
H5TBff_gen.F90(342): warning #7025: This directive is not standard F2003.
!DEC$endif
-----^
libtool: compile:  mpiifort -I. -I../../../src -I../../../fortran/src -stand:f03 -free -warn:all -O3 -I../../../fortran/src -I../../../fortran/src -fPIC -O3 -xHost -ip -fno-alias -align -c H5TBff_gen.F90  -fPIC -o H5TBff_gen.o >/dev/null 2>&1
  FCLD     libhdf5hl_fortran.la
make[3]: Leaving directory '/home/huan/Downloads/hdf5-1.12.1/hl/fortran/src'
Making all in test
make[3]: Entering directory '/home/huan/Downloads/hdf5-1.12.1/hl/fortran/test'
mpiifort  -I. -I../../../src -I../../../fortran/src     -stand:f03 -free -warn:all    -O3 -I../../../fortran/src -I../../../hl/fortran/src -I../../../fortran/test -I../../../fortran/src -I../../../fortran/test -I../../../hl/fortran/src -fPIC -O3 -xHost -ip -fno-alias -align -c -o tstds.o tstds.F90
ifort: command line warning #10158: ignoring option '-warn'; argument must be separate
  FCLD     tstds
ifort: command line warning #10158: ignoring option '-warn'; argument must be separate
mpiifort  -I. -I../../../src -I../../../fortran/src     -stand:f03 -free -warn:all    -O3 -I../../../fortran/src -I../../../hl/fortran/src -I../../../fortran/test -I../../../fortran/src -I../../../fortran/test -I../../../hl/fortran/src -fPIC -O3 -xHost -ip -fno-alias -align -c -o tstlite.o tstlite.F90
ifort: command line warning #10158: ignoring option '-warn'; argument must be separate
tstlite.F90(1790): warning #7416: Fortran 2003 does not allow this intrinsic procedure.   [STORAGE_SIZE]
    SizeOf_buf_type = STORAGE_SIZE(buf3(1), c_size_t)/STORAGE_SIZE(c_char_'a',c_size_t)
----------------------^
tstlite.F90(1790): warning #7416: Fortran 2003 does not allow this intrinsic procedure.   [STORAGE_SIZE]
    SizeOf_buf_type = STORAGE_SIZE(buf3(1), c_size_t)/STORAGE_SIZE(c_char_'a',c_size_t)
------------------------------------------------------^
tstlite.F90(1801): warning #7416: Fortran 2003 does not allow this intrinsic procedure.   [STORAGE_SIZE]
    SizeOf_buf_type = STORAGE_SIZE(bufr3(1), c_size_t)/STORAGE_SIZE(c_char_'a',c_size_t)
----------------------^
tstlite.F90(1801): warning #7416: Fortran 2003 does not allow this intrinsic procedure.   [STORAGE_SIZE]
    SizeOf_buf_type = STORAGE_SIZE(bufr3(1), c_size_t)/STORAGE_SIZE(c_char_'a',c_size_t)
-------------------------------------------------------^
tstlite.F90(1829): warning #7416: Fortran 2003 does not allow this intrinsic procedure.   [STORAGE_SIZE]
    SizeOf_buf_type = STORAGE_SIZE(buf4(1), c_size_t)/STORAGE_SIZE(c_char_'a',c_size_t)
----------------------^
tstlite.F90(1829): warning #7416: Fortran 2003 does not allow this intrinsic procedure.   [STORAGE_SIZE]
    SizeOf_buf_type = STORAGE_SIZE(buf4(1), c_size_t)/STORAGE_SIZE(c_char_'a',c_size_t)
------------------------------------------------------^
tstlite.F90(1851): warning #7416: Fortran 2003 does not allow this intrinsic procedure.   [STORAGE_SIZE]
       SizeOf_buf_type = STORAGE_SIZE(bufr4(1), c_size_t)/STORAGE_SIZE(c_char_'a',c_size_t)
-------------------------^
tstlite.F90(1851): warning #7416: Fortran 2003 does not allow this intrinsic procedure.   [STORAGE_SIZE]
       SizeOf_buf_type = STORAGE_SIZE(bufr4(1), c_size_t)/STORAGE_SIZE(c_char_'a',c_size_t)
----------------------------------------------------------^
  FCLD     tstlite
ifort: command line warning #10158: ignoring option '-warn'; argument must be separate
mpiifort  -I. -I../../../src -I../../../fortran/src     -stand:f03 -free -warn:all    -O3 -I../../../fortran/src -I../../../hl/fortran/src -I../../../fortran/test -I../../../fortran/src -I../../../fortran/test -I../../../hl/fortran/src -fPIC -O3 -xHost -ip -fno-alias -align -c -o tstimage.o tstimage.F90
ifort: command line warning #10158: ignoring option '-warn'; argument must be separate
  FCLD     tstimage
ifort: command line warning #10158: ignoring option '-warn'; argument must be separate
mpiifort  -I. -I../../../src -I../../../fortran/src     -stand:f03 -free -warn:all    -O3 -I../../../fortran/src -I../../../hl/fortran/src -I../../../fortran/test -I../../../fortran/src -I../../../fortran/test -I../../../hl/fortran/src -fPIC -O3 -xHost -ip -fno-alias -align -c -o tsttable.o tsttable.F90
ifort: command line warning #10158: ignoring option '-warn'; argument must be separate
tsttable.F90(561): warning #6379: The structure contains one or more misaligned fields.   [PARTICLE_T]
  TYPE particle_t
-------^
tsttable.F90(104): warning #7416: Fortran 2003 does not allow this intrinsic procedure.   [STORAGE_SIZE]
  SIZEOF_X = storage_size(bufd(1))/storage_size(c_char_'a')
-------------^
tsttable.F90(104): warning #7416: Fortran 2003 does not allow this intrinsic procedure.   [STORAGE_SIZE]
  SIZEOF_X = storage_size(bufd(1))/storage_size(c_char_'a')
-----------------------------------^
  FCLD     tsttable
ifort: command line warning #10158: ignoring option '-warn'; argument must be separate
make[3]: Leaving directory '/home/huan/Downloads/hdf5-1.12.1/hl/fortran/test'
make[3]: Entering directory '/home/huan/Downloads/hdf5-1.12.1/hl/fortran'
make[3]: Nothing to be done for 'all-am'.
make[3]: Leaving directory '/home/huan/Downloads/hdf5-1.12.1/hl/fortran'
make[2]: Leaving directory '/home/huan/Downloads/hdf5-1.12.1/hl/fortran'
make[2]: Entering directory '/home/huan/Downloads/hdf5-1.12.1/hl'
make[2]: Nothing to be done for 'all-am'.
make[2]: Leaving directory '/home/huan/Downloads/hdf5-1.12.1/hl'
make[1]: Leaving directory '/home/huan/Downloads/hdf5-1.12.1/hl'
(base) huan@grape:~/Downloads/hdf5-1.12.1$ 

 

Do you have further suggestions? Thanks very much in advance.

 

HemanthCH_Intel
Moderator
2,166 Views

Hi,


We haven't heard back from you. Could you please provide an update on your issue?


Thanks & Regards,

Hemanth


HemanthCH_Intel
Moderator
2,144 Views

Hi,


We assume that your issue is resolved. If you need any additional information, please post a new question as this thread will no longer be monitored by Intel.


Thanks & Regards,

Hemanth.


Reply