hdf5-1.8.10 with open64-5.0 compilation fails on CentOS6

Hi,

i'm building with (default el6 openmpi):

module load openmpi-i386
export PATH=/opt/open64/bin:${PATH}
export OMPI_CC=opencc
export OMPI_CXX=openCC
export OMPI_F77=openf90
export OMPI_FC=openf90
mpicc --version
mpif90 --version
FC=mpif90 CC=mpicc CXX=mpic++ \
./configure --prefix=${HOME}/hdf5-1.8.10-1 \
--enable-parallel \
--enable-fortran \
--enable-fortran2003 \
--enable-dependency-tracking \
--enable-shared \
--enable-static \
--enable-static-exec \
--enable-debug=all
make

resulting with:

   CALL h5tcreate_f(H5T_COMPOUND_F, INT(SIZEOF(fill_ctype),size_t), comp_type_id, error)
^
openf95-700 openf90: ERROR TEST_CREATE, File = tH5P_F03.f90, Line = 142, Column = 40
   The intrinsic call "SIZEOF" is being made with illegal arguments.

   CALL VERIFY("h5pget_nprops_f", INT(nprops), 4, total_error)
        ^
openf95-1675 openf90: WARNING TEST_GENPROP_CLASS_CALLBACK, File = tH5P_F03.f90, Line = 309, Column = 8
   Intrinsic "VERIFY" is a function, so this call to a subroutine will be treated as "external"

It looks like there is a conflict between the open64 intrinsic and hdf5 names.
See also http://www.democritos.it/pipermail/pw_forum/2009-August/013830.html

Best regards,

Marcin

SIZEOF is a non-standard compiler intrinsic. Your compiler's version of SIZEOF can not handle derived types. Fortunately, F2008 has introduced intrinsic functions STORAGE_SIZE and C_SIZEOF, but this will probably not help you as your compiler probably does not have those. Most of the newer compilers have the SIZEOF function that can handle derived types if upgrading is an option.

···

On 2013-01-09 09:37, Marcin Dulak wrote:

Hi,

i'm building with (default el6 openmpi):

module load openmpi-i386
export PATH=/opt/open64/bin:${PATH}
export OMPI_CC=opencc
export OMPI_CXX=openCC
export OMPI_F77=openf90
export OMPI_FC=openf90
mpicc --version
mpif90 --version
FC=mpif90 CC=mpicc CXX=mpic++ \
./configure --prefix=${HOME}/hdf5-1.8.10-1 \
--enable-parallel \
--enable-fortran \
--enable-fortran2003 \
--enable-dependency-tracking \
--enable-shared \
--enable-static \
--enable-static-exec \
--enable-debug=all
make

resulting with:

  CALL h5tcreate_f(H5T_COMPOUND_F, INT(SIZEOF(fill_ctype),size_t),
comp_type_id, error)
^
openf95-700 openf90: ERROR TEST_CREATE, File = tH5P_F03.f90, Line =
142, Column = 40
  The intrinsic call "SIZEOF" is being made with illegal arguments.

  CALL VERIFY("h5pget_nprops_f", INT(nprops), 4, total_error)
       ^
openf95-1675 openf90: WARNING TEST_GENPROP_CLASS_CALLBACK, File =
tH5P_F03.f90, Line = 309, Column = 8
  Intrinsic "VERIFY" is a function, so this call to a subroutine will
be treated as "external"

It looks like there is a conflict between the open64 intrinsic and hdf5 names.
See also http://www.democritos.it/pipermail/pw_forum/2009-August/013830.html

Best regards,

Marcin

_______________________________________________
Hdf-forum is for HDF software users discussion.
Hdf-forum@hdfgroup.org
http://mail.hdfgroup.org/mailman/listinfo/hdf-forum_hdfgroup.org

Hi,

SIZEOF is a non-standard compiler intrinsic. Your compiler's version of SIZEOF can not handle derived types. Fortunately, F2008 has introduced intrinsic functions STORAGE_SIZE and C_SIZEOF, but this will probably not help you as your compiler probably does not have those. Most of the newer compilers have the SIZEOF function that can handle derived types if upgrading is an option.

there is a bug opened for that https://bugs.open64.net/show_bug.cgi?id=866 but no response since 2011.
What about adding a simple check for derived types SIZEOF to the hdf5 configure check for FORTRAN_HAVE_SIZEOF?
Will that use something else instead of SIZEOF?
The point is that hdf5 requires not only a presence of SIZEOF intrinsic, but also the one that supports those derived types.

Best regards,

Marcin

···

On 01/10/13 00:30, brtnfld@hdfgroup.org wrote:

On 2013-01-09 09:37, Marcin Dulak wrote:

Hi,

i'm building with (default el6 openmpi):

module load openmpi-i386
export PATH=/opt/open64/bin:${PATH}
export OMPI_CC=opencc
export OMPI_CXX=openCC
export OMPI_F77=openf90
export OMPI_FC=openf90
mpicc --version
mpif90 --version
FC=mpif90 CC=mpicc CXX=mpic++ \
./configure --prefix=${HOME}/hdf5-1.8.10-1 \
--enable-parallel \
--enable-fortran \
--enable-fortran2003 \
--enable-dependency-tracking \
--enable-shared \
--enable-static \
--enable-static-exec \
--enable-debug=all
make

resulting with:

  CALL h5tcreate_f(H5T_COMPOUND_F, INT(SIZEOF(fill_ctype),size_t),
comp_type_id, error)
^
openf95-700 openf90: ERROR TEST_CREATE, File = tH5P_F03.f90, Line =
142, Column = 40
  The intrinsic call "SIZEOF" is being made with illegal arguments.

  CALL VERIFY("h5pget_nprops_f", INT(nprops), 4, total_error)
       ^
openf95-1675 openf90: WARNING TEST_GENPROP_CLASS_CALLBACK, File =
tH5P_F03.f90, Line = 309, Column = 8
  Intrinsic "VERIFY" is a function, so this call to a subroutine will
be treated as "external"

It looks like there is a conflict between the open64 intrinsic and hdf5 names.
See also http://www.democritos.it/pipermail/pw_forum/2009-August/013830.html

Best regards,

Marcin

_______________________________________________
Hdf-forum is for HDF software users discussion.
Hdf-forum@hdfgroup.org
http://mail.hdfgroup.org/mailman/listinfo/hdf-forum_hdfgroup.org

_______________________________________________
Hdf-forum is for HDF software users discussion.
Hdf-forum@hdfgroup.org
http://mail.hdfgroup.org/mailman/listinfo/hdf-forum_hdfgroup.org

--
***********************************
  Marcin Dulak
Technical University of Denmark
Department of Physics
Building 307, Room 229
DK-2800 Kongens Lyngby
Denmark
Tel.: (+45) 4525 3157
Fax.: (+45) 4593 2399
email: Marcin.Dulak@fysik.dtu.dk

***********************************

Hi,

SIZEOF is a non-standard compiler intrinsic. Your compiler's version of SIZEOF can not handle derived types. Fortunately, F2008 has introduced intrinsic functions STORAGE_SIZE and C_SIZEOF, but this will probably not help you as your compiler probably does not have those. Most of the newer compilers have the SIZEOF function that can handle derived types if upgrading is an option.

there is a bug opened for that
https://bugs.open64.net/show_bug.cgi?id=866 but no response since
2011.
What about adding a simple check for derived types SIZEOF to the hdf5
configure check for FORTRAN_HAVE_SIZEOF?
Will that use something else instead of SIZEOF?
The point is that hdf5 requires not only a presence of SIZEOF
intrinsic, but also the one that supports those derived types.

We have a SIZEOF check, but we don't test if it can handle derived types. The SIZEOF check only comes into play when you use --enable-fortran2003, and it is our experience that if SIZEOF can not handle derived types then odds are the compiler also can not handle other F2003 requirements. If you ignore the SIZEOF error for now, you will also receive multiple errors for C_LOC and C_F_POINTER when compiling the hdf5 tests. The compiler is to buggy (in its implementation of the F2003 standard) to use the option --enable-fortran2003, so if you need the F2003 hdf5 features then you will have to use a different compiler (or submit bug reports to the compiler, but turn around time seems long). Otherwise leave off the --enable-fortran2003 and the library compiles/runs fine (but will not include F2003 APIs). Looks like we need additional tests at configure time for making sure the selected compiler is up to the F2003 task.

···

On 2013-01-10 08:20, Marcin Dulak wrote:

On 01/10/13 00:30, brtnfld@hdfgroup.org wrote:

Best regards,

Marcin

On 2013-01-09 09:37, Marcin Dulak wrote:

Hi,

i'm building with (default el6 openmpi):

module load openmpi-i386
export PATH=/opt/open64/bin:${PATH}
export OMPI_CC=opencc
export OMPI_CXX=openCC
export OMPI_F77=openf90
export OMPI_FC=openf90
mpicc --version
mpif90 --version
FC=mpif90 CC=mpicc CXX=mpic++ \
./configure --prefix=${HOME}/hdf5-1.8.10-1 \
--enable-parallel \
--enable-fortran \
--enable-fortran2003 \
--enable-dependency-tracking \
--enable-shared \
--enable-static \
--enable-static-exec \
--enable-debug=all
make

resulting with:

  CALL h5tcreate_f(H5T_COMPOUND_F, INT(SIZEOF(fill_ctype),size_t),
comp_type_id, error)
^
openf95-700 openf90: ERROR TEST_CREATE, File = tH5P_F03.f90, Line =
142, Column = 40
  The intrinsic call "SIZEOF" is being made with illegal arguments.

  CALL VERIFY("h5pget_nprops_f", INT(nprops), 4, total_error)
       ^
openf95-1675 openf90: WARNING TEST_GENPROP_CLASS_CALLBACK, File =
tH5P_F03.f90, Line = 309, Column = 8
  Intrinsic "VERIFY" is a function, so this call to a subroutine will
be treated as "external"

It looks like there is a conflict between the open64 intrinsic and hdf5 names.
See also http://www.democritos.it/pipermail/pw_forum/2009-August/013830.html

Best regards,

Marcin

_______________________________________________
Hdf-forum is for HDF software users discussion.
Hdf-forum@hdfgroup.org
http://mail.hdfgroup.org/mailman/listinfo/hdf-forum_hdfgroup.org

_______________________________________________
Hdf-forum is for HDF software users discussion.
Hdf-forum@hdfgroup.org
http://mail.hdfgroup.org/mailman/listinfo/hdf-forum_hdfgroup.org

Hi,

···

On 01/10/13 16:59, brtnfld@hdfgroup.org wrote:

On 2013-01-10 08:20, Marcin Dulak wrote:

Hi,

On 01/10/13 00:30, brtnfld@hdfgroup.org wrote:

SIZEOF is a non-standard compiler intrinsic. Your compiler's version of SIZEOF can not handle derived types. Fortunately, F2008 has introduced intrinsic functions STORAGE_SIZE and C_SIZEOF, but this will probably not help you as your compiler probably does not have those. Most of the newer compilers have the SIZEOF function that can handle derived types if upgrading is an option.

there is a bug opened for that
https://bugs.open64.net/show_bug.cgi?id=866 but no response since
2011.
What about adding a simple check for derived types SIZEOF to the hdf5
configure check for FORTRAN_HAVE_SIZEOF?
Will that use something else instead of SIZEOF?

We have a SIZEOF check, but we don't test if it can handle derived types. The SIZEOF check only comes into play when you use --enable-fortran2003, and it is our experience that if SIZEOF can not handle derived types then odds are the compiler also can not handle other F2003 requirements. If you ignore the SIZEOF error for now, you will also receive multiple errors for C_LOC and C_F_POINTER when compiling the hdf5 tests. The compiler is to buggy (in its implementation of the F2003 standard) to use the option --enable-fortran2003, so if you need the F2003 hdf5 features then you will have to use a different compiler (or submit bug reports to the compiler, but turn around time seems long). Otherwise leave off the --enable-fortran2003 and the library compiles/runs fine (but will not include F2003 APIs). Looks like we need additional tests at configure time for making sure the selected compiler is up to the F2003 task.

dropping --enable-fortran2003 helps.
HDF5 compiles, but the tests fail early on i686:

============================
Testing ohdr

  ohdr Test Log

Using default file format:
Testing object header continuation block lt-ohdr: H5AC.c:741: H5AC_expunge_entry: Assertion `((addr)!=((haddr_t)(int64_t)(-1)))' failed.
0.08user 0.06system 0:00.43elapsed 34%CPU (0avgtext+0avgdata 29504maxresident)k
0inputs+160outputs (0major+10560minor)pagefaults 0swaps

Therefore i moved to a x86_64 (still CentOS6), with a larger memory available,
and now, during the (long) tests only some (16 in total) fail:

Testing ph5diff h5diff_basic1.h5 *FAILED*
Testing ph5diff -d -4 h5diff_basic1.h5 h5diff_basic2.h5 g1/dset3 g1/ds*FAILED*
Testing ph5diff -d 0x1 h5diff_basic1.h5 h5diff_basic2.h5 g1/dset3 g1/d*FAILED*
Testing ph5diff -p -4 h5diff_basic1.h5 h5diff_basic2.h5 g1/dset3 g1/ds*FAILED*
Testing ph5diff -p 0x1 h5diff_basic1.h5 h5diff_basic2.h5 g1/dset3 g1/d*FAILED*
Testing ph5diff -n -4 h5diff_basic1.h5 h5diff_basic2.h5 g1/dset3 g1/ds*FAILED*
Testing ph5diff -n 0 h5diff_basic1.h5 h5diff_basic2.h5 g1/dset3 g1/dse*FAILED*
Testing ph5diff -n u h5diff_basic1.h5 h5diff_basic2.h5 g1/dset3 g1/dse*FAILED*
Testing ph5diff -n 0x1 h5diff_basic1.h5 h5diff_basic2.h5 g1/dset3 g1/d*FAILED*
Testing ph5diff -v -d 5 -p 0.05 --use-system-epsilon h5diff_basic1.h5 *FAILED*
Testing ph5diff -v -d 5 -p 0.05 h5diff_basic1.h5 h5diff_basic2.h5 /g1/*FAILED*
Testing ph5diff -v -p 0.05 -d 5 h5diff_basic1.h5 h5diff_basic2.h5 /g1/*FAILED*
Testing ph5diff -v -d 5 --use-system-epsilon h5diff_basic1.h5 h5diff_b*FAILED*
Testing ph5diff -v --use-system-epsilon -d 5 h5diff_basic1.h5 h5diff_b*FAILED*
Testing ph5diff -v -p 0.05 --use-system-epsilon h5diff_basic1.h5 h5dif*FAILED*
Testing ph5diff -v --use-system-epsilon -p 0.05 h5diff_basic1.h5 h5dif*FAILED*

With some additional information (this is for the first failure):

       h5diff error: missing file names
     + mpiexec noticed that the job aborted, but has no info as to the process
     + that caused that situation.
       usage: h5diff [OPTIONS] file1 file2 [obj1[ obj2]]
====The actual output (./testfiles/h5diff_600.out-sav)
     usage: h5diff [OPTIONS] file1 file2 [obj1[ obj2]]

Next failures complain about "<-d -4> is not a valid option", etc.
What can be causing those?
I have full logs available if anybody is interested.

Best regards,

Marcin

The point is that hdf5 requires not only a presence of SIZEOF
intrinsic, but also the one that supports those derived types.

Best regards,

Marcin

On 2013-01-09 09:37, Marcin Dulak wrote:

Hi,

i'm building with (default el6 openmpi):

module load openmpi-i386
export PATH=/opt/open64/bin:${PATH}
export OMPI_CC=opencc
export OMPI_CXX=openCC
export OMPI_F77=openf90
export OMPI_FC=openf90
mpicc --version
mpif90 --version
FC=mpif90 CC=mpicc CXX=mpic++ \
./configure --prefix=${HOME}/hdf5-1.8.10-1 \
--enable-parallel \
--enable-fortran \
--enable-fortran2003 \
--enable-dependency-tracking \
--enable-shared \
--enable-static \
--enable-static-exec \
--enable-debug=all
make

resulting with:

  CALL h5tcreate_f(H5T_COMPOUND_F, INT(SIZEOF(fill_ctype),size_t),
comp_type_id, error)
^
openf95-700 openf90: ERROR TEST_CREATE, File = tH5P_F03.f90, Line =
142, Column = 40
  The intrinsic call "SIZEOF" is being made with illegal arguments.

  CALL VERIFY("h5pget_nprops_f", INT(nprops), 4, total_error)
       ^
openf95-1675 openf90: WARNING TEST_GENPROP_CLASS_CALLBACK, File =
tH5P_F03.f90, Line = 309, Column = 8
  Intrinsic "VERIFY" is a function, so this call to a subroutine will
be treated as "external"

It looks like there is a conflict between the open64 intrinsic and hdf5 names.
See also http://www.democritos.it/pipermail/pw_forum/2009-August/013830.html

Best regards,

Marcin

_______________________________________________
Hdf-forum is for HDF software users discussion.
Hdf-forum@hdfgroup.org
http://mail.hdfgroup.org/mailman/listinfo/hdf-forum_hdfgroup.org

_______________________________________________
Hdf-forum is for HDF software users discussion.
Hdf-forum@hdfgroup.org
http://mail.hdfgroup.org/mailman/listinfo/hdf-forum_hdfgroup.org

--
***********************************
  Marcin Dulak
Technical University of Denmark
Department of Physics
Building 307, Room 229
DK-2800 Kongens Lyngby
Denmark
Tel.: (+45) 4525 3157
Fax.: (+45) 4593 2399
email: Marcin.Dulak@fysik.dtu.dk

***********************************