Skip to content
Snippets Groups Projects
Commit 4d523f70 authored by Cristian Lalescu's avatar Cristian Lalescu
Browse files

tweaks xincrement stats

add possibility to use outside field for temporary data, such that we
don't allocate and delete all the time
parent 4feaaf8b
No related branches found
No related tags found
No related merge requests found
...@@ -861,16 +861,20 @@ void field<rnumber, be, fc>::compute_rspace_xincrement_stats( ...@@ -861,16 +861,20 @@ void field<rnumber, be, fc>::compute_rspace_xincrement_stats(
const hid_t group, const hid_t group,
const std::string dset_name, const std::string dset_name,
const hsize_t toffset, const hsize_t toffset,
const std::vector<double> max_estimate) const std::vector<double> max_estimate,
field<rnumber, be, fc> *tmp_field)
{ {
TIMEZONE("field::compute_rspace_xincrement_stats"); TIMEZONE("field::compute_rspace_xincrement_stats");
assert(this->real_space_representation); assert(this->real_space_representation);
assert(fc == ONE || fc == THREE); assert(fc == ONE || fc == THREE);
field<rnumber, be, fc> *tmp_field = new field<rnumber, be, fc>( bool own_field = false;
this->rlayout->sizes[2], own_field = (tmp_field == NULL);
this->rlayout->sizes[1], if (own_field)
this->rlayout->sizes[0], tmp_field = new field<rnumber, be, fc>(
this->rlayout->comm); this->rlayout->sizes[2],
this->rlayout->sizes[1],
this->rlayout->sizes[0],
this->rlayout->comm);
tmp_field->real_space_representation = true; tmp_field->real_space_representation = true;
this->RLOOP_simd( this->RLOOP_simd(
[&](const ptrdiff_t rindex, [&](const ptrdiff_t rindex,
...@@ -890,7 +894,8 @@ void field<rnumber, be, fc>::compute_rspace_xincrement_stats( ...@@ -890,7 +894,8 @@ void field<rnumber, be, fc>::compute_rspace_xincrement_stats(
dset_name, dset_name,
toffset, toffset,
max_estimate); max_estimate);
delete tmp_field; if (own_field)
delete tmp_field;
} }
......
...@@ -129,7 +129,8 @@ class field ...@@ -129,7 +129,8 @@ class field
const hid_t group, const hid_t group,
const std::string dset_name, const std::string dset_name,
const hsize_t toffset, const hsize_t toffset,
const std::vector<double> max_estimate); const std::vector<double> max_estimate,
field<rnumber, be, fc> *tmp_field = NULL);
void compute_rspace_stats( void compute_rspace_stats(
const hid_t group, const hid_t group,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment