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

Namespaces

namespace  blasLapackKernelsInternal
 

Classes

struct  BlasQueueTypedef
 
struct  BlasQueueTypedef< dftefe::utils::MemorySpace::DEVICE >
 
struct  BlasQueueTypedef< dftefe::utils::MemorySpace::HOST >
 
struct  BlasQueueTypedef< dftefe::utils::MemorySpace::HOST_PINNED >
 
class  KernelsOneValueType
 
class  KernelsTwoValueTypes
 namespace class for BlasLapack kernels not present in blaspp. More...
 
struct  LapackQueueTypedef
 
struct  LapackQueueTypedef< dftefe::utils::MemorySpace::DEVICE >
 
struct  LapackQueueTypedef< dftefe::utils::MemorySpace::HOST >
 
struct  LapackQueueTypedef< dftefe::utils::MemorySpace::HOST_PINNED >
 

Typedefs

using Side = blas::Side
 
using Op = blas::Op
 
using Diag = blas::Diag
 
using Uplo = blas::Uplo
 
using Layout = blas::Layout
 
using Job = lapack::Job
 
using LapackInt = int64_t
 
template<typename ValueType >
using real_type = blas::real_type< ValueType >
 
template<typename ValueType1 , typename ValueType2 >
using scalar_type = blas::scalar_type< ValueType1, ValueType2 >
 
template<dftefe::utils::MemorySpace memorySpace>
using BlasQueue = typename BlasQueueTypedef< memorySpace >::TYPE
 
template<dftefe::utils::MemorySpace memorySpace>
using LapackQueue = typename LapackQueueTypedef< memorySpace >::LAPACKTYPE
 

Enumerations

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 (size_type vecSize, 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 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 > *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 , 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 , dftefe::utils::MemorySpace memorySpace>
void gemm (const Layout layout, const Op transA, const Op 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 >
void gemm (const Layout layout, const Op transA, const Op 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< dftefe::utils::MemorySpace::DEVICE > &context)
 
template<typename ValueType1 , typename ValueType2 , dftefe::utils::MemorySpace memorySpace>
void gemmStridedVarBatched (const Layout layout, const size_type numMats, const Op *transA, const Op *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 ValueType1 , typename ValueType2 >
void gemmStridedVarBatched (const Layout layout, const size_type numMats, const Op *transA, const Op *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< dftefe::utils::MemorySpace::DEVICE > &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 (Uplo uplo, Diag diag, size_type n, ValueType *A, size_type lda, LinAlgOpContext< memorySpace > &context)
 
template<typename ValueType , typename dftefe::utils::MemorySpace memorySpace>
LapackError potrf (Uplo uplo, size_type n, ValueType *A, size_type lda, LinAlgOpContext< memorySpace > &context)
 
template<typename ValueType , typename dftefe::utils::MemorySpace memorySpace>
LapackError steqr (Job 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 (Job jobz, Uplo 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, Job jobz, Uplo 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, LapackInt *ipiv, 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 (Uplo uplo, Diag diag, size_type n, ValueType *A, size_type lda, LinAlgOpContext< dftefe::utils::MemorySpace::DEVICE > &context)
 
template<typename ValueType >
LapackError potrf (Uplo uplo, size_type n, ValueType *A, size_type lda, LinAlgOpContext< dftefe::utils::MemorySpace::DEVICE > &context)
 
template<typename ValueType >
LapackError steqr (Job 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 (Job jobz, Uplo 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, Job jobz, Uplo 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, LapackInt *ipiv, ValueType *B, size_type ldb, LinAlgOpContext< dftefe::utils::MemorySpace::DEVICE > &context)
 
 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

◆ BlasQueue

template<dftefe::utils::MemorySpace memorySpace>
using dftefe::linearAlgebra::blasLapack::BlasQueue = typedef typename BlasQueueTypedef<memorySpace>::TYPE

◆ Diag

◆ Job

using dftefe::linearAlgebra::blasLapack::Job = typedef lapack::Job

◆ LapackInt

◆ LapackQueue

template<dftefe::utils::MemorySpace memorySpace>
using dftefe::linearAlgebra::blasLapack::LapackQueue = typedef typename LapackQueueTypedef<memorySpace>::LAPACKTYPE

◆ Layout

using dftefe::linearAlgebra::blasLapack::Layout = typedef blas::Layout

◆ Op

using dftefe::linearAlgebra::blasLapack::Op = typedef blas::Op

◆ real_type

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

◆ scalar_type

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

◆ Side

using dftefe::linearAlgebra::blasLapack::Side = typedef blas::Side

◆ Uplo

Enumeration Type Documentation

◆ 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 call graph for this function:

◆ amaxsMultiVector()

template<typename ValueType , typename dftefe::utils::MemorySpace memorySpace>
std::vector< double > dftefe::linearAlgebra::blasLapack::amaxsMultiVector ( size_type  vecSize,
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 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 
)
Here is the call graph for this function:

◆ 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 > *  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:

◆ 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 
)

◆ 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 
)
Here is the call graph for this function:

◆ 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   
)

◆ gemm() [1/2]

template<typename ValueType1 , typename ValueType2 >
void dftefe::linearAlgebra::blasLapack::gemm ( const Layout  layout,
const Op  transA,
const Op  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< dftefe::utils::MemorySpace::DEVICE > &  context 
)
Here is the call graph for this function:

◆ gemm() [2/2]

template<typename ValueType1 , typename ValueType2 , dftefe::utils::MemorySpace memorySpace>
void dftefe::linearAlgebra::blasLapack::gemm ( const Layout  layout,
const Op  transA,
const Op  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() [1/2]

template<typename ValueType1 , typename ValueType2 >
void dftefe::linearAlgebra::blasLapack::gemmStridedVarBatched ( const Layout  layout,
const size_type  numMats,
const Op transA,
const Op 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< dftefe::utils::MemorySpace::DEVICE > &  context 
)
Here is the call graph for this function:

◆ gemmStridedVarBatched() [2/2]

template<typename ValueType1 , typename ValueType2 , dftefe::utils::MemorySpace memorySpace>
void dftefe::linearAlgebra::blasLapack::gemmStridedVarBatched ( const Layout  layout,
const size_type  numMats,
const Op transA,
const Op 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,
LapackInt ipiv,
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,
LapackInt ipiv,
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 ( Job  jobz,
Uplo  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 ( Job  jobz,
Uplo  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,
Job  jobz,
Uplo  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,
Job  jobz,
Uplo  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:

◆ 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 ( Uplo  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 ( Uplo  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::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 call graph for this function:
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 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 ( Job  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 ( Job  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:

◆ 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 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ trtri() [1/2]

template<typename ValueType >
LapackError dftefe::linearAlgebra::blasLapack::trtri ( Uplo  uplo,
Diag  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 ( Uplo  uplo,
Diag  diag,
size_type  n,
ValueType *  A,
size_type  lda,
LinAlgOpContext< memorySpace > &  context 
)
Here is the call graph for this function: