From 10e3e83f9042694a50ad92a14ed42b49772c0d0c Mon Sep 17 00:00:00 2001 From: YoungHui Park Date: Wed, 29 Jul 2020 17:25:28 -0500 Subject: [PATCH] Set maximum bank size inside write_source_bank --- src/simulation.cpp | 5 ----- src/state_point.cpp | 17 +++++++++++------ 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/simulation.cpp b/src/simulation.cpp index b71de773bf..2fec3efb34 100644 --- a/src/simulation.cpp +++ b/src/simulation.cpp @@ -389,8 +389,6 @@ void finalize_batch() // Write out surface source if requested. if (settings::surface_source && simulation::current_batch == settings::n_batches) { - query_surf_src_size(); - auto filename = settings::path_output + "surface_source.h5"; write_source_point(filename.c_str(), true); //!! } @@ -558,9 +556,6 @@ void calculate_work() // Number of particles for rank i int64_t work_i = i < remainder ? min_work + 1 : min_work; - // Set maximum bank size - if (mpi::master) simulation::max_bank_size = work_i; - // Set number of particles if (mpi::rank == i) simulation::work_per_rank = work_i; diff --git a/src/state_point.cpp b/src/state_point.cpp index 735601b552..278576ea03 100644 --- a/src/state_point.cpp +++ b/src/state_point.cpp @@ -570,17 +570,22 @@ write_source_bank(hid_t group_id, bool surf_src_bank) int64_t dims_size = settings::n_particles; int64_t count_size = simulation::work_per_rank; + // Set maximum bank size + simulation::max_bank_size = simulation::work_per_rank; + // Set vectors for source bank and starting bank index of each process - std::vector wi = simulation::work_index; + std::vector bank_index = simulation::work_index; std::vector src_bank = simulation::source_bank; // Reset dataspace sizes and vectors for surface source bank if (surf_src_bank) { + query_surf_src_size(); + dims_size = simulation::total_surf_banks; count_size = simulation::surf_src_bank.size(); - wi.clear(); - wi = simulation::surf_src_index; + bank_index.clear(); + bank_index = simulation::surf_src_index; src_bank.clear(); src_bank.assign(simulation::surf_src_bank.data(), @@ -600,7 +605,7 @@ write_source_bank(hid_t group_id, bool surf_src_bank) hid_t memspace = H5Screate_simple(1, count, nullptr); // Select hyperslab for this dataspace - hsize_t start[] {static_cast(wi[mpi::rank])}; + hsize_t start[] {static_cast(bank_index[mpi::rank])}; H5Sselect_hyperslab(dspace, H5S_SELECT_SET, start, nullptr, count, nullptr); // Set up the property list for parallel writing @@ -632,7 +637,7 @@ write_source_bank(hid_t group_id, bool surf_src_bank) for (int i = 0; i < mpi::n_procs; ++i) { // Create memory space - hsize_t count[] {static_cast(wi[i+1] - wi[i])}; + hsize_t count[] {static_cast(bank_index[i+1] - bank_index[i])}; hid_t memspace = H5Screate_simple(1, count, nullptr); #ifdef OPENMC_MPI @@ -644,7 +649,7 @@ write_source_bank(hid_t group_id, bool surf_src_bank) // Select hyperslab for this dataspace dspace = H5Dget_space(dset); - hsize_t start[] {static_cast(wi[i])}; + hsize_t start[] {static_cast(bank_index[i])}; H5Sselect_hyperslab(dspace, H5S_SELECT_SET, start, nullptr, count, nullptr); // Write data to hyperslab