diff --git a/docs/source/io_formats/statepoint.rst b/docs/source/io_formats/statepoint.rst index f61fd90669..f90d5b3af5 100644 --- a/docs/source/io_formats/statepoint.rst +++ b/docs/source/io_formats/statepoint.rst @@ -161,3 +161,5 @@ All values are given in seconds and are measured on the master process. source sites between processes for load balancing. - **accumulating tallies** (*double*) -- Time spent communicating tally results and evaluating their statistics. + - **writing statepoints** (*double*) -- Time spent writing statepoint + files diff --git a/include/openmc/timer.h b/include/openmc/timer.h index cc20751a85..a43a66bd42 100644 --- a/include/openmc/timer.h +++ b/include/openmc/timer.h @@ -22,6 +22,7 @@ extern Timer time_inactive; extern Timer time_initialize; extern Timer time_read_xs; extern Timer time_sample_source; +extern Timer time_statepoint; extern Timer time_tallies; extern Timer time_total; extern Timer time_transport; diff --git a/src/output.cpp b/src/output.cpp index 338dda6347..3d71c8f7f3 100644 --- a/src/output.cpp +++ b/src/output.cpp @@ -420,6 +420,7 @@ void print_runtime() show_time("SEND/RECV source sites", time_bank_sendrecv.elapsed(), 2); } show_time("Time accumulating tallies", time_tallies.elapsed(), 1); + show_time("Time writing statepoints", time_statepoint.elapsed(), 1); show_time("Total time for finalization", time_finalize.elapsed()); show_time("Total time elapsed", time_total.elapsed()); diff --git a/src/state_point.cpp b/src/state_point.cpp index 4b3d3a56bd..14260051cc 100644 --- a/src/state_point.cpp +++ b/src/state_point.cpp @@ -33,6 +33,8 @@ namespace openmc { extern "C" int openmc_statepoint_write(const char* filename, bool* write_source) { + simulation::time_statepoint.start(); + // Set the filename std::string filename_; if (filename) { @@ -296,6 +298,7 @@ openmc_statepoint_write(const char* filename, bool* write_source) } write_dataset(runtime_group, "accumulating tallies", time_tallies.elapsed()); write_dataset(runtime_group, "total", time_total.elapsed()); + write_dataset(runtime_group, "writing statepoints", time_statepoint.elapsed()); close_group(runtime_group); file_close(file_id); @@ -314,6 +317,8 @@ openmc_statepoint_write(const char* filename, bool* write_source) if (mpi::master || parallel) file_close(file_id); } + simulation::time_statepoint.stop(); + return 0; } diff --git a/src/timer.cpp b/src/timer.cpp index fdb10f0f20..ff1d91b3a1 100644 --- a/src/timer.cpp +++ b/src/timer.cpp @@ -17,6 +17,7 @@ Timer time_inactive; Timer time_initialize; Timer time_read_xs; Timer time_sample_source; +Timer time_statepoint; Timer time_tallies; Timer time_total; Timer time_transport; @@ -76,6 +77,7 @@ void reset_timers() simulation::time_initialize.reset(); simulation::time_read_xs.reset(); simulation::time_sample_source.reset(); + simulation::time_statepoint.reset(); simulation::time_tallies.reset(); simulation::time_total.reset(); simulation::time_transport.reset();