![]() |
QMCPACK
|
Driver-level resource for walker log collection. More...
Public Member Functions | |
WalkerLogManager (WalkerLogInput &inp, bool allow_logs, std::string series_root, Communicate *comm=0) | |
WalkerLogCollector * | makeCollector () |
create a WalkerLogCollector (legacy drivers only, "cloning" style) More... | |
void | startRun (std::vector< WalkerLogCollector *> &collectors) |
open the logs file and check consistency of the collectors at the start of a run More... | |
void | stopRun () |
close the logs file at the end of a run More... | |
void | writeBuffers (std::vector< WalkerLogCollector *> &collectors) |
collect min/max/median walker data and write buffered walker log data to file More... | |
Public Attributes | |
WalkerLogState | state |
Private Member Functions | |
void | checkCollectors (std::vector< WalkerLogCollector *> &collectors) |
check consistency of walker buffer row sizes More... | |
void | openFile (std::vector< WalkerLogCollector *> &collectors) |
open the logs file More... | |
void | closeFile () |
close the logs file More... | |
void | openHDFFile (std::vector< WalkerLogCollector *> &collectors) |
open the logs file (HDF format) More... | |
void | writeBuffersHDF (std::vector< WalkerLogCollector *> &collectors) |
write data buffers to the logs file (HDF format) More... | |
void | closeHDFFile () |
close the logs file (HDF format) More... | |
Private Attributes | |
std::string | file_root |
file prefix for the current driver More... | |
Communicate * | communicator |
std::unique_ptr< hdf_archive > | hdf_file |
access to HDF file More... | |
bool | registered_hdf |
whether walker quantity data ("data_layout") has been recorded in HDF More... | |
bool | write_particle_data |
whether to write per-particle data for all walkers More... | |
bool | write_min_data |
whether to write full data for the minimum energy walker at each step More... | |
bool | write_max_data |
whether to write full data for the maximum energy walker at each step More... | |
bool | write_med_data |
whether to write full data for the median energy walker at each step More... | |
std::vector< std::tuple< size_t, WLog::Real, size_t, size_t > > | energy_order |
used to sort energy information for identifying walkers by energy quantile More... | |
WalkerLogBuffer< WLog::Int > | wmin_property_int_buffer |
buffer containing integer properties for the minimum energy walkers More... | |
WalkerLogBuffer< WLog::Real > | wmin_property_real_buffer |
buffer containing real-valued properties for the minimum energy walkers More... | |
WalkerLogBuffer< WLog::Real > | wmin_particle_real_buffer |
buffer containing per-particle properties for the minimum energy walkers More... | |
WalkerLogBuffer< WLog::Int > | wmax_property_int_buffer |
buffer containing integer properties for the maximum energy walkers More... | |
WalkerLogBuffer< WLog::Real > | wmax_property_real_buffer |
buffer containing real-valued properties for the maximum energy walkers More... | |
WalkerLogBuffer< WLog::Real > | wmax_particle_real_buffer |
buffer containing per-particle properties for the maximum energy walkers More... | |
WalkerLogBuffer< WLog::Int > | wmed_property_int_buffer |
buffer containing integer properties for the median energy walkers More... | |
WalkerLogBuffer< WLog::Real > | wmed_property_real_buffer |
buffer containing real-valued properties for the median energy walkers More... | |
WalkerLogBuffer< WLog::Real > | wmed_particle_real_buffer |
buffer containing per-particle properties for the median energy walkers More... | |
Driver-level resource for walker log collection.
This class manages the HDF file (open/close/write). Walker buffer data from all crowd-level WalkerLogCollectors are written to the HDF file at the end of each MC block.
Just prior to the write, this class examines the distribution of walker energies on its rank for each MC step in the MC block, identifies the minimum/maximum/median energy walkers and buffers their full data (including per-particle information) for the write. This data corresponds to walker information at specific quantiles of the energy distribution. See WalkerLogManager::writeBuffers()
Writing per-particle information for all walkers is optional, as is writing data for the minimum/maximum/median energy walkers. Scalar "property" data for each walker is always written.
Definition at line 44 of file WalkerLogManager.h.
WalkerLogManager | ( | WalkerLogInput & | inp, |
bool | allow_logs, | ||
std::string | series_root, | ||
Communicate * | comm = 0 |
||
) |
Definition at line 21 of file WalkerLogManager.cpp.
References qmcplusplus::app_log(), qmcplusplus::comm, WalkerLogManager::communicator, WalkerLogManager::file_root, InputSection::get(), qmcplusplus::Concurrency::getWorkerId(), WalkerLogBuffer< T >::label, WalkerLogState::logs_active, WalkerLogInput::present, WalkerLogManager::registered_hdf, WalkerLogManager::state, WalkerLogState::step_period, WalkerLogState::verbose, WalkerLogManager::wmax_particle_real_buffer, WalkerLogManager::wmax_property_int_buffer, WalkerLogManager::wmax_property_real_buffer, WalkerLogManager::wmed_particle_real_buffer, WalkerLogManager::wmed_property_int_buffer, WalkerLogManager::wmed_property_real_buffer, WalkerLogManager::wmin_particle_real_buffer, WalkerLogManager::wmin_property_int_buffer, WalkerLogManager::wmin_property_real_buffer, WalkerLogManager::write_max_data, WalkerLogManager::write_med_data, WalkerLogManager::write_min_data, and WalkerLogManager::write_particle_data.
|
private |
check consistency of walker buffer row sizes
Definition at line 208 of file WalkerLogManager.cpp.
References qmcplusplus::app_log(), WalkerLogBuffer< T >::sameAs(), WalkerLogManager::state, WalkerLogState::verbose, WalkerLogCollector::walker_particle_real_buffer, WalkerLogCollector::walker_property_int_buffer, and WalkerLogCollector::walker_property_real_buffer.
Referenced by WalkerLogManager::startRun().
|
private |
close the logs file
Definition at line 243 of file WalkerLogManager.cpp.
References qmcplusplus::app_log(), WalkerLogManager::closeHDFFile(), WalkerLogManager::state, and WalkerLogState::verbose.
Referenced by WalkerLogManager::stopRun().
|
private |
close the logs file (HDF format)
Definition at line 350 of file WalkerLogManager.cpp.
References qmcplusplus::app_log(), WalkerLogManager::hdf_file, WalkerLogManager::state, and WalkerLogState::verbose.
Referenced by WalkerLogManager::closeFile().
WalkerLogCollector * makeCollector | ( | ) |
create a WalkerLogCollector (legacy drivers only, "cloning" style)
Definition at line 71 of file WalkerLogManager.cpp.
References qmcplusplus::app_log(), WalkerLogManager::state, and WalkerLogState::verbose.
|
private |
open the logs file
Definition at line 235 of file WalkerLogManager.cpp.
References qmcplusplus::app_log(), WalkerLogManager::openHDFFile(), WalkerLogManager::state, and WalkerLogState::verbose.
Referenced by WalkerLogManager::startRun().
|
private |
open the logs file (HDF format)
Definition at line 251 of file WalkerLogManager.cpp.
References qmcplusplus::app_log(), WalkerLogManager::communicator, WalkerLogManager::file_root, WalkerLogManager::hdf_file, qmcplusplus::rank, Communicate::rank(), Communicate::size(), WalkerLogManager::state, and WalkerLogState::verbose.
Referenced by WalkerLogManager::openFile().
void startRun | ( | std::vector< WalkerLogCollector *> & | collectors | ) |
open the logs file and check consistency of the collectors at the start of a run
Definition at line 80 of file WalkerLogManager.cpp.
References qmcplusplus::app_log(), WalkerLogManager::checkCollectors(), WalkerLogState::logs_active, WalkerLogManager::openFile(), WalkerLogManager::state, and WalkerLogState::verbose.
void stopRun | ( | ) |
close the logs file at the end of a run
Definition at line 96 of file WalkerLogManager.cpp.
References qmcplusplus::app_log(), WalkerLogManager::closeFile(), WalkerLogState::logs_active, WalkerLogManager::state, and WalkerLogState::verbose.
void writeBuffers | ( | std::vector< WalkerLogCollector *> & | collectors | ) |
collect min/max/median walker data and write buffered walker log data to file
Definition at line 107 of file WalkerLogManager.cpp.
References WalkerLogBuffer< T >::addRow(), qmcplusplus::app_log(), WalkerLogManager::energy_order, WalkerLogState::logs_active, qmcplusplus::n, WalkerLogBuffer< T >::resetBuffer(), WalkerLogManager::state, WalkerLogState::verbose, WalkerLogManager::wmax_particle_real_buffer, WalkerLogManager::wmax_property_int_buffer, WalkerLogManager::wmax_property_real_buffer, WalkerLogManager::wmed_particle_real_buffer, WalkerLogManager::wmed_property_int_buffer, WalkerLogManager::wmed_property_real_buffer, WalkerLogManager::wmin_particle_real_buffer, WalkerLogManager::wmin_property_int_buffer, WalkerLogManager::wmin_property_real_buffer, WalkerLogManager::write_max_data, WalkerLogManager::write_med_data, WalkerLogManager::write_min_data, and WalkerLogManager::writeBuffersHDF().
|
private |
write data buffers to the logs file (HDF format)
Definition at line 287 of file WalkerLogManager.cpp.
References qmcplusplus::app_log(), WalkerLogManager::hdf_file, WalkerLogBuffer< T >::hdf_file_pointer, WalkerLogManager::registered_hdf, WalkerLogBuffer< T >::registerHDFData(), WalkerLogManager::state, WalkerLogState::verbose, WalkerLogCollector::walker_particle_real_buffer, WalkerLogCollector::walker_property_int_buffer, WalkerLogCollector::walker_property_real_buffer, WalkerLogManager::wmax_particle_real_buffer, WalkerLogManager::wmax_property_int_buffer, WalkerLogManager::wmax_property_real_buffer, WalkerLogManager::wmed_particle_real_buffer, WalkerLogManager::wmed_property_int_buffer, WalkerLogManager::wmed_property_real_buffer, WalkerLogManager::wmin_particle_real_buffer, WalkerLogManager::wmin_property_int_buffer, WalkerLogManager::wmin_property_real_buffer, WalkerLogManager::write_max_data, WalkerLogManager::write_med_data, WalkerLogManager::write_min_data, WalkerLogManager::write_particle_data, and WalkerLogBuffer< T >::writeHDF().
Referenced by WalkerLogManager::writeBuffers().
|
private |
Definition at line 52 of file WalkerLogManager.h.
Referenced by WalkerLogManager::openHDFFile(), and WalkerLogManager::WalkerLogManager().
|
private |
used to sort energy information for identifying walkers by energy quantile
Definition at line 68 of file WalkerLogManager.h.
Referenced by WalkerLogManager::writeBuffers().
|
private |
file prefix for the current driver
Definition at line 51 of file WalkerLogManager.h.
Referenced by WalkerLogManager::openHDFFile(), and WalkerLogManager::WalkerLogManager().
|
private |
access to HDF file
Definition at line 54 of file WalkerLogManager.h.
Referenced by WalkerLogManager::closeHDFFile(), WalkerLogManager::openHDFFile(), and WalkerLogManager::writeBuffersHDF().
|
private |
whether walker quantity data ("data_layout") has been recorded in HDF
Definition at line 56 of file WalkerLogManager.h.
Referenced by WalkerLogManager::WalkerLogManager(), and WalkerLogManager::writeBuffersHDF().
WalkerLogState state |
Definition at line 47 of file WalkerLogManager.h.
Referenced by WalkerLogManager::checkCollectors(), WalkerLogManager::closeFile(), WalkerLogManager::closeHDFFile(), WalkerLogManager::makeCollector(), WalkerLogManager::openFile(), WalkerLogManager::openHDFFile(), WalkerLogManager::startRun(), WalkerLogManager::stopRun(), WalkerLogManager::WalkerLogManager(), WalkerLogManager::writeBuffers(), and WalkerLogManager::writeBuffersHDF().
|
private |
buffer containing per-particle properties for the maximum energy walkers
Definition at line 82 of file WalkerLogManager.h.
Referenced by WalkerLogManager::WalkerLogManager(), WalkerLogManager::writeBuffers(), and WalkerLogManager::writeBuffersHDF().
|
private |
buffer containing integer properties for the maximum energy walkers
Definition at line 78 of file WalkerLogManager.h.
Referenced by WalkerLogManager::WalkerLogManager(), WalkerLogManager::writeBuffers(), and WalkerLogManager::writeBuffersHDF().
|
private |
buffer containing real-valued properties for the maximum energy walkers
Definition at line 80 of file WalkerLogManager.h.
Referenced by WalkerLogManager::WalkerLogManager(), WalkerLogManager::writeBuffers(), and WalkerLogManager::writeBuffersHDF().
|
private |
buffer containing per-particle properties for the median energy walkers
Definition at line 89 of file WalkerLogManager.h.
Referenced by WalkerLogManager::WalkerLogManager(), WalkerLogManager::writeBuffers(), and WalkerLogManager::writeBuffersHDF().
|
private |
buffer containing integer properties for the median energy walkers
Definition at line 85 of file WalkerLogManager.h.
Referenced by WalkerLogManager::WalkerLogManager(), WalkerLogManager::writeBuffers(), and WalkerLogManager::writeBuffersHDF().
|
private |
buffer containing real-valued properties for the median energy walkers
Definition at line 87 of file WalkerLogManager.h.
Referenced by WalkerLogManager::WalkerLogManager(), WalkerLogManager::writeBuffers(), and WalkerLogManager::writeBuffersHDF().
|
private |
buffer containing per-particle properties for the minimum energy walkers
Definition at line 75 of file WalkerLogManager.h.
Referenced by WalkerLogManager::WalkerLogManager(), WalkerLogManager::writeBuffers(), and WalkerLogManager::writeBuffersHDF().
|
private |
buffer containing integer properties for the minimum energy walkers
Definition at line 71 of file WalkerLogManager.h.
Referenced by WalkerLogManager::WalkerLogManager(), WalkerLogManager::writeBuffers(), and WalkerLogManager::writeBuffersHDF().
|
private |
buffer containing real-valued properties for the minimum energy walkers
Definition at line 73 of file WalkerLogManager.h.
Referenced by WalkerLogManager::WalkerLogManager(), WalkerLogManager::writeBuffers(), and WalkerLogManager::writeBuffersHDF().
|
private |
whether to write full data for the maximum energy walker at each step
Definition at line 63 of file WalkerLogManager.h.
Referenced by WalkerLogManager::WalkerLogManager(), WalkerLogManager::writeBuffers(), and WalkerLogManager::writeBuffersHDF().
|
private |
whether to write full data for the median energy walker at each step
Definition at line 65 of file WalkerLogManager.h.
Referenced by WalkerLogManager::WalkerLogManager(), WalkerLogManager::writeBuffers(), and WalkerLogManager::writeBuffersHDF().
|
private |
whether to write full data for the minimum energy walker at each step
Definition at line 61 of file WalkerLogManager.h.
Referenced by WalkerLogManager::WalkerLogManager(), WalkerLogManager::writeBuffers(), and WalkerLogManager::writeBuffersHDF().
|
private |
whether to write per-particle data for all walkers
Definition at line 59 of file WalkerLogManager.h.
Referenced by WalkerLogManager::WalkerLogManager(), and WalkerLogManager::writeBuffersHDF().