Commit 81403782 authored by gsell's avatar gsell

H5Block3dSetView() does not dissolve ghost-zones any more

- new API function H5Block3dSetViewDissolveGhostZones() added
parent 6a4d711b
......@@ -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 ( \
......
......@@ -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;
......
......@@ -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 (
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment