DFT-EFE
 
Loading...
Searching...
No Matches
dftefe::linearAlgebra::blasLapack Namespace Reference

Namespaces

namespace  blasLapackKernelsInternal
 
namespace  blasWrapper
 
namespace  lapackWrapper
 
namespace  typeInternal
 

Classes

class  CopyKernelOneValueType
 
class  CopyKernelTwoValueTypes
 
class  KernelsOneValueType
 
class  KernelsTwoValueTypes
 namespace class for BlasLapack kernels not present in blaspp. More...
 

Typedefs

using LapackInt = int64_t
 
template<typename ValueType >
using real_type = typeInternal::real_type< ValueType >
 
template<typename ValueType1 , typename ValueType2 >
using scalar_type = typeInternal::scalar_type< ValueType1, ValueType2 >
 

Enumerations

enum class  Layout { ColMajor , RowMajor }
 
enum class  ScalarOp { Identity , Conj }
 

Functions

template<typename ValueType , typename dftefe::utils::MemorySpace memorySpace>
real_type< ValueType > asum (size_type n, ValueType const *x, size_type incx, LinAlgOpContext< memorySpace > &context)
 
template<typename ValueType , typename dftefe::utils::MemorySpace memorySpace>
real_type< ValueType > amax (size_type n, ValueType const *x, size_type incx, LinAlgOpContext< memorySpace > &context)
 
template<typename ValueType , typename dftefe::utils::MemorySpace memorySpace>
std::vector< double > amaxsMultiVector (const size_type vecSize, const size_type numVec, ValueType const *multiVecData, LinAlgOpContext< memorySpace > &context)
 Template for computing \( l_{\inf} \) norms of all the numVec vectors in a multi Vector. More...
 
template<typename ValueType1 , typename ValueType2 , typename dftefe::utils::MemorySpace memorySpace>
void axpy (size_type n, scalar_type< ValueType1, ValueType2 > alpha, ValueType1 const *x, size_type incx, ValueType2 *y, size_type incy, LinAlgOpContext< memorySpace > &context)
 
template<typename ValueType1 , typename ValueType2 , typename dftefe::utils::MemorySpace memorySpace>
void reciprocalX (size_type n, const ValueType1 alpha, ValueType2 const *x, scalar_type< ValueType1, ValueType2 > *y, LinAlgOpContext< memorySpace > &context)
 Template for computing the multiplicative inverse of all the elements of x, does not check if any element is zero computes \f $ y[i] = \frac{alpha}{x[i]} $ \f. More...
 
template<typename ValueType1 , typename ValueType2 , typename dftefe::utils::MemorySpace memorySpace>
void hadamardProduct (size_type n, const ValueType1 *x, const ValueType2 *y, scalar_type< ValueType1, ValueType2 > *z, LinAlgOpContext< memorySpace > &context)
 Template for performing \( z = \alpha x$ @param[in] size size of the array @param[in] \) alpha \( scalar @param[in] x array @param[out] z array */ template <typename ValueType1, typename ValueType2, typename dftefe::utils::MemorySpace memorySpace> void ascale(size_type n, ValueType1 alpha, const ValueType2 * x, scalar_type<ValueType1, ValueType2> *z, LinAlgOpContext<memorySpace> & context); /** @brief Template for performing \) z_i = x_i * y_i$. More...
 
template<typename ValueType1 , typename ValueType2 , dftefe::utils::MemorySpace memorySpace>
void ascale (const size_type n, const ValueType1 alpha, const ValueType2 *x, scalar_type< ValueType1, ValueType2 > *z, LinAlgOpContext< memorySpace > &context)
 
template<typename ValueType1 , typename ValueType2 , typename dftefe::utils::MemorySpace memorySpace>
void hadamardProduct (size_type n, const ValueType1 *x, const ValueType2 *y, const ScalarOp &opx, const ScalarOp &opy, scalar_type< ValueType1, ValueType2 > *z, LinAlgOpContext< memorySpace > &context)
 
template<typename ValueType1 , typename ValueType2 , dftefe::utils::MemorySpace memorySpace>
void scaleStridedVarBatched (const size_type numMats, const Layout layout, const ScalarOp &scalarOpA, const ScalarOp &scalarOpB, const size_type *stridea, const size_type *strideb, const size_type *stridec, const size_type *m, const size_type *n, const size_type *k, const ValueType1 *dA, const ValueType2 *dB, scalar_type< ValueType1, ValueType2 > *dC, LinAlgOpContext< memorySpace > &context)
 
template<typename ValueType1 , typename ValueType2 , typename dftefe::utils::MemorySpace memorySpace>
void khatriRaoProduct (const Layout layout, const size_type sizeI, const size_type sizeJ, const size_type sizeK, const ValueType1 *A, const ValueType2 *B, scalar_type< ValueType1, ValueType2 > *Z, LinAlgOpContext< memorySpace > &context)
 
template<typename ValueType1 , typename ValueType2 , typename dftefe::utils::MemorySpace memorySpace>
void transposedKhatriRaoProduct (const Layout layout, const size_type sizeI, const size_type sizeJ, const size_type sizeK, const ValueType1 *A, const ValueType2 *B, scalar_type< ValueType1, ValueType2 > *Z, LinAlgOpContext< memorySpace > &context)
 
template<typename ValueType1 , typename ValueType2 , dftefe::utils::MemorySpace memorySpace>
void axpby (const size_type n, const scalar_type< ValueType1, ValueType2 > alpha, const ValueType1 *x, const scalar_type< ValueType1, ValueType2 > beta, const ValueType2 *y, scalar_type< ValueType1, ValueType2 > *z, LinAlgOpContext< memorySpace > &context)
 
template<typename ValueType1 , typename ValueType2 , typename dftefe::utils::MemorySpace memorySpace>
void axpbyBlocked (const size_type n, const size_type blockSize, const scalar_type< ValueType1, ValueType2 > alpha1, const scalar_type< ValueType1, ValueType2 > *alpha, const ValueType1 *x, const scalar_type< ValueType1, ValueType2 > beta1, const scalar_type< ValueType1, ValueType2 > *beta, const ValueType2 *y, scalar_type< ValueType1, ValueType2 > *z, LinAlgOpContext< memorySpace > &context)
 
template<typename ValueType1 , typename ValueType2 , dftefe::utils::MemorySpace memorySpace>
scalar_type< ValueType1, ValueType2 > dot (const size_type n, ValueType1 const *x, const size_type incx, ValueType2 const *y, const size_type incy, LinAlgOpContext< memorySpace > &context)
 
template<typename ValueType1 , typename ValueType2 , dftefe::utils::MemorySpace memorySpace>
void dotMultiVector (const size_type vecSize, const size_type numVec, const ValueType1 *multiVecDataX, const ValueType2 *multiVecDataY, const ScalarOp &opX, const ScalarOp &opY, scalar_type< ValueType1, ValueType2 > *multiVecDotProduct, LinAlgOpContext< memorySpace > &context)
 
template<typename ValueType , dftefe::utils::MemorySpace memorySpace>
real_type< ValueType > nrm2 (const size_type n, ValueType const *x, const size_type incx, LinAlgOpContext< memorySpace > &context)
 
template<typename ValueType , dftefe::utils::MemorySpace memorySpace>
std::vector< double > nrms2MultiVector (const size_type vecSize, const size_type numVec, const ValueType *multiVecData, LinAlgOpContext< memorySpace > &context)
 
template<typename ValueType1 , typename ValueType2 , typename dftefe::utils::MemorySpace memorySpace>
void stridedBlockCopy (const size_type vecSize, const size_type numVec, const size_type srcLeadingDim, const size_type srcBlockStartId, const size_type dstLeadingDim, const size_type dstBlockStartId, const ValueType1 *copyFromVec, ValueType2 *copyToVec, LinAlgOpContext< memorySpace > &context)
 
template<typename ValueType1 , typename ValueType2 , typename dftefe::utils::MemorySpace memorySpace>
void varBatchedStridedBlockCopy (const size_type numBatch, const size_type *strideSrc, const size_type *strideDst, const size_type *vecSizeArr, const size_type *numVecArr, const size_type *srcLeadingDimArr, const size_type *srcBlockStartIdArr, const size_type *dstLeadingDimArr, const size_type *dstBlockStartIdArr, const ValueType1 *copyFromVec, ValueType2 *copyToVec, LinAlgOpContext< memorySpace > &context)
 
template<typename ValueType1 , typename ValueType2 , typename dftefe::utils::MemorySpace memorySpace>
void copyValueType1ArrToValueType2Arr (const size_type size, const ValueType1 *valueType1Arr, ValueType2 *valueType2Arr, LinAlgOpContext< memorySpace > &context)
 
template<typename ValueType1 , typename ValueType2 , dftefe::utils::MemorySpace memorySpace>
void gemm (const char &transA, const char &transB, const size_type m, const size_type n, const size_type k, const scalar_type< ValueType1, ValueType2 > alpha, ValueType1 const *dA, const size_type ldda, ValueType2 const *dB, const size_type lddb, const scalar_type< ValueType1, ValueType2 > beta, scalar_type< ValueType1, ValueType2 > *dC, const size_type lddc, LinAlgOpContext< memorySpace > &context)
 
template<typename ValueType1 , typename ValueType2 , dftefe::utils::MemorySpace memorySpace>
void gemmStridedVarBatched (const size_type numMats, const char *transA, const char *transB, const size_type *stridea, const size_type *strideb, const size_type *stridec, const size_type *m, const size_type *n, const size_type *k, const scalar_type< ValueType1, ValueType2 > alpha, const ValueType1 *dA, const size_type *ldda, const ValueType2 *dB, const size_type *lddb, const scalar_type< ValueType1, ValueType2 > beta, scalar_type< ValueType1, ValueType2 > *dC, const size_type *lddc, LinAlgOpContext< memorySpace > &context)
 
template<typename ValueType , typename dftefe::utils::MemorySpace memorySpace>
LapackError inverse (size_type n, ValueType *A, LinAlgOpContext< memorySpace > &context)
 
template<typename ValueType , typename dftefe::utils::MemorySpace memorySpace>
LapackError trtri (const char uplo, const char diag, size_type n, ValueType *A, size_type lda, LinAlgOpContext< memorySpace > &context)
 
template<typename ValueType , typename dftefe::utils::MemorySpace memorySpace>
LapackError potrf (const char uplo, size_type n, ValueType *A, size_type lda, LinAlgOpContext< memorySpace > &context)
 
template<typename ValueType , typename dftefe::utils::MemorySpace memorySpace>
LapackError steqr (const char jobz, size_type n, real_type< ValueType > *D, real_type< ValueType > *E, ValueType *Z, size_type ldz, LinAlgOpContext< memorySpace > &context)
 
template<typename ValueType , typename dftefe::utils::MemorySpace memorySpace>
LapackError heevd (const char jobz, const char uplo, size_type n, ValueType *A, size_type lda, real_type< ValueType > *W, LinAlgOpContext< memorySpace > &context)
 
template<typename ValueType , typename dftefe::utils::MemorySpace memorySpace>
LapackError hegv (size_type itype, const char jobz, const char uplo, size_type n, ValueType *A, size_type lda, ValueType *B, size_type ldb, real_type< ValueType > *W, LinAlgOpContext< memorySpace > &context)
 
template<typename ValueType , typename dftefe::utils::MemorySpace memorySpace>
LapackError gesv (size_type n, size_type nrhs, ValueType *A, size_type lda, ValueType *B, size_type ldb, LinAlgOpContext< memorySpace > &context)
 
template<typename ValueType >
LapackError inverse (size_type n, ValueType *A, LinAlgOpContext< dftefe::utils::MemorySpace::DEVICE > &context)
 
template<typename ValueType >
LapackError trtri (const char uplo, const char diag, size_type n, ValueType *A, size_type lda, LinAlgOpContext< dftefe::utils::MemorySpace::DEVICE > &context)
 
template<typename ValueType >
LapackError potrf (const char uplo, size_type n, ValueType *A, size_type lda, LinAlgOpContext< dftefe::utils::MemorySpace::DEVICE > &context)
 
template<typename ValueType >
LapackError steqr (const char jobz, size_type n, real_type< ValueType > *D, real_type< ValueType > *E, ValueType *Z, size_type ldz, LinAlgOpContext< dftefe::utils::MemorySpace::DEVICE > &context)
 
template<typename ValueType >
LapackError heevd (const char jobz, const char uplo, size_type n, ValueType *A, size_type lda, real_type< ValueType > *W, LinAlgOpContext< dftefe::utils::MemorySpace::DEVICE > &context)
 
template<typename ValueType >
LapackError hegv (size_type itype, const char jobz, const char uplo, size_type n, ValueType *A, size_type lda, ValueType *B, size_type ldb, real_type< ValueType > *W, LinAlgOpContext< dftefe::utils::MemorySpace::DEVICE > &context)
 
template<typename ValueType >
LapackError gesv (size_type n, size_type nrhs, ValueType *A, size_type lda, ValueType *B, size_type ldb, LinAlgOpContext< dftefe::utils::MemorySpace::DEVICE > &context)
 
 EXPLICITLY_INSTANTIATE_COPY_2T (float, float, dftefe::utils::MemorySpace::HOST)
 
 EXPLICITLY_INSTANTIATE_COPY_2T (double, double, dftefe::utils::MemorySpace::HOST)
 
 EXPLICITLY_INSTANTIATE_COPY_2T (std::complex< float >, std::complex< float >, dftefe::utils::MemorySpace::HOST)
 
 EXPLICITLY_INSTANTIATE_COPY_2T (std::complex< double >, std::complex< double >, dftefe::utils::MemorySpace::HOST)
 
 EXPLICITLY_INSTANTIATE_COPY_1T (float, dftefe::utils::MemorySpace::HOST)
 
 EXPLICITLY_INSTANTIATE_COPY_1T (double, dftefe::utils::MemorySpace::HOST)
 
 EXPLICITLY_INSTANTIATE_COPY_1T (std::complex< float >, dftefe::utils::MemorySpace::HOST)
 
 EXPLICITLY_INSTANTIATE_COPY_1T (std::complex< double >, dftefe::utils::MemorySpace::HOST)
 
 EXPLICITLY_INSTANTIATE_1T (float, dftefe::utils::MemorySpace::HOST)
 
 EXPLICITLY_INSTANTIATE_1T (double, dftefe::utils::MemorySpace::HOST)
 
 EXPLICITLY_INSTANTIATE_1T (std::complex< float >, dftefe::utils::MemorySpace::HOST)
 
 EXPLICITLY_INSTANTIATE_1T (std::complex< double >, dftefe::utils::MemorySpace::HOST)
 
 EXPLICITLY_INSTANTIATE_2T (float, float, dftefe::utils::MemorySpace::HOST)
 
 EXPLICITLY_INSTANTIATE_2T (float, double, dftefe::utils::MemorySpace::HOST)
 
 EXPLICITLY_INSTANTIATE_2T (float, std::complex< float >, dftefe::utils::MemorySpace::HOST)
 
 EXPLICITLY_INSTANTIATE_2T (float, std::complex< double >, dftefe::utils::MemorySpace::HOST)
 
 EXPLICITLY_INSTANTIATE_2T (double, float, dftefe::utils::MemorySpace::HOST)
 
 EXPLICITLY_INSTANTIATE_2T (double, double, dftefe::utils::MemorySpace::HOST)
 
 EXPLICITLY_INSTANTIATE_2T (double, std::complex< float >, dftefe::utils::MemorySpace::HOST)
 
 EXPLICITLY_INSTANTIATE_2T (double, std::complex< double >, dftefe::utils::MemorySpace::HOST)
 
 EXPLICITLY_INSTANTIATE_2T (std::complex< float >, float, dftefe::utils::MemorySpace::HOST)
 
 EXPLICITLY_INSTANTIATE_2T (std::complex< float >, double, dftefe::utils::MemorySpace::HOST)
 
 EXPLICITLY_INSTANTIATE_2T (std::complex< float >, std::complex< float >, dftefe::utils::MemorySpace::HOST)
 
 EXPLICITLY_INSTANTIATE_2T (std::complex< float >, std::complex< double >, dftefe::utils::MemorySpace::HOST)
 
 EXPLICITLY_INSTANTIATE_2T (std::complex< double >, float, dftefe::utils::MemorySpace::HOST)
 
 EXPLICITLY_INSTANTIATE_2T (std::complex< double >, double, dftefe::utils::MemorySpace::HOST)
 
 EXPLICITLY_INSTANTIATE_2T (std::complex< double >, std::complex< float >, dftefe::utils::MemorySpace::HOST)
 
 EXPLICITLY_INSTANTIATE_2T (std::complex< double >, std::complex< double >, dftefe::utils::MemorySpace::HOST)
 

Typedef Documentation

◆ LapackInt

◆ real_type

template<typename ValueType >
using dftefe::linearAlgebra::blasLapack::real_type = typedef typeInternal::real_type<ValueType>

◆ scalar_type

template<typename ValueType1 , typename ValueType2 >
using dftefe::linearAlgebra::blasLapack::scalar_type = typedef typeInternal::scalar_type<ValueType1, ValueType2>

Enumeration Type Documentation

◆ Layout

Enumerator
ColMajor 
RowMajor 

◆ ScalarOp

Enumerator
Identity 
Conj 

Function Documentation

◆ amax()

template<typename ValueType , typename dftefe::utils::MemorySpace memorySpace>
real_type< ValueType > dftefe::linearAlgebra::blasLapack::amax ( size_type  n,
ValueType const *  x,
size_type  incx,
LinAlgOpContext< memorySpace > &  context 
)
Here is the caller graph for this function:

◆ amaxsMultiVector()

template<typename ValueType , typename dftefe::utils::MemorySpace memorySpace>
std::vector< double > dftefe::linearAlgebra::blasLapack::amaxsMultiVector ( const size_type  vecSize,
const size_type  numVec,
ValueType const *  multiVecData,
LinAlgOpContext< memorySpace > &  context 
)

Template for computing \( l_{\inf} \) norms of all the numVec vectors in a multi Vector.

Parameters
[in]vecSizesize of each vector
[in]numVecnumber of vectors in the multi Vector
[in]multiVecDatamulti vector data in row major format i.e. vector index is the fastest index
Returns
\( l_{\inf} \) norms of all the vectors
Here is the call graph for this function:

◆ ascale()

template<typename ValueType1 , typename ValueType2 , dftefe::utils::MemorySpace memorySpace>
void dftefe::linearAlgebra::blasLapack::ascale ( const size_type  n,
const ValueType1  alpha,
const ValueType2 *  x,
scalar_type< ValueType1, ValueType2 > *  z,
LinAlgOpContext< memorySpace > &  context 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ asum()

template<typename ValueType , typename dftefe::utils::MemorySpace memorySpace>
real_type< ValueType > dftefe::linearAlgebra::blasLapack::asum ( size_type  n,
ValueType const *  x,
size_type  incx,
LinAlgOpContext< memorySpace > &  context 
)

◆ axpby()

template<typename ValueType1 , typename ValueType2 , dftefe::utils::MemorySpace memorySpace>
void dftefe::linearAlgebra::blasLapack::axpby ( const size_type  n,
const scalar_type< ValueType1, ValueType2 >  alpha,
const ValueType1 *  x,
const scalar_type< ValueType1, ValueType2 >  beta,
const ValueType2 *  y,
scalar_type< ValueType1, ValueType2 > *  z,
LinAlgOpContext< memorySpace > &  context 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ axpbyBlocked()

template<typename ValueType1 , typename ValueType2 , typename dftefe::utils::MemorySpace memorySpace>
void dftefe::linearAlgebra::blasLapack::axpbyBlocked ( const size_type  n,
const size_type  blockSize,
const scalar_type< ValueType1, ValueType2 >  alpha1,
const scalar_type< ValueType1, ValueType2 > *  alpha,
const ValueType1 *  x,
const scalar_type< ValueType1, ValueType2 >  beta1,
const scalar_type< ValueType1, ValueType2 > *  beta,
const ValueType2 *  y,
scalar_type< ValueType1, ValueType2 > *  z,
LinAlgOpContext< memorySpace > &  context 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ axpy()

template<typename ValueType1 , typename ValueType2 , typename dftefe::utils::MemorySpace memorySpace>
void dftefe::linearAlgebra::blasLapack::axpy ( size_type  n,
scalar_type< ValueType1, ValueType2 >  alpha,
ValueType1 const *  x,
size_type  incx,
ValueType2 *  y,
size_type  incy,
LinAlgOpContext< memorySpace > &  context 
)
Here is the caller graph for this function:

◆ copyValueType1ArrToValueType2Arr()

template<typename ValueType1 , typename ValueType2 , typename dftefe::utils::MemorySpace memorySpace>
void dftefe::linearAlgebra::blasLapack::copyValueType1ArrToValueType2Arr ( const size_type  size,
const ValueType1 *  valueType1Arr,
ValueType2 *  valueType2Arr,
LinAlgOpContext< memorySpace > &  context 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ dot()

template<typename ValueType1 , typename ValueType2 , dftefe::utils::MemorySpace memorySpace>
scalar_type< ValueType1, ValueType2 > dftefe::linearAlgebra::blasLapack::dot ( const size_type  n,
ValueType1 const *  x,
const size_type  incx,
ValueType2 const *  y,
const size_type  incy,
LinAlgOpContext< memorySpace > &  context 
)

◆ dotMultiVector()

template<typename ValueType1 , typename ValueType2 , dftefe::utils::MemorySpace memorySpace>
void dftefe::linearAlgebra::blasLapack::dotMultiVector ( const size_type  vecSize,
const size_type  numVec,
const ValueType1 *  multiVecDataX,
const ValueType2 *  multiVecDataY,
const ScalarOp opX,
const ScalarOp opY,
scalar_type< ValueType1, ValueType2 > *  multiVecDotProduct,
LinAlgOpContext< memorySpace > &  context 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ EXPLICITLY_INSTANTIATE_1T() [1/4]

dftefe::linearAlgebra::blasLapack::EXPLICITLY_INSTANTIATE_1T ( double  ,
dftefe::utils::MemorySpace::HOST   
)

◆ EXPLICITLY_INSTANTIATE_1T() [2/4]

dftefe::linearAlgebra::blasLapack::EXPLICITLY_INSTANTIATE_1T ( float  ,
dftefe::utils::MemorySpace::HOST   
)

◆ EXPLICITLY_INSTANTIATE_1T() [3/4]

dftefe::linearAlgebra::blasLapack::EXPLICITLY_INSTANTIATE_1T ( std::complex< double >  ,
dftefe::utils::MemorySpace::HOST   
)

◆ EXPLICITLY_INSTANTIATE_1T() [4/4]

dftefe::linearAlgebra::blasLapack::EXPLICITLY_INSTANTIATE_1T ( std::complex< float >  ,
dftefe::utils::MemorySpace::HOST   
)

◆ EXPLICITLY_INSTANTIATE_2T() [1/16]

dftefe::linearAlgebra::blasLapack::EXPLICITLY_INSTANTIATE_2T ( double  ,
double  ,
dftefe::utils::MemorySpace::HOST   
)

◆ EXPLICITLY_INSTANTIATE_2T() [2/16]

dftefe::linearAlgebra::blasLapack::EXPLICITLY_INSTANTIATE_2T ( double  ,
float  ,
dftefe::utils::MemorySpace::HOST   
)

◆ EXPLICITLY_INSTANTIATE_2T() [3/16]

dftefe::linearAlgebra::blasLapack::EXPLICITLY_INSTANTIATE_2T ( double  ,
std::complex< double >  ,
dftefe::utils::MemorySpace::HOST   
)

◆ EXPLICITLY_INSTANTIATE_2T() [4/16]

dftefe::linearAlgebra::blasLapack::EXPLICITLY_INSTANTIATE_2T ( double  ,
std::complex< float >  ,
dftefe::utils::MemorySpace::HOST   
)

◆ EXPLICITLY_INSTANTIATE_2T() [5/16]

dftefe::linearAlgebra::blasLapack::EXPLICITLY_INSTANTIATE_2T ( float  ,
double  ,
dftefe::utils::MemorySpace::HOST   
)

◆ EXPLICITLY_INSTANTIATE_2T() [6/16]

dftefe::linearAlgebra::blasLapack::EXPLICITLY_INSTANTIATE_2T ( float  ,
float  ,
dftefe::utils::MemorySpace::HOST   
)

◆ EXPLICITLY_INSTANTIATE_2T() [7/16]

dftefe::linearAlgebra::blasLapack::EXPLICITLY_INSTANTIATE_2T ( float  ,
std::complex< double >  ,
dftefe::utils::MemorySpace::HOST   
)

◆ EXPLICITLY_INSTANTIATE_2T() [8/16]

dftefe::linearAlgebra::blasLapack::EXPLICITLY_INSTANTIATE_2T ( float  ,
std::complex< float >  ,
dftefe::utils::MemorySpace::HOST   
)

◆ EXPLICITLY_INSTANTIATE_2T() [9/16]

dftefe::linearAlgebra::blasLapack::EXPLICITLY_INSTANTIATE_2T ( std::complex< double >  ,
double  ,
dftefe::utils::MemorySpace::HOST   
)

◆ EXPLICITLY_INSTANTIATE_2T() [10/16]

dftefe::linearAlgebra::blasLapack::EXPLICITLY_INSTANTIATE_2T ( std::complex< double >  ,
float  ,
dftefe::utils::MemorySpace::HOST   
)

◆ EXPLICITLY_INSTANTIATE_2T() [11/16]

dftefe::linearAlgebra::blasLapack::EXPLICITLY_INSTANTIATE_2T ( std::complex< double >  ,
std::complex< double >  ,
dftefe::utils::MemorySpace::HOST   
)

◆ EXPLICITLY_INSTANTIATE_2T() [12/16]

dftefe::linearAlgebra::blasLapack::EXPLICITLY_INSTANTIATE_2T ( std::complex< double >  ,
std::complex< float >  ,
dftefe::utils::MemorySpace::HOST   
)

◆ EXPLICITLY_INSTANTIATE_2T() [13/16]

dftefe::linearAlgebra::blasLapack::EXPLICITLY_INSTANTIATE_2T ( std::complex< float >  ,
double  ,
dftefe::utils::MemorySpace::HOST   
)

◆ EXPLICITLY_INSTANTIATE_2T() [14/16]

dftefe::linearAlgebra::blasLapack::EXPLICITLY_INSTANTIATE_2T ( std::complex< float >  ,
float  ,
dftefe::utils::MemorySpace::HOST   
)

◆ EXPLICITLY_INSTANTIATE_2T() [15/16]

dftefe::linearAlgebra::blasLapack::EXPLICITLY_INSTANTIATE_2T ( std::complex< float >  ,
std::complex< double >  ,
dftefe::utils::MemorySpace::HOST   
)

◆ EXPLICITLY_INSTANTIATE_2T() [16/16]

dftefe::linearAlgebra::blasLapack::EXPLICITLY_INSTANTIATE_2T ( std::complex< float >  ,
std::complex< float >  ,
dftefe::utils::MemorySpace::HOST   
)

◆ EXPLICITLY_INSTANTIATE_COPY_1T() [1/4]

dftefe::linearAlgebra::blasLapack::EXPLICITLY_INSTANTIATE_COPY_1T ( double  ,
dftefe::utils::MemorySpace::HOST   
)

◆ EXPLICITLY_INSTANTIATE_COPY_1T() [2/4]

dftefe::linearAlgebra::blasLapack::EXPLICITLY_INSTANTIATE_COPY_1T ( float  ,
dftefe::utils::MemorySpace::HOST   
)

◆ EXPLICITLY_INSTANTIATE_COPY_1T() [3/4]

dftefe::linearAlgebra::blasLapack::EXPLICITLY_INSTANTIATE_COPY_1T ( std::complex< double >  ,
dftefe::utils::MemorySpace::HOST   
)

◆ EXPLICITLY_INSTANTIATE_COPY_1T() [4/4]

dftefe::linearAlgebra::blasLapack::EXPLICITLY_INSTANTIATE_COPY_1T ( std::complex< float >  ,
dftefe::utils::MemorySpace::HOST   
)

◆ EXPLICITLY_INSTANTIATE_COPY_2T() [1/4]

dftefe::linearAlgebra::blasLapack::EXPLICITLY_INSTANTIATE_COPY_2T ( double  ,
double  ,
dftefe::utils::MemorySpace::HOST   
)

◆ EXPLICITLY_INSTANTIATE_COPY_2T() [2/4]

dftefe::linearAlgebra::blasLapack::EXPLICITLY_INSTANTIATE_COPY_2T ( float  ,
float  ,
dftefe::utils::MemorySpace::HOST   
)

◆ EXPLICITLY_INSTANTIATE_COPY_2T() [3/4]

dftefe::linearAlgebra::blasLapack::EXPLICITLY_INSTANTIATE_COPY_2T ( std::complex< double >  ,
std::complex< double >  ,
dftefe::utils::MemorySpace::HOST   
)

◆ EXPLICITLY_INSTANTIATE_COPY_2T() [4/4]

dftefe::linearAlgebra::blasLapack::EXPLICITLY_INSTANTIATE_COPY_2T ( std::complex< float >  ,
std::complex< float >  ,
dftefe::utils::MemorySpace::HOST   
)

◆ gemm()

template<typename ValueType1 , typename ValueType2 , dftefe::utils::MemorySpace memorySpace>
void dftefe::linearAlgebra::blasLapack::gemm ( const char &  transA,
const char &  transB,
const size_type  m,
const size_type  n,
const size_type  k,
const scalar_type< ValueType1, ValueType2 >  alpha,
ValueType1 const *  dA,
const size_type  ldda,
ValueType2 const *  dB,
const size_type  lddb,
const scalar_type< ValueType1, ValueType2 >  beta,
scalar_type< ValueType1, ValueType2 > *  dC,
const size_type  lddc,
LinAlgOpContext< memorySpace > &  context 
)
Here is the caller graph for this function:

◆ gemmStridedVarBatched()

template<typename ValueType1 , typename ValueType2 , dftefe::utils::MemorySpace memorySpace>
void dftefe::linearAlgebra::blasLapack::gemmStridedVarBatched ( const size_type  numMats,
const char *  transA,
const char *  transB,
const size_type stridea,
const size_type strideb,
const size_type stridec,
const size_type m,
const size_type n,
const size_type k,
const scalar_type< ValueType1, ValueType2 >  alpha,
const ValueType1 *  dA,
const size_type ldda,
const ValueType2 *  dB,
const size_type lddb,
const scalar_type< ValueType1, ValueType2 >  beta,
scalar_type< ValueType1, ValueType2 > *  dC,
const size_type lddc,
LinAlgOpContext< memorySpace > &  context 
)
Here is the caller graph for this function:

◆ gesv() [1/2]

template<typename ValueType >
LapackError dftefe::linearAlgebra::blasLapack::gesv ( size_type  n,
size_type  nrhs,
ValueType *  A,
size_type  lda,
ValueType *  B,
size_type  ldb,
LinAlgOpContext< dftefe::utils::MemorySpace::DEVICE > &  context 
)
Here is the call graph for this function:

◆ gesv() [2/2]

template<typename ValueType , typename dftefe::utils::MemorySpace memorySpace>
LapackError dftefe::linearAlgebra::blasLapack::gesv ( size_type  n,
size_type  nrhs,
ValueType *  A,
size_type  lda,
ValueType *  B,
size_type  ldb,
LinAlgOpContext< memorySpace > &  context 
)
Here is the call graph for this function:

◆ hadamardProduct() [1/2]

template<typename ValueType1 , typename ValueType2 , typename dftefe::utils::MemorySpace memorySpace>
void dftefe::linearAlgebra::blasLapack::hadamardProduct ( size_type  n,
const ValueType1 *  x,
const ValueType2 *  y,
const ScalarOp opx,
const ScalarOp opy,
scalar_type< ValueType1, ValueType2 > *  z,
LinAlgOpContext< memorySpace > &  context 
)
Here is the call graph for this function:

◆ hadamardProduct() [2/2]

template<typename ValueType1 , typename ValueType2 , typename dftefe::utils::MemorySpace memorySpace>
void dftefe::linearAlgebra::blasLapack::hadamardProduct ( size_type  n,
const ValueType1 *  x,
const ValueType2 *  y,
scalar_type< ValueType1, ValueType2 > *  z,
LinAlgOpContext< memorySpace > &  context 
)

Template for performing \( z = \alpha x$ @param[in] size size of the array @param[in] \) alpha \( scalar @param[in] x array @param[out] z array */ template <typename ValueType1, typename ValueType2, typename dftefe::utils::MemorySpace memorySpace> void ascale(size_type n, ValueType1 alpha, const ValueType2 * x, scalar_type<ValueType1, ValueType2> *z, LinAlgOpContext<memorySpace> & context); /** @brief Template for performing \) z_i = x_i * y_i$.

Parameters
[in]nsize of the array
[in]xarray
[in]yarray
[out]zarray
Here is the call graph for this function:
Here is the caller graph for this function:

◆ heevd() [1/2]

template<typename ValueType >
LapackError dftefe::linearAlgebra::blasLapack::heevd ( const char  jobz,
const char  uplo,
size_type  n,
ValueType *  A,
size_type  lda,
real_type< ValueType > *  W,
LinAlgOpContext< dftefe::utils::MemorySpace::DEVICE > &  context 
)
Here is the call graph for this function:

◆ heevd() [2/2]

template<typename ValueType , typename dftefe::utils::MemorySpace memorySpace>
LapackError dftefe::linearAlgebra::blasLapack::heevd ( const char  jobz,
const char  uplo,
size_type  n,
ValueType *  A,
size_type  lda,
real_type< ValueType > *  W,
LinAlgOpContext< memorySpace > &  context 
)
Here is the call graph for this function:

◆ hegv() [1/2]

template<typename ValueType >
LapackError dftefe::linearAlgebra::blasLapack::hegv ( size_type  itype,
const char  jobz,
const char  uplo,
size_type  n,
ValueType *  A,
size_type  lda,
ValueType *  B,
size_type  ldb,
real_type< ValueType > *  W,
LinAlgOpContext< dftefe::utils::MemorySpace::DEVICE > &  context 
)
Here is the call graph for this function:

◆ hegv() [2/2]

template<typename ValueType , typename dftefe::utils::MemorySpace memorySpace>
LapackError dftefe::linearAlgebra::blasLapack::hegv ( size_type  itype,
const char  jobz,
const char  uplo,
size_type  n,
ValueType *  A,
size_type  lda,
ValueType *  B,
size_type  ldb,
real_type< ValueType > *  W,
LinAlgOpContext< memorySpace > &  context 
)
Here is the call graph for this function:

◆ inverse() [1/2]

template<typename ValueType >
LapackError dftefe::linearAlgebra::blasLapack::inverse ( size_type  n,
ValueType *  A,
LinAlgOpContext< dftefe::utils::MemorySpace::DEVICE > &  context 
)
Here is the call graph for this function:

◆ inverse() [2/2]

template<typename ValueType , typename dftefe::utils::MemorySpace memorySpace>
LapackError dftefe::linearAlgebra::blasLapack::inverse ( size_type  n,
ValueType *  A,
LinAlgOpContext< memorySpace > &  context 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ khatriRaoProduct()

template<typename ValueType1 , typename ValueType2 , typename dftefe::utils::MemorySpace memorySpace>
void dftefe::linearAlgebra::blasLapack::khatriRaoProduct ( const Layout  layout,
const size_type  sizeI,
const size_type  sizeJ,
const size_type  sizeK,
const ValueType1 *  A,
const ValueType2 *  B,
scalar_type< ValueType1, ValueType2 > *  Z,
LinAlgOpContext< memorySpace > &  context 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ nrm2()

template<typename ValueType , dftefe::utils::MemorySpace memorySpace>
real_type< ValueType > dftefe::linearAlgebra::blasLapack::nrm2 ( const size_type  n,
ValueType const *  x,
const size_type  incx,
LinAlgOpContext< memorySpace > &  context 
)
Here is the call graph for this function:

◆ nrms2MultiVector()

template<typename ValueType , dftefe::utils::MemorySpace memorySpace>
std::vector< double > dftefe::linearAlgebra::blasLapack::nrms2MultiVector ( const size_type  vecSize,
const size_type  numVec,
const ValueType *  multiVecData,
LinAlgOpContext< memorySpace > &  context 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ potrf() [1/2]

template<typename ValueType >
LapackError dftefe::linearAlgebra::blasLapack::potrf ( const char  uplo,
size_type  n,
ValueType *  A,
size_type  lda,
LinAlgOpContext< dftefe::utils::MemorySpace::DEVICE > &  context 
)
Here is the call graph for this function:

◆ potrf() [2/2]

template<typename ValueType , typename dftefe::utils::MemorySpace memorySpace>
LapackError dftefe::linearAlgebra::blasLapack::potrf ( const char  uplo,
size_type  n,
ValueType *  A,
size_type  lda,
LinAlgOpContext< memorySpace > &  context 
)
Here is the call graph for this function:

◆ reciprocalX()

template<typename ValueType1 , typename ValueType2 , typename dftefe::utils::MemorySpace memorySpace>
void dftefe::linearAlgebra::blasLapack::KernelsTwoValueTypes< ValueType1, ValueType2, memorySpace >::reciprocalX ( size_type  n,
const ValueType1  alpha,
ValueType2 const *  x,
scalar_type< ValueType1, ValueType2 > *  y,
LinAlgOpContext< memorySpace > &  context 
)

Template for computing the multiplicative inverse of all the elements of x, does not check if any element is zero computes \f $ y[i] = \frac{alpha}{x[i]} $ \f.

Parameters
[in]nsize of each vector
[in]alphascalr input for the numerator
[in]xinput vector
[out]youtput vector
[in]contextBlas context for GPU operations
Returns
norms of all the vectors
Here is the caller graph for this function:

◆ scaleStridedVarBatched()

template<typename ValueType1 , typename ValueType2 , dftefe::utils::MemorySpace memorySpace>
void dftefe::linearAlgebra::blasLapack::scaleStridedVarBatched ( const size_type  numMats,
const Layout  layout,
const ScalarOp scalarOpA,
const ScalarOp scalarOpB,
const size_type stridea,
const size_type strideb,
const size_type stridec,
const size_type m,
const size_type n,
const size_type k,
const ValueType1 *  dA,
const ValueType2 *  dB,
scalar_type< ValueType1, ValueType2 > *  dC,
LinAlgOpContext< memorySpace > &  context 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ steqr() [1/2]

template<typename ValueType >
LapackError dftefe::linearAlgebra::blasLapack::steqr ( const char  jobz,
size_type  n,
real_type< ValueType > *  D,
real_type< ValueType > *  E,
ValueType *  Z,
size_type  ldz,
LinAlgOpContext< dftefe::utils::MemorySpace::DEVICE > &  context 
)
Here is the call graph for this function:

◆ steqr() [2/2]

template<typename ValueType , typename dftefe::utils::MemorySpace memorySpace>
LapackError dftefe::linearAlgebra::blasLapack::steqr ( const char  jobz,
size_type  n,
real_type< ValueType > *  D,
real_type< ValueType > *  E,
ValueType *  Z,
size_type  ldz,
LinAlgOpContext< memorySpace > &  context 
)
Here is the call graph for this function:

◆ stridedBlockCopy()

template<typename ValueType1 , typename ValueType2 , typename dftefe::utils::MemorySpace memorySpace>
void dftefe::linearAlgebra::blasLapack::stridedBlockCopy ( const size_type  vecSize,
const size_type  numVec,
const size_type  srcLeadingDim,
const size_type  srcBlockStartId,
const size_type  dstLeadingDim,
const size_type  dstBlockStartId,
const ValueType1 *  copyFromVec,
ValueType2 *  copyToVec,
LinAlgOpContext< memorySpace > &  context 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ transposedKhatriRaoProduct()

template<typename ValueType1 , typename ValueType2 , typename dftefe::utils::MemorySpace memorySpace>
void dftefe::linearAlgebra::blasLapack::transposedKhatriRaoProduct ( const Layout  layout,
const size_type  sizeI,
const size_type  sizeJ,
const size_type  sizeK,
const ValueType1 *  A,
const ValueType2 *  B,
scalar_type< ValueType1, ValueType2 > *  Z,
LinAlgOpContext< memorySpace > &  context 
)

◆ trtri() [1/2]

template<typename ValueType >
LapackError dftefe::linearAlgebra::blasLapack::trtri ( const char  uplo,
const char  diag,
size_type  n,
ValueType *  A,
size_type  lda,
LinAlgOpContext< dftefe::utils::MemorySpace::DEVICE > &  context 
)
Here is the call graph for this function:

◆ trtri() [2/2]

template<typename ValueType , typename dftefe::utils::MemorySpace memorySpace>
LapackError dftefe::linearAlgebra::blasLapack::trtri ( const char  uplo,
const char  diag,
size_type  n,
ValueType *  A,
size_type  lda,
LinAlgOpContext< memorySpace > &  context 
)
Here is the call graph for this function:

◆ varBatchedStridedBlockCopy()

template<typename ValueType1 , typename ValueType2 , typename dftefe::utils::MemorySpace memorySpace>
void dftefe::linearAlgebra::blasLapack::varBatchedStridedBlockCopy ( const size_type  numBatch,
const size_type strideSrc,
const size_type strideDst,
const size_type vecSizeArr,
const size_type numVecArr,
const size_type srcLeadingDimArr,
const size_type srcBlockStartIdArr,
const size_type dstLeadingDimArr,
const size_type dstBlockStartIdArr,
const ValueType1 *  copyFromVec,
ValueType2 *  copyToVec,
LinAlgOpContext< memorySpace > &  context 
)
Here is the call graph for this function:
Here is the caller graph for this function: