On 2013-01-10 08:20, Marcin Dulak wrote:
Hi,
On 01/10/13 00:30, [email protected] 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?
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.
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.
[email protected]
http://mail.hdfgroup.org/mailman/listinfo/hdf-forum_hdfgroup.org
_______________________________________________
Hdf-forum is for HDF software users discussion.
[email protected]
http://mail.hdfgroup.org/mailman/listinfo/hdf-forum_hdfgroup.org
_______________________________________________
Hdf-forum is for HDF software users discussion.
[email protected]
http://mail.hdfgroup.org/mailman/listinfo/hdf-forum_hdfgroup.org