![]() |
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) | |
std::unique_ptr< WalkerLogCollector > | makeCollector () const |
create a WalkerLogCollector More... | |
void | startRun (RefVector< 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 () |
collect min/max/median walker data and write buffered walker log data to file More... | |
Private Member Functions | |
void | checkCollectors (const RefVector< WalkerLogCollector > &collectors) const |
check consistency of walker buffer row sizes More... | |
void | openFile (const RefVector< WalkerLogCollector > &collectors) |
open the logs file More... | |
void | closeFile () |
close the logs file More... | |
void | openHDFFile (const RefVector< WalkerLogCollector > &collectors) |
open the logs file (HDF format) More... | |
void | writeBuffersHDF () |
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 |
WalkerLogState | state |
output state More... | |
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... | |
RefVector< WalkerLogCollector > | collectors_in_run_ |
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 212 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 247 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 355 of file WalkerLogManager.cpp.
References qmcplusplus::app_log(), WalkerLogManager::hdf_file, WalkerLogManager::state, and WalkerLogState::verbose.
Referenced by WalkerLogManager::closeFile().
std::unique_ptr< WalkerLogCollector > makeCollector | ( | ) | const |
create a WalkerLogCollector
Definition at line 71 of file WalkerLogManager.cpp.
References qmcplusplus::app_log(), WalkerLogManager::state, and WalkerLogState::verbose.
Referenced by VMCBatched::run(), and DMCBatched::run().
|
private |
open the logs file
Definition at line 239 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 255 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 | ( | RefVector< WalkerLogCollector > && | collectors | ) |
open the logs file and check consistency of the collectors at the start of a run
Definition at line 79 of file WalkerLogManager.cpp.
References qmcplusplus::app_log(), WalkerLogManager::checkCollectors(), WalkerLogManager::collectors_in_run_, WalkerLogState::logs_active, WalkerLogManager::openFile(), WalkerLogManager::state, and WalkerLogState::verbose.
Referenced by VMCBatched::run(), and DMCBatched::run().
void stopRun | ( | ) |
close the logs file at the end of a run
Definition at line 95 of file WalkerLogManager.cpp.
References qmcplusplus::app_log(), WalkerLogManager::closeFile(), WalkerLogManager::collectors_in_run_, WalkerLogState::logs_active, WalkerLogManager::state, and WalkerLogState::verbose.
Referenced by VMCBatched::run(), and DMCBatched::run().
void writeBuffers | ( | ) |
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(), WalkerLogCollector::checkBuffers(), WalkerLogManager::collectors_in_run_, WalkerLogCollector::energies, WalkerLogManager::energy_order, WalkerLogState::logs_active, qmcplusplus::n, WalkerLogBuffer< T >::resetBuffer(), WalkerLogManager::state, WalkerLogCollector::steps, 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().
Referenced by VMCBatched::run(), and DMCBatched::run().
|
private |
write data buffers to the logs file (HDF format)
Definition at line 291 of file WalkerLogManager.cpp.
References qmcplusplus::app_log(), WalkerLogManager::collectors_in_run_, 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 90 of file WalkerLogManager.h.
Referenced by WalkerLogManager::startRun(), WalkerLogManager::stopRun(), WalkerLogManager::writeBuffers(), and WalkerLogManager::writeBuffersHDF().
|
private |
Definition at line 49 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 67 of file WalkerLogManager.h.
Referenced by WalkerLogManager::writeBuffers().
|
private |
file prefix for the current driver
Definition at line 48 of file WalkerLogManager.h.
Referenced by WalkerLogManager::openHDFFile(), and WalkerLogManager::WalkerLogManager().
|
private |
access to HDF file
Definition at line 53 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 55 of file WalkerLogManager.h.
Referenced by WalkerLogManager::WalkerLogManager(), and WalkerLogManager::writeBuffersHDF().
|
private |
output state
Definition at line 51 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 81 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 77 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 79 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 88 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 84 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 86 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 74 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 70 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 72 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 62 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 64 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 60 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 58 of file WalkerLogManager.h.
Referenced by WalkerLogManager::WalkerLogManager(), and WalkerLogManager::writeBuffersHDF().