DFT-EFE
 
Loading...
Searching...
No Matches
dftefe::linearAlgebra::MultivectorScratch< ValueType, memorySpace > Class Template Reference

Shared scratch MultiVectors (large-batch and small-batch variants) that can be reused across ChebyshevFilteredEigenSolver, OrthonormalizationFunctions, RayleighRitzEigenSolver, and KohnShamEigenSolver to avoid redundant GPU allocations. More...

#include <MultivectorScratch.h>

Public Member Functions

 MultivectorScratch (std::shared_ptr< MultiVector< ValueType, memorySpace > > XinBatch, std::shared_ptr< MultiVector< ValueType, memorySpace > > XoutBatch)
 
void acquire ()
 
void release ()
 
void setXinBatchSmall (std::shared_ptr< MultiVector< ValueType, memorySpace > > v)
 
void setXoutBatchSmall (std::shared_ptr< MultiVector< ValueType, memorySpace > > v)
 
std::shared_ptr< MultiVector< ValueType, memorySpace > > getXinBatch () const
 
std::shared_ptr< MultiVector< ValueType, memorySpace > > getXoutBatch () const
 
std::shared_ptr< MultiVector< ValueType, memorySpace > > getXinBatchSmall () const
 
std::shared_ptr< MultiVector< ValueType, memorySpace > > getXoutBatchSmall () const
 
bool hasXinBatch () const
 
bool hasXoutBatch () const
 
bool hasXinBatchSmall () const
 
bool hasXoutBatchSmall () const
 
size_type getXinBatchSize () const
 
size_type getXoutBatchSize () const
 
size_type getXinBatchSmallSize () const
 

Private Attributes

std::shared_ptr< MultiVector< ValueType, memorySpace > > d_XinBatch
 
std::shared_ptr< MultiVector< ValueType, memorySpace > > d_XoutBatch
 
std::shared_ptr< MultiVector< ValueType, memorySpace > > d_XinBatchSmall
 
std::shared_ptr< MultiVector< ValueType, memorySpace > > d_XoutBatchSmall
 
bool d_inUse
 

Detailed Description

template<typename ValueType, utils::MemorySpace memorySpace>
class dftefe::linearAlgebra::MultivectorScratch< ValueType, memorySpace >

Shared scratch MultiVectors (large-batch and small-batch variants) that can be reused across ChebyshevFilteredEigenSolver, OrthonormalizationFunctions, RayleighRitzEigenSolver, and KohnShamEigenSolver to avoid redundant GPU allocations.

The large-batch buffers are supplied at construction (their size is always known upfront). The small-batch buffers are registered lazily via setXinBatchSmall / setXoutBatchSmall the first time a remainder batch is encountered, and are reused by all subsequent solver calls.

Constructor & Destructor Documentation

◆ MultivectorScratch()

template<typename ValueType , utils::MemorySpace memorySpace>
dftefe::linearAlgebra::MultivectorScratch< ValueType, memorySpace >::MultivectorScratch ( std::shared_ptr< MultiVector< ValueType, memorySpace > >  XinBatch,
std::shared_ptr< MultiVector< ValueType, memorySpace > >  XoutBatch 
)
inline

Member Function Documentation

◆ acquire()

template<typename ValueType , utils::MemorySpace memorySpace>
void dftefe::linearAlgebra::MultivectorScratch< ValueType, memorySpace >::acquire ( )
inline
Here is the call graph for this function:

◆ getXinBatch()

template<typename ValueType , utils::MemorySpace memorySpace>
std::shared_ptr< MultiVector< ValueType, memorySpace > > dftefe::linearAlgebra::MultivectorScratch< ValueType, memorySpace >::getXinBatch ( ) const
inline

◆ getXinBatchSize()

template<typename ValueType , utils::MemorySpace memorySpace>
size_type dftefe::linearAlgebra::MultivectorScratch< ValueType, memorySpace >::getXinBatchSize ( ) const
inline

◆ getXinBatchSmall()

template<typename ValueType , utils::MemorySpace memorySpace>
std::shared_ptr< MultiVector< ValueType, memorySpace > > dftefe::linearAlgebra::MultivectorScratch< ValueType, memorySpace >::getXinBatchSmall ( ) const
inline

◆ getXinBatchSmallSize()

template<typename ValueType , utils::MemorySpace memorySpace>
size_type dftefe::linearAlgebra::MultivectorScratch< ValueType, memorySpace >::getXinBatchSmallSize ( ) const
inline

◆ getXoutBatch()

template<typename ValueType , utils::MemorySpace memorySpace>
std::shared_ptr< MultiVector< ValueType, memorySpace > > dftefe::linearAlgebra::MultivectorScratch< ValueType, memorySpace >::getXoutBatch ( ) const
inline

◆ getXoutBatchSize()

template<typename ValueType , utils::MemorySpace memorySpace>
size_type dftefe::linearAlgebra::MultivectorScratch< ValueType, memorySpace >::getXoutBatchSize ( ) const
inline

◆ getXoutBatchSmall()

template<typename ValueType , utils::MemorySpace memorySpace>
std::shared_ptr< MultiVector< ValueType, memorySpace > > dftefe::linearAlgebra::MultivectorScratch< ValueType, memorySpace >::getXoutBatchSmall ( ) const
inline

◆ hasXinBatch()

template<typename ValueType , utils::MemorySpace memorySpace>
bool dftefe::linearAlgebra::MultivectorScratch< ValueType, memorySpace >::hasXinBatch ( ) const
inline

◆ hasXinBatchSmall()

template<typename ValueType , utils::MemorySpace memorySpace>
bool dftefe::linearAlgebra::MultivectorScratch< ValueType, memorySpace >::hasXinBatchSmall ( ) const
inline

◆ hasXoutBatch()

template<typename ValueType , utils::MemorySpace memorySpace>
bool dftefe::linearAlgebra::MultivectorScratch< ValueType, memorySpace >::hasXoutBatch ( ) const
inline

◆ hasXoutBatchSmall()

template<typename ValueType , utils::MemorySpace memorySpace>
bool dftefe::linearAlgebra::MultivectorScratch< ValueType, memorySpace >::hasXoutBatchSmall ( ) const
inline

◆ release()

template<typename ValueType , utils::MemorySpace memorySpace>
void dftefe::linearAlgebra::MultivectorScratch< ValueType, memorySpace >::release ( )
inline

◆ setXinBatchSmall()

template<typename ValueType , utils::MemorySpace memorySpace>
void dftefe::linearAlgebra::MultivectorScratch< ValueType, memorySpace >::setXinBatchSmall ( std::shared_ptr< MultiVector< ValueType, memorySpace > >  v)
inline

◆ setXoutBatchSmall()

template<typename ValueType , utils::MemorySpace memorySpace>
void dftefe::linearAlgebra::MultivectorScratch< ValueType, memorySpace >::setXoutBatchSmall ( std::shared_ptr< MultiVector< ValueType, memorySpace > >  v)
inline

Member Data Documentation

◆ d_inUse

template<typename ValueType , utils::MemorySpace memorySpace>
bool dftefe::linearAlgebra::MultivectorScratch< ValueType, memorySpace >::d_inUse
private

◆ d_XinBatch

template<typename ValueType , utils::MemorySpace memorySpace>
std::shared_ptr<MultiVector<ValueType, memorySpace> > dftefe::linearAlgebra::MultivectorScratch< ValueType, memorySpace >::d_XinBatch
private

◆ d_XinBatchSmall

template<typename ValueType , utils::MemorySpace memorySpace>
std::shared_ptr<MultiVector<ValueType, memorySpace> > dftefe::linearAlgebra::MultivectorScratch< ValueType, memorySpace >::d_XinBatchSmall
private

◆ d_XoutBatch

template<typename ValueType , utils::MemorySpace memorySpace>
std::shared_ptr<MultiVector<ValueType, memorySpace> > dftefe::linearAlgebra::MultivectorScratch< ValueType, memorySpace >::d_XoutBatch
private

◆ d_XoutBatchSmall

template<typename ValueType , utils::MemorySpace memorySpace>
std::shared_ptr<MultiVector<ValueType, memorySpace> > dftefe::linearAlgebra::MultivectorScratch< ValueType, memorySpace >::d_XoutBatchSmall
private

The documentation for this class was generated from the following file: