QMCPACK
Todo List
Member accumulator_set< T, typename >::add (value_type x)
Jeremy provides the reasonin of having this function. Suggest rename it to make the meaning clear.
Class Communicate
Possibly, make it a general manager class for mpi+openmp, mpi+mpi
Member CoulombPBCAB::evalConsts (const ParticleSet &P, bool report=true)
Here is where the charge system has to be handled.
Member DiracDeterminantBatched< PL, VT, FPVT >::evalGradSource (ParticleSet &P, ParticleSet &source, int iat) override
would be great to have docs.
Member DiracMatrixComputeCUDA< VALUE_FP >::mw_computeInvertAndLog (compute::Queue< PlatformKind::CUDA > &queue, const RefVector< const DualMatrix< VALUE_FP >> &a_mats, const RefVector< DualMatrix< VALUE_FP >> &inv_a_mats, const int n, DualVector< LogValue > &log_values)

try to do like mw_computeInvertAndLog_stride, copy and transpose to psiM_fp_ and fuse transfer.

Remove Transfer inv_a_mat to host and let the upper level code handle it.

Member DiracMatrixComputeCUDA< VALUE_FP >::mw_computeInvertAndLog_stride (compute::Queue< PlatformKind::CUDA > &queue, DualVector< VALUE_FP > &psi_Ms, DualVector< VALUE_FP > &inv_Ms, const int n, const int lda, DualVector< LogValue > &log_values)
Remove 1 and 3. Handle transfer at upper level.
Member DiracMatrixComputeCUDA< VALUE_FP >::mw_invertTranspose (compute::Queue< PlatformKind::CUDA > &queue, const RefVector< const DualMatrix< TMAT >> &a_mats, const RefVector< DualMatrix< TMAT >> &inv_a_mats, DualVector< LogValue > &log_values)
Copy invM_fp_ to inv_a_mat on device is desired. Transfer inv_a_mat to host should be handled by the upper level code.
Member DiracMatrixComputeOMPTarget< VALUE_FP >::mw_invertTranspose (compute::Queue< PL > &resource_ignored, const RefVector< const OffloadPinnedMatrix< TMAT >> &a_mats, const RefVector< OffloadPinnedMatrix< TMAT >> &inv_a_mats, OffloadPinnedVector< LogValue > &log_values)
measure if using the a_mats without a copy to contiguous vector is better.
Class DualAllocator< T, DeviceAllocator, HostAllocator >
the OMPTarget allocation can be a "device" allocator comparable to CUDAAllocator Then OMPallocator can be replaced by a DualAllocator<T, OffloadAllocator<T>, PinnedAllocator<T>>
Member EstimatorManagerBase::energyAccumulator
expand it for all the scalar observables to report the final results
Member EstimatorManagerNew::energyAccumulator
expand it for all the scalar observables to report the final results
Member EstimatorManagerNew::reset ()
this should be in in constructor object shouldn't be reused Warning this is different from some "resets" in the code, it does not clear the object
Member EstimatorManagerNew::startDriverRun ()
clean up this method its a mess
Member MPIObjectBase::myComm
use smart pointer
File NEReferencePoints.h
When QMCHamiltonian/ReferencePoints is removed rename this class to ReferencePoints
File NESpaceGrid.h
rename to more obvious Spacegrid once QMCHamiltonian/SpaceGrid is removed
Member NESpaceGrid< REAL >::registerGrid (hdf_archive &file, int grid_index)
uses Observable helper unpleasantly in implementation, remove
Class OhmmsObject
This class should be integrated into OhmmsElementBase or an equivalent base class.
Class OneBodyDensityMatrices

most matrices are written to by incrementing a single vector index into their memory. This isn't compatible with aligned rows and ignores much less error prone accessing that Matrix supplys. Fix it.

functions favor output arguments or state updates over return values, simplify.

Class OneDimLinearSpline< Td, Tg, CTd, CTg >
Have to prevent OneDimLinearSpline<T> being used with other than linear grid!!
Class ParticleAttribOps

Implement openMP compatible container class or evaluate function.

Implement get/put member functions for MPI-like parallelism

Class ProjectData
This shouldn't contain MPI information it is only used to calculate the path information and the communication parameters should just be input params to that call.
Member QMCDriverNew::process (xmlNodePtr cur) override=0
remove cur, the driver and all its child nodes should be completely processed before this stage of driver initialization is hit.
Member qmcplusplus::createDistanceTableAA (ParticleSet &s, std::ostream &description)
DistanceTable should work as a factory, as well, to instantiate DistanceTable subject to different boundary conditions. Lattice/CrystalLattice.h and Lattice/CrystalLattice.cpp can be owned by DistanceTable to generically control the crystalline structure.
Member qmcplusplus::MatrixOperators::insert_columns (const MAT1 &small, MAT2 &big, int offset_c)
smater and more efficient matrix, move up for others The columns [0,M1) are inserted into [offset_c,offset_c+M1).
Member qmcplusplus::TEST_CASE ("SpaceGrid::hdf5", "[estimators]")
add additional hdf5 output checks
Class ScalarEstimatorBase

document this

  • registerObservables :

document this

  • clone : because all types must be erased ScalarEstimatorBase and its derived classes do not perform any I/O function.
Class SFNBranch

: Remove duplicate reading of Driver XML section with own copies of input parameters.

: Rename, it is the only branching class so its name is too much

: Use normal types for data members, don't be clever, the parameter enums violate KISS and make debugging annoying

: Remove as much state as possible.

Class SimpleFixedNodeBranch

: Remove Estimator dependency, only has come dependency. Express accumulate in the actual DMC algorithm (i.e. in DMCBatched.cpp)

: Remove duplicate reading of Driver XML section with own copies of input parameters.

: Rename, it is the only branching class so its name is too much

: Use normal types for data members, don't be clever, the parameter enums violate KISS and make debugging annoying

: Remove as much state as possible.

Member SoaAtomicBasisSet< ROT, SH >::finalize ()
Should be able to overwrite Rmax to be much smaller than the maximum grid
Class SpeciesSet
prove this helps overall performance, if not remove it. Else document it and it's use
Member TrialWaveFunction::evaluateDerivatives (ParticleSet &P, const opt_variables_type &optvars, Vector< ValueType > &dlogpsi, Vector< ValueType > &dhpsioverpsi)
WaveFunctionComponent objects should take the mass into account.
Member VectorSoaContainer< T, D, Alloc >::attachReference (size_type n, size_type n_padded, const CONTAINER &other, T *ptr)
return this when buffer system is simplified.
Member VectorSoaContainer< T, D, Alloc >::attachReference (size_type n, size_type n_padded, T *ptr)
return this when buffer system is simplified.
Member WalkerControlBase::setWalkerID (MCWalkerConfiguration &walkers)
remove when legacy is dropped
Member WalkerControlMPI::determineNewWalkerPopulation (int cur_pop, int num_contexts, int my_context, std::vector< int > &num_per_rank, std::vector< int > &fair_offset, std::vector< int > &minus, std::vector< int > &plus)
fix this argument salad
Member WalkerProperties::Indexes
: this enum and the handling of "Properties" through the class hierarchy is hot garbage. Replace, for now we're just making it safe.
Class XMLNodeString
this should just be a function that takes a cur and returns a std::string.