13 #ifndef QMCPLUSPLUS_ENGINE_HANDLE_HEADER 14 #define QMCPLUSPLUS_ENGINE_HANDLE_HEADER 21 #ifdef HAVE_LMY_ENGINE 22 #include "formic/utils/lmyengine/engine.h" 51 virtual void takeSample(
const std::vector<FullPrecReal>& energy_list,
54 int base_sample_index) = 0;
64 void takeSample(
const std::vector<FullPrecReal>& energy_list,
67 int base_sample_index)
override 94 void takeSample(
const std::vector<FullPrecReal>& energy_list,
97 int base_sample_index)
override 100 for (
int local_index = 0; local_index < current_batch_size; local_index++)
106 for (
int j = 0; j < num_params; j++)
110 le_der_samp[0] * static_cast<FullPrecValue>(dlogpsi_array[local_index][j]);
123 #ifdef HAVE_LMY_ENGINE 125 cqmc::engine::LMYEngine<Value>& lm_engine_;
126 std::vector<FullPrecValue> der_rat_samp;
127 std::vector<FullPrecValue> le_der_samp;
130 LMYEngineHandle(cqmc::engine::LMYEngine<Value>& lmyEngine) : lm_engine_(lmyEngine){};
134 der_rat_samp.resize(num_params + 1, 0.0);
135 le_der_samp.resize(num_params + 1, 0.0);
136 if (lm_engine_.getStoringSamples())
137 lm_engine_.setUpStorage(num_params, num_samples);
139 void takeSample(
const std::vector<FullPrecReal>& energy_list,
142 int base_sample_index)
override 145 for (
int local_index = 0; local_index < current_batch_size; local_index++)
147 const int sample_index = base_sample_index + local_index;
148 der_rat_samp[0] = 1.0;
149 le_der_samp[0] = energy_list[local_index];
151 int num_params = der_rat_samp.size() - 1;
152 for (
int j = 0; j < num_params; j++)
154 der_rat_samp[j + 1] =
static_cast<FullPrecValue>(dlogpsi_array[local_index][j]);
155 le_der_samp[j + 1] =
static_cast<FullPrecValue>(dhpsioverpsi_array[local_index][j]) +
156 le_der_samp[0] * static_cast<FullPrecValue>(dlogpsi_array[local_index][j]);
160 if (lm_engine_.getStoringSamples())
161 lm_engine_.store_sample(der_rat_samp, le_der_samp, le_der_samp, 1.0, 1.0, sample_index);
163 lm_engine_.take_sample(der_rat_samp, le_der_samp, le_der_samp, 1.0, 1.0);
168 if (!lm_engine_.getStoringSamples())
169 lm_engine_.sample_finish();
void finishSampling() override
Function for having optimizer engines execute their sample_finish functions.
helper functions for EinsplineSetBuilder
void prepareSampling(int num_params, int num_samples) override
Function for preparing derivative ratio vectors used by optimizer engines.
DescentEngineHandle(DescentEngine &engine)
QTBase::RealType RealType
void sample_finish()
Function that reduces all vector information from all processors to the root processor.
virtual ~EngineHandle()=default
QMCTraits::FullPrecRealType FullPrecReal
void prepareSampling(int num_params, int num_samples) override
Function for preparing derivative ratio vectors used by optimizer engines.
void prepareStorage(const int num_replicas, const int num_optimizables)
Prepare for taking samples.
QMCTraits::FullPrecValueType FullPrecValue
omp_int_t omp_get_thread_num()
void takeSample(const std::vector< FullPrecReal > &energy_list, const RecordArray< Value > &dlogpsi_array, const RecordArray< Value > &dhpsioverpsi_array, int base_sample_index) override
Function for passing derivative ratios to optimizer engines.
QTFull::ValueType FullPrecValueType
omp_int_t omp_get_max_threads()
QTBase::ValueType ValueType
const std::vector< FullPrecValue > & getVector() const
void takeSample(const std::vector< FullPrecReal > &energy_list, const RecordArray< Value > &dlogpsi_array, const RecordArray< Value > &dhpsioverpsi_array, int base_sample_index) override
Function for passing derivative ratios to optimizer engines.
virtual void prepareSampling(int num_params, int num_samples)=0
Function for preparing derivative ratio vectors used by optimizer engines.
virtual void takeSample(const std::vector< FullPrecReal > &energy_list, const RecordArray< Value > &dlogpsi_array, const RecordArray< Value > &dhpsioverpsi_array, int base_sample_index)=0
Function for passing derivative ratios to optimizer engines.
QTFull::RealType FullPrecRealType
virtual void finishSampling()=0
Function for having optimizer engines execute their sample_finish functions.
int getNumOfEntries() const
void takeSample(const int replica_id, const std::vector< FullPrecValueType > &der_rat_samp, const std::vector< FullPrecValueType > &le_der_samp, const std::vector< FullPrecValueType > &ls_der_samp, ValueType vgs_samp, ValueType weight_samp)
Function that Take Sample Data from the Host Code.
QMCTraits::ValueType Value
std::vector< FullPrecValue > der_rat_samp
std::vector< FullPrecValue > le_der_samp
void finishSampling() override
Function for having optimizer engines execute their sample_finish functions.