Compare commits
8 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 7e7a85f14f | |||
| fc1322432c | |||
| f5778e0197 | |||
| fb084fdff4 | |||
| be7cd1d471 | |||
| f7b7a45a28 | |||
| e41db835eb | |||
| 8140378213 |
+4
-14
@@ -6,7 +6,7 @@
|
||||
#
|
||||
# License: see file COPYING in top level of source distribution.
|
||||
#
|
||||
AC_INIT([H5hut], [2.0.0rc5], [h5part@lists.psi.ch], H5hut)
|
||||
AC_INIT([H5hut], [2.0.0rc6], [h5part@lists.psi.ch], H5hut)
|
||||
AC_PREREQ(2.60)
|
||||
AC_CONFIG_HEADERS(config.h)
|
||||
AC_CONFIG_MACRO_DIR([m4])
|
||||
@@ -138,7 +138,6 @@ fi
|
||||
AC_PROG_CC($c_compilers)
|
||||
if test "x$ac_cv_prog_cc_c89" = "xno"; then
|
||||
AC_MSG_ERROR([C compiler not found!])
|
||||
exit 1
|
||||
fi
|
||||
|
||||
AC_PROG_CXX($cxx_compilers)
|
||||
@@ -147,7 +146,6 @@ if test "X$ENABLE_FORTRAN" = "Xyes"; then
|
||||
AC_PROG_FC($fc_compiler)
|
||||
if test "x$FC" = "x"; then
|
||||
AC_MSG_ERROR([Fortran compiler not found!])
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
@@ -159,7 +157,6 @@ AX_CXX_COMPILE_STDCXX_11
|
||||
AC_PROG_CC_C99
|
||||
if test "x$ac_cv_prog_cc_c99" = "xno"; then
|
||||
AC_MSG_ERROR([Cannot set C compiler to use C99 standard!])
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
||||
@@ -281,8 +278,7 @@ if test -n "${HDF5_PREFIX}"; then
|
||||
fi
|
||||
AC_CHECK_LIB([hdf5], [H5open])
|
||||
AS_IF([test "x$ac_cv_lib_hdf5_H5open" != xyes],
|
||||
[AC_MSG_ERROR([Cannot compile and link a HDF5 program]);
|
||||
exit 1])
|
||||
[AC_MSG_ERROR([Cannot compile and link a HDF5 program])])
|
||||
AC_MSG_CHECKING([checking whether hdf5 lib supports parallel IO])
|
||||
AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
|
||||
#include "hdf5.h"
|
||||
@@ -429,12 +425,10 @@ if test "X$ENABLE_PARALLEL" = "Xyes"; then
|
||||
AC_MSG_RESULT([yes])
|
||||
|
||||
AS_IF([test "x$H5_HAVE_PARALLEL" = "xno"],
|
||||
[AC_MSG_ERROR([hdf5 does not support parallel IO!]);
|
||||
exit 1])
|
||||
[AC_MSG_ERROR([hdf5 does not support parallel IO!])])
|
||||
|
||||
if test "X$ENABLE_VTKCONVERTER" = "Xyes"; then
|
||||
AC_MSG_ERROR([VTK to H5hut grid converter cannot be compiled parallel!])
|
||||
exit 1
|
||||
fi
|
||||
CPPFLAGS="${CPPFLAGS} -DPARALLEL_IO -DMPICH_IGNORE_CXX_SEEK"
|
||||
|
||||
@@ -453,14 +447,12 @@ if test "X$ENABLE_PARALLEL" = "Xyes"; then
|
||||
|
||||
if test "X$r" = "Xno"; then
|
||||
AC_MSG_ERROR([ParMETIS])
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
else # --enable-parallel=no
|
||||
AC_MSG_RESULT([no])
|
||||
AS_IF([test "x$H5_HAVE_PARALLEL" = "xyes"],
|
||||
[AC_MSG_ERROR([hdf5 with support for parallel IO cannot be used for non-parallel H5hut!]);
|
||||
exit 1])
|
||||
[AC_MSG_ERROR([hdf5 with support for parallel IO cannot be used for non-parallel H5hut!])])
|
||||
fi
|
||||
|
||||
###############################################################################
|
||||
@@ -481,7 +473,6 @@ if test "X$ENABLE_VTKCONVERTER" = "Xyes"; then
|
||||
if test "X$?" != "X0"; then
|
||||
AC_MSG_RESULT([no])
|
||||
AC_MSG_ERROR([Cannot compile VTK to H5hut converter])
|
||||
exit 1
|
||||
else
|
||||
AC_MSG_RESULT([yes])
|
||||
fi
|
||||
@@ -490,7 +481,6 @@ if test "X$ENABLE_VTKCONVERTER" = "Xyes"; then
|
||||
if test "X$?" != "X0"; then
|
||||
AC_MSG_RESULT([no])
|
||||
AC_MSG_ERROR([Cannot compile VTK to H5hut converter]);
|
||||
exit 1
|
||||
else
|
||||
AC_MSG_RESULT([yes])
|
||||
fi
|
||||
|
||||
@@ -69,7 +69,8 @@ h5bl_3d_setview (
|
||||
f,
|
||||
*i_start-1, *i_end-1,
|
||||
*j_start-1, *j_end-1,
|
||||
*k_start-1, *k_end-1 ));
|
||||
*k_start-1, *k_end-1,
|
||||
0));
|
||||
}
|
||||
|
||||
#define h5bl_3d_getview FC_MANGLING ( \
|
||||
|
||||
+20
-17
@@ -417,7 +417,6 @@ _dissolve_ghostzones (
|
||||
p_el = p_save;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
h5_free (p_begin);
|
||||
H5_RETURN (H5_SUCCESS);
|
||||
@@ -544,7 +543,8 @@ h5b_3d_set_view (
|
||||
const h5_size_t j_start, /*!< IN: start index of \c j */
|
||||
const h5_size_t j_end, /*!< IN: end index of \c j */
|
||||
const h5_size_t k_start, /*!< IN: start index of \c k */
|
||||
const h5_size_t k_end /*!< IN: end index of \c k */
|
||||
const h5_size_t k_end, /*!< IN: end index of \c k */
|
||||
const h5_int64_t dissolve_ghostzones /*!< IN: bool: dissolve ghost-zones */
|
||||
) {
|
||||
h5_file_p f = (h5_file_p)fh;
|
||||
H5_CORE_API_ENTER (h5_err_t,
|
||||
@@ -571,7 +571,6 @@ h5b_3d_set_view (
|
||||
h5b_partition_t *write_layout;
|
||||
|
||||
TRY (user_layout = h5_calloc (f->nprocs, sizeof (*user_layout)));
|
||||
TRY (write_layout = h5_calloc (f->nprocs, sizeof (*write_layout)));
|
||||
|
||||
user_layout[f->myproc] = b->user_layout[0];
|
||||
|
||||
@@ -580,11 +579,7 @@ h5b_3d_set_view (
|
||||
user_layout, 1, f->b->partition_mpi_t, f->props->comm));
|
||||
|
||||
_get_max_dimensions(f, user_layout);
|
||||
|
||||
TRY (_dissolve_ghostzones (f, user_layout, write_layout));
|
||||
b->user_layout[0] = user_layout[f->myproc];
|
||||
b->write_layout[0] = write_layout[f->myproc];
|
||||
|
||||
//b->user_layout[0] = user_layout[f->myproc];
|
||||
h5_debug (
|
||||
"User layout: %lld:%lld, %lld:%lld, %lld:%lld",
|
||||
(long long)b->user_layout[0].i_start,
|
||||
@@ -594,17 +589,25 @@ h5b_3d_set_view (
|
||||
(long long)b->user_layout[0].k_start,
|
||||
(long long)b->user_layout[0].k_end );
|
||||
|
||||
h5_debug (
|
||||
"Ghost-zone layout: %lld:%lld, %lld:%lld, %lld:%lld",
|
||||
(long long)b->write_layout[0].i_start,
|
||||
(long long)b->write_layout[0].i_end,
|
||||
(long long)b->write_layout[0].j_start,
|
||||
(long long)b->write_layout[0].j_end,
|
||||
(long long)b->write_layout[0].k_start,
|
||||
(long long)b->write_layout[0].k_end );
|
||||
if (dissolve_ghostzones) {
|
||||
TRY (write_layout = h5_calloc (f->nprocs, sizeof (*write_layout)));
|
||||
TRY (_dissolve_ghostzones (f, user_layout, write_layout));
|
||||
b->write_layout[0] = write_layout[f->myproc];
|
||||
|
||||
h5_debug (
|
||||
"Ghost-zone layout: %lld:%lld, %lld:%lld, %lld:%lld",
|
||||
(long long)b->write_layout[0].i_start,
|
||||
(long long)b->write_layout[0].i_end,
|
||||
(long long)b->write_layout[0].j_start,
|
||||
(long long)b->write_layout[0].j_end,
|
||||
(long long)b->write_layout[0].k_start,
|
||||
(long long)b->write_layout[0].k_end );
|
||||
h5_free(write_layout);
|
||||
} else {
|
||||
b->write_layout[0] = b->user_layout[0];
|
||||
}
|
||||
|
||||
h5_free(user_layout);
|
||||
h5_free(write_layout);
|
||||
#else
|
||||
b->write_layout[0] = b->user_layout[0];
|
||||
b->i_max = b->user_layout->i_end;
|
||||
|
||||
@@ -254,5 +254,6 @@ h5u_write_dataset (
|
||||
hid_t dset_id;
|
||||
TRY (dset_id = h5u_open_dataset (fh, name, type));
|
||||
TRY (h5u_write (fh, dset_id, type, data));
|
||||
TRY (hdf5_close_dataset(dset_id));
|
||||
H5_RETURN (H5_SUCCESS);
|
||||
}
|
||||
|
||||
@@ -152,6 +152,8 @@ h5u_set_num_items (
|
||||
|
||||
TRY (hdf5_close_dataspace (u->shape));
|
||||
u->shape = H5S_ALL;
|
||||
TRY (hdf5_close_dataspace (u->memshape));
|
||||
u->memshape = H5S_ALL;
|
||||
|
||||
u->nparticles = (hsize_t)nparticles;
|
||||
|
||||
@@ -212,7 +214,8 @@ h5u_set_num_items (
|
||||
TRY( u->shape = hdf5_create_dataspace(1, &count, NULL) );
|
||||
|
||||
/* declare overall data size but then will select a subset */
|
||||
TRY( u->diskshape = hdf5_create_dataspace(1, &count, NULL) );
|
||||
TRY (hdf5_close_dataspace (u->diskshape));
|
||||
TRY (u->diskshape = hdf5_create_dataspace(1, &count, NULL));
|
||||
|
||||
count = nparticles;
|
||||
if (count > 0) {
|
||||
|
||||
@@ -220,7 +220,51 @@ H5Block3dSetView (
|
||||
h5b_3d_set_view (f,
|
||||
i_start, i_end,
|
||||
j_start, j_end,
|
||||
k_start, k_end));
|
||||
k_start, k_end,
|
||||
0
|
||||
));
|
||||
}
|
||||
|
||||
/**
|
||||
Defines the partition of the field that this processor owns, using
|
||||
Fortran ordering: the fastest moving index is \c i.
|
||||
|
||||
For writing ghost-zone are dissolved.
|
||||
|
||||
This routine uses an MPI_Allgather, so at large concurrency it should
|
||||
be called as infrequently as possible. For instance, if several
|
||||
steps/iteration use the same field dimensions, set the layout only
|
||||
once.
|
||||
|
||||
\return \c H5_SUCCESS on success
|
||||
\return \c H5_FAILURE on error
|
||||
*/
|
||||
static inline h5_err_t
|
||||
H5Block3dSetViewDissolveGhostZones (
|
||||
const h5_file_t f, ///< [in] File handle.
|
||||
const h5_int64_t i_start, ///< [in] start index of \c i
|
||||
const h5_int64_t i_end, ///< [in] end index of \c i
|
||||
const h5_int64_t j_start, ///< [in] start index of \c j
|
||||
const h5_int64_t j_end, ///< [in] end index of \c j
|
||||
const h5_int64_t k_start, ///< [in] start index of \c k
|
||||
const h5_int64_t k_end ///< [in] end index of \c k
|
||||
) {
|
||||
H5_API_ENTER (h5_err_t,
|
||||
"f=%p, "
|
||||
"i_start=%lld, i_end=%lld, "
|
||||
"j_start=%lld, j_end=%lld, "
|
||||
"k_start=%lld, k_end=%lld",
|
||||
(h5_file_p)f,
|
||||
(long long)i_start, (long long)i_end,
|
||||
(long long)j_start, (long long)j_end,
|
||||
(long long)k_start, (long long)k_end);
|
||||
H5_API_RETURN (
|
||||
h5b_3d_set_view (f,
|
||||
i_start, i_end,
|
||||
j_start, j_end,
|
||||
k_start, k_end,
|
||||
1
|
||||
));
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -51,7 +51,8 @@ h5b_3d_set_view (
|
||||
const h5_file_t,
|
||||
const h5_size_t, const h5_size_t,
|
||||
const h5_size_t, const h5_size_t,
|
||||
const h5_size_t, const h5_size_t);
|
||||
const h5_size_t, const h5_size_t,
|
||||
const h5_int64_t);
|
||||
|
||||
h5_err_t
|
||||
h5b_3d_get_view (
|
||||
|
||||
Reference in New Issue
Block a user