Code indexing in gitaly is broken and leads to code not being visible to the user. We work on the issue with highest priority.

Skip to content
Snippets Groups Projects
Commit e41db835 authored by gsell's avatar gsell
Browse files

Merge branch '15-move-dissolving-ghost-zones-into-dedicated-function' into 'master'

Resolve "move dissolving ghost-zones into dedicated function"

Closes #15

See merge request !1
parents 6a4d711b 81403782
No related branches found
No related tags found
1 merge request!1Resolve "move dissolving ghost-zones into dedicated function"
...@@ -69,7 +69,8 @@ h5bl_3d_setview ( ...@@ -69,7 +69,8 @@ h5bl_3d_setview (
f, f,
*i_start-1, *i_end-1, *i_start-1, *i_end-1,
*j_start-1, *j_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 ( \ #define h5bl_3d_getview FC_MANGLING ( \
......
...@@ -417,7 +417,6 @@ _dissolve_ghostzones ( ...@@ -417,7 +417,6 @@ _dissolve_ghostzones (
p_el = p_save; p_el = p_save;
} }
} }
} }
h5_free (p_begin); h5_free (p_begin);
H5_RETURN (H5_SUCCESS); H5_RETURN (H5_SUCCESS);
...@@ -544,7 +543,8 @@ h5b_3d_set_view ( ...@@ -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_start, /*!< IN: start index of \c j */
const h5_size_t j_end, /*!< IN: end 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_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_file_p f = (h5_file_p)fh;
H5_CORE_API_ENTER (h5_err_t, H5_CORE_API_ENTER (h5_err_t,
...@@ -571,7 +571,6 @@ h5b_3d_set_view ( ...@@ -571,7 +571,6 @@ h5b_3d_set_view (
h5b_partition_t *write_layout; h5b_partition_t *write_layout;
TRY (user_layout = h5_calloc (f->nprocs, sizeof (*user_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]; user_layout[f->myproc] = b->user_layout[0];
...@@ -580,11 +579,7 @@ h5b_3d_set_view ( ...@@ -580,11 +579,7 @@ h5b_3d_set_view (
user_layout, 1, f->b->partition_mpi_t, f->props->comm)); user_layout, 1, f->b->partition_mpi_t, f->props->comm));
_get_max_dimensions(f, user_layout); _get_max_dimensions(f, user_layout);
//b->user_layout[0] = user_layout[f->myproc];
TRY (_dissolve_ghostzones (f, user_layout, write_layout));
b->user_layout[0] = user_layout[f->myproc];
b->write_layout[0] = write_layout[f->myproc];
h5_debug ( h5_debug (
"User layout: %lld:%lld, %lld:%lld, %lld:%lld", "User layout: %lld:%lld, %lld:%lld, %lld:%lld",
(long long)b->user_layout[0].i_start, (long long)b->user_layout[0].i_start,
...@@ -594,17 +589,25 @@ h5b_3d_set_view ( ...@@ -594,17 +589,25 @@ h5b_3d_set_view (
(long long)b->user_layout[0].k_start, (long long)b->user_layout[0].k_start,
(long long)b->user_layout[0].k_end ); (long long)b->user_layout[0].k_end );
h5_debug ( if (dissolve_ghostzones) {
"Ghost-zone layout: %lld:%lld, %lld:%lld, %lld:%lld", TRY (write_layout = h5_calloc (f->nprocs, sizeof (*write_layout)));
(long long)b->write_layout[0].i_start, TRY (_dissolve_ghostzones (f, user_layout, write_layout));
(long long)b->write_layout[0].i_end, b->write_layout[0] = write_layout[f->myproc];
(long long)b->write_layout[0].j_start,
(long long)b->write_layout[0].j_end, h5_debug (
(long long)b->write_layout[0].k_start, "Ghost-zone layout: %lld:%lld, %lld:%lld, %lld:%lld",
(long long)b->write_layout[0].k_end ); (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(user_layout);
h5_free(write_layout);
#else #else
b->write_layout[0] = b->user_layout[0]; b->write_layout[0] = b->user_layout[0];
b->i_max = b->user_layout->i_end; b->i_max = b->user_layout->i_end;
......
...@@ -220,7 +220,51 @@ H5Block3dSetView ( ...@@ -220,7 +220,51 @@ H5Block3dSetView (
h5b_3d_set_view (f, h5b_3d_set_view (f,
i_start, i_end, i_start, i_end,
j_start, j_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 ( ...@@ -51,7 +51,8 @@ h5b_3d_set_view (
const h5_file_t, 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_size_t, const h5_size_t); const h5_size_t, const h5_size_t,
const h5_int64_t);
h5_err_t h5_err_t
h5b_3d_get_view ( h5b_3d_get_view (
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment