Skip to content

Commit

Permalink
Merge branch 'develop' into fix-excited
Browse files Browse the repository at this point in the history
  • Loading branch information
ye-luo authored Aug 9, 2022
2 parents 4015669 + 6c09b89 commit 711c34e
Show file tree
Hide file tree
Showing 18 changed files with 17 additions and 135 deletions.
4 changes: 1 addition & 3 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -652,8 +652,6 @@ endif()
find_package(HDF5 COMPONENTS C)

if(HDF5_FOUND)
set(HAVE_LIBHDF5 1)

if(HDF5_IS_PARALLEL)
message(STATUS "Parallel HDF5 library found")
option(ENABLE_PHDF5 "Enable code paths using parallel HDF5" ON)
Expand Down Expand Up @@ -692,7 +690,7 @@ if(HDF5_FOUND)

add_library(IO::HDF5 INTERFACE IMPORTED)
target_include_directories(IO::HDF5 INTERFACE "${HDF5_INCLUDE_DIR}")
target_compile_definitions(IO::HDF5 INTERFACE "HAVE_LIBHDF5;H5_USE_16_API")
target_compile_definitions(IO::HDF5 INTERFACE "H5_USE_16_API")
target_link_libraries(IO::HDF5 INTERFACE "${HDF5_LIBRARIES}")
if(ENABLE_PHDF5)
target_compile_definitions(IO::HDF5 INTERFACE "ENABLE_PHDF5")
Expand Down
3 changes: 0 additions & 3 deletions doxygen/config.h
Original file line number Diff line number Diff line change
Expand Up @@ -36,9 +36,6 @@
/* Enable OpenMP parallelization. */
#define QMC_OMP 1

/* Define to 1 if you have the `hdf5' library (-lhdf5). */
#define HAVE_LIBHDF5 1

/* Define to 1 if you want to use parallel hdf5 for frequent output */
/* #undef ENABLE_PHDF5 */

Expand Down
12 changes: 0 additions & 12 deletions src/Particle/HDFWalkerInputManager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,7 @@

#include "HDFWalkerInputManager.h"
#include "OhmmsData/AttributeSet.h"
#if defined(HAVE_LIBHDF5)
#include "Particle/HDFWalkerInput_0_4.h"
#endif
#include "Message/Communicate.h"
#include "hdf/HDFVersion.h"

Expand All @@ -28,7 +26,6 @@ HDFWalkerInputManager::HDFWalkerInputManager(WalkerConfigurations& wc_list, size

HDFWalkerInputManager::~HDFWalkerInputManager() {}

#if defined(HAVE_LIBHDF5)
bool HDFWalkerInputManager::put(xmlNodePtr cur)
{
//reference revision number
Expand Down Expand Up @@ -61,13 +58,4 @@ bool HDFWalkerInputManager::put(xmlNodePtr cur)
CurrentFileRoot = cfile;
return success;
}
#else
bool HDFWalkerInputManager::put(xmlNodePtr cur) { return false; }
#endif

void HDFWalkerInputManager::rewind(const std::string& h5root, int blocks)
{
// HDFWalkerInputCollect WO(h5root);
// WO.rewind(wc_list_,blocks);
}
} // namespace qmcplusplus
2 changes: 0 additions & 2 deletions src/Particle/HDFWalkerInputManager.h
Original file line number Diff line number Diff line change
Expand Up @@ -37,8 +37,6 @@ class HDFWalkerInputManager
//bool put(std::vector<xmlNodePtr>& mset, int pid);
//bool put(std::vector<xmlNodePtr>& mset, Communicate* comm);
std::string getFileRoot() { return CurrentFileRoot; }

void rewind(const std::string& h5root, int blocks);
};
} // namespace qmcplusplus

Expand Down
2 changes: 1 addition & 1 deletion src/QMCDrivers/DMC/DMCBatched.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -380,7 +380,7 @@ void DMCBatched::process(xmlNodePtr node)
qmcdriver_input_.get_walkers_per_rank(), dmcdriver_input_.get_reserve(),
qmcdriver_input_.get_num_crowds());

Base::startup(node, awc);
Base::initializeQMC(awc);
}
catch (const UniformCommunicateError& ue)
{
Expand Down
8 changes: 0 additions & 8 deletions src/QMCDrivers/MCPopulation.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -257,14 +257,6 @@ void MCPopulation::measureGlobalEnergyVariance(Communicate& comm,
variance = weight_energy_variance[2] / weight_energy_variance[0] - ener * ener;
}

void MCPopulation::set_variational_parameters(const opt_variables_type& active)
{
for (auto it_twfs = walker_trial_wavefunctions_.begin(); it_twfs != walker_trial_wavefunctions_.end(); ++it_twfs)
{
(*it_twfs).get()->resetParameters(active);
}
}

void MCPopulation::checkIntegrity() const
{
// check active walkers
Expand Down
4 changes: 0 additions & 4 deletions src/QMCDrivers/MCPopulation.h
Original file line number Diff line number Diff line change
Expand Up @@ -226,10 +226,6 @@ class MCPopulation

/** }@ */


/// Set variational parameters for the per-walker copies of the wavefunction.
void set_variational_parameters(const opt_variables_type& active);

/// check if all the internal vector contain consistent sizes;
void checkIntegrity() const;

Expand Down
17 changes: 1 addition & 16 deletions src/QMCDrivers/QMCDriverNew.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -129,22 +129,7 @@ void QMCDriverNew::checkNumCrowdsLTNumThreads(const int num_crowds)
}
}

/** process a <qmc/> element
* @param cur xmlNode with qmc tag
*
* This function is called before QMCDriverNew::run and following actions are taken:
* - Initialize basic data to execute run function.
* -- distance tables
* -- resize deltaR and drift with the number of particles
* -- assign cur to qmcNode
* - process input file
* -- putQMCInfo: <parameter/> s for generic QMC
* -- put : extra data by derived classes
* - initialize branchEngine to accumulate energies
* - initialize Estimators
* - initialize Walkers
*/
void QMCDriverNew::startup(xmlNodePtr cur, const QMCDriverNew::AdjustedWalkerCounts& awc)
void QMCDriverNew::initializeQMC(const AdjustedWalkerCounts& awc)
{
ScopedTimer local_timer(timers_.startup_timer);

Expand Down
23 changes: 10 additions & 13 deletions src/QMCDrivers/QMCDriverNew.h
Original file line number Diff line number Diff line change
Expand Up @@ -102,10 +102,6 @@ class QMCDriverNew : public QMCDriverInterface, public MPIObjectBase
std::bitset<QMC_MODE_MAX> qmc_driver_mode_;

protected:
/// inject additional barrier and measure load imbalance.
void measureImbalance(const std::string& tag) const;
/// end of a block operations. Aggregates statistics across all MPI ranks and write to disk.
void endBlock();
/** This is a data structure strictly for QMCDriver and its derived classes
*
* i.e. its nested in scope for a reason
Expand All @@ -117,6 +113,16 @@ class QMCDriverNew : public QMCDriverInterface, public MPIObjectBase
std::vector<IndexType> walkers_per_crowd;
RealType reserve_walkers;
};
/** Do common section starting tasks for VMC and DMC
*
* set up population_, crowds_, rngs and step_contexts_
*/
void initializeQMC(const AdjustedWalkerCounts& awc);

/// inject additional barrier and measure load imbalance.
void measureImbalance(const std::string& tag) const;
/// end of a block operations. Aggregates statistics across all MPI ranks and write to disk.
void endBlock();

public:
/// Constructor.
Expand Down Expand Up @@ -228,15 +234,6 @@ class QMCDriverNew : public QMCDriverInterface, public MPIObjectBase
*/
void process(xmlNodePtr cur) override = 0;

/** Do common section starting tasks
*
* \todo This should not take xmlNodePtr
* It should either take BranchEngineInput and EstimatorInput
* And these are the arguments to the branch_engine and estimator_manager
* Constructors or these objects should be created elsewhere.
*/
void startup(xmlNodePtr cur, const QMCDriverNew::AdjustedWalkerCounts& awc);

static void initialLogEvaluation(int crowd_id, UPtrVector<Crowd>& crowds, UPtrVector<ContextForSteps>& step_context);


Expand Down
2 changes: 1 addition & 1 deletion src/QMCDrivers/VMC/VMCBatched.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -265,7 +265,7 @@ void VMCBatched::process(xmlNodePtr node)
adjustGlobalWalkerCount(myComm->size(), myComm->rank(), qmcdriver_input_.get_total_walkers(),
qmcdriver_input_.get_walkers_per_rank(), 1.0, qmcdriver_input_.get_num_crowds());

Base::startup(node, awc);
Base::initializeQMC(awc);
}
catch (const UniformCommunicateError& ue)
{
Expand Down
2 changes: 2 additions & 0 deletions src/QMCDrivers/WFOpt/QMCFixedSampleLinearOptimize.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -548,6 +548,8 @@ bool QMCFixedSampleLinearOptimize::put(xmlNodePtr q)
if (!hybridEngineObj)
hybridEngineObj = std::make_unique<HybridEngine>(myComm, q);

hybridEngineObj->incrementStepCounter();

return processOptXML(hybridEngineObj->getSelectedXML(), vmcMove, ReportToH5 == "yes", useGPU == "yes");
}
else
Expand Down
28 changes: 0 additions & 28 deletions src/QMCDrivers/WFOpt/QMCFixedSampleLinearOptimizeBatched.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -299,7 +299,6 @@ void QMCFixedSampleLinearOptimizeBatched::generateSamples()
t1.restart();
// W.reset();
samples_.resetSampleCount();
population_.set_variational_parameters(optTarget->getOptVariables());

vmcEngine->run();
app_log() << " Execution time = " << std::setprecision(4) << t1.elapsed() << std::endl;
Expand Down Expand Up @@ -654,38 +653,11 @@ void QMCFixedSampleLinearOptimizeBatched::process(xmlNodePtr q)

hybridEngineObj->incrementStepCounter();

//Overwrite sampling information with input from selected optimizer block of a hybrid run
QMCDriverInput qmcdriver_input_copy = qmcdriver_input_;
VMCDriverInput vmcdriver_input_copy = vmcdriver_input_;

qmcdriver_input_copy.readXML(hybridEngineObj->getSelectedXML());
vmcdriver_input_copy.readXML(hybridEngineObj->getSelectedXML());


processOptXML(hybridEngineObj->getSelectedXML(), vmcMove, ReportToH5 == "yes", useGPU == "yes");


QMCDriverNew::AdjustedWalkerCounts awc =
adjustGlobalWalkerCount(myComm->size(), myComm->rank(), qmcdriver_input_copy.get_total_walkers(),
qmcdriver_input_copy.get_walkers_per_rank(), 1.0,
qmcdriver_input_copy.get_num_crowds());
QMCDriverNew::startup(q, awc);
}
else
{
//Also need to overwrite input information again in case this method was preceded by hybrid method optimization
QMCDriverInput qmcdriver_input_copy = qmcdriver_input_;
qmcdriver_input_copy.readXML(q);

processOptXML(q, vmcMove, ReportToH5 == "yes", useGPU == "yes");

auto& qmcdriver_input = vmcEngine->getQMCDriverInput();
// This code is also called when setting up vmcEngine. Would be nice to not duplicate the call.
QMCDriverNew::AdjustedWalkerCounts awc =
adjustGlobalWalkerCount(myComm->size(), myComm->rank(), qmcdriver_input_copy.get_total_walkers(),
qmcdriver_input_copy.get_walkers_per_rank(), 1.0,
qmcdriver_input_copy.get_num_crowds());
QMCDriverNew::startup(q, awc);
}
}

Expand Down
2 changes: 1 addition & 1 deletion src/QMCDrivers/tests/QMCDriverNewTestWrapper.h
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ class QMCDriverNewTestWrapper : public QMCDriverNew
adjustGlobalWalkerCount(myComm->size(), myComm->rank(), qmcdriver_input_.get_total_walkers(),
qmcdriver_input_.get_walkers_per_rank(), 1.0, qmcdriver_input_.get_num_crowds());

Base::startup(node, awc);
Base::initializeQMC(awc);
}

void testAdjustGlobalWalkerCount()
Expand Down
5 changes: 0 additions & 5 deletions src/QMCWaveFunctions/LCAO/LCAOSpinorBuilder.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,6 @@ bool LCAOSpinorBuilder::loadMO(LCAOrbitalSet& up, LCAOrbitalSet& dn, xmlNodePtr
bool LCAOSpinorBuilder::putFromH5(LCAOrbitalSet& up, LCAOrbitalSet& dn, xmlNodePtr occ_ptr)
{
#ifdef QMC_COMPLEX
#if defined(HAVE_LIBHDF5)
if (up.getBasisSetSize() == 0 || dn.getBasisSetSize() == 0)
{
myComm->barrier_and_abort("LCASpinorBuilder::loadMO detected ZERO BasisSetSize");
Expand Down Expand Up @@ -198,10 +197,6 @@ bool LCAOSpinorBuilder::putFromH5(LCAOrbitalSet& up, LCAOrbitalSet& dn, xmlNodeP
myComm->comm.broadcast_n(dn.C->data(), dn.C->size());
#endif

#else
myComm->barrier_and_abort("LCAOSpinorBuilder::putFromH5 HDF5 is disabled");
#endif

#else
myComm->barrier_and_abort("LCAOSpinorBuilder::putFromH5 Must build with QMC_COMPLEX");
#endif
Expand Down
9 changes: 0 additions & 9 deletions src/QMCWaveFunctions/LCAO/LCAOrbitalBuilder.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -661,7 +661,6 @@ bool LCAOrbitalBuilder::putFromXML(LCAOrbitalSet& spo, xmlNodePtr coeff_ptr)
*/
bool LCAOrbitalBuilder::putFromH5(LCAOrbitalSet& spo, xmlNodePtr coeff_ptr)
{
#if defined(HAVE_LIBHDF5)
int neigs = spo.getBasisSetSize();
int setVal = -1;
std::string setname;
Expand Down Expand Up @@ -723,9 +722,6 @@ bool LCAOrbitalBuilder::putFromH5(LCAOrbitalSet& spo, xmlNodePtr coeff_ptr)
}
}
myComm->bcast(spo.C->data(), spo.C->size());
#else
APP_ABORT("LCAOrbitalBuilder::putFromH5 HDF5 is disabled.")
#endif
return true;
}

Expand All @@ -736,7 +732,6 @@ bool LCAOrbitalBuilder::putFromH5(LCAOrbitalSet& spo, xmlNodePtr coeff_ptr)
*/
bool LCAOrbitalBuilder::putPBCFromH5(LCAOrbitalSet& spo, xmlNodePtr coeff_ptr)
{
#if defined(HAVE_LIBHDF5)
ReportEngine PRE("LCAOrbitalBuilder", "LCAOrbitalBuilder::putPBCFromH5");
int norbs = spo.getOrbitalSetSize();
int neigs = spo.getBasisSetSize();
Expand Down Expand Up @@ -822,10 +817,6 @@ bool LCAOrbitalBuilder::putPBCFromH5(LCAOrbitalSet& spo, xmlNodePtr coeff_ptr)
#ifdef HAVE_MPI
myComm->comm.broadcast_n(spo.C->data(), spo.C->size());
#endif

#else
APP_ABORT("LCAOrbitalBuilder::putFromH5 HDF5 is disabled.")
#endif
return true;
}

Expand Down
7 changes: 0 additions & 7 deletions src/io/OhmmsData/HDFAttribIO.h
Original file line number Diff line number Diff line change
Expand Up @@ -17,14 +17,7 @@
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#if defined(HAVE_LIBHDF5)
#include "hdf5.h"
#else
using hid_t = int;
using hsize_t = std::size_t;
const int H5P_DEFAULT = 0;
#endif

#include <string>


Expand Down
3 changes: 0 additions & 3 deletions src/io/hdf/hdf_archive.h
Original file line number Diff line number Diff line change
Expand Up @@ -18,12 +18,9 @@
#include "hdf_datatype.h"
#include "hdf_dataspace.h"
#include "hdf_dataproxy.h"
#if defined(HAVE_LIBHDF5)
#include "hdf_pete.h"
#include "hdf_stl.h"
#include "hdf_hyperslab.h"
//#include "hdf_double_hyperslab.h"
#endif
#include <stack>
#include <bitset>
#ifdef HAVE_MPI
Expand Down
19 changes: 0 additions & 19 deletions src/io/hdf/hdf_datatype.h
Original file line number Diff line number Diff line change
Expand Up @@ -14,13 +14,10 @@
#define QMCPLUSPLUS_H5DATATYPE_DEFINE_H

#include <type_traits>
#if defined(HAVE_LIBHDF5)
#include <hdf5.h>
#endif

namespace qmcplusplus
{
#if defined(HAVE_LIBHDF5)
/** map C types to hdf5 native types
* bool is explicit removed due to the fact that it is implementation-dependant
*/
Expand All @@ -44,24 +41,8 @@ BOOSTSUB_H5_DATATYPE(unsigned short, H5T_NATIVE_USHORT);
BOOSTSUB_H5_DATATYPE(unsigned int, H5T_NATIVE_UINT);
BOOSTSUB_H5_DATATYPE(unsigned long, H5T_NATIVE_ULONG);
BOOSTSUB_H5_DATATYPE(unsigned long long, H5T_NATIVE_ULLONG);
//BOOSTSUB_H5_DATATYPE(uint32_t, H5T_NATIVE_UINT32);
//BOOSTSUB_H5_DATATYPE(uint64_t, H5T_NATIVE_UINT64);
BOOSTSUB_H5_DATATYPE(float, H5T_NATIVE_FLOAT);
BOOSTSUB_H5_DATATYPE(double, H5T_NATIVE_DOUBLE);

#else
using hid_t = int;
using herr_t = int;
using hsize_t = std::size_t;
const int H5P_DEFAULT = 0;

//return a non-sense integer
template<typename T>
inline hid_t get_h5_datatype(const T&)
{
return 0;
}

#endif
} // namespace qmcplusplus
#endif

0 comments on commit 711c34e

Please sign in to comment.