DFT-EFE
 
Loading...
Searching...
No Matches
BlasLapack.t.cpp File Reference
#include <utils/Exceptions.h>
#include <utils/MemorySpaceType.h>
#include <linearAlgebra/BlasLapackKernels.h>
#include <type_traits>
#include <utils/MemoryStorage.h>
Include dependency graph for BlasLapack.t.cpp:
This graph shows which files directly or indirectly include this file:

Namespaces

namespace  dftefe
 dealii includes
 
namespace  dftefe::linearAlgebra
 
namespace  dftefe::linearAlgebra::blasLapack
 

Functions

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)
 
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)
 
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. More...
 
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)
 
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. More...
 
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)
 
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$. More...
 
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)
 
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)
 
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)
 
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)
 
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)
 
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)
 
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)
 
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)
 
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)
 
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)
 
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)
 
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)
 
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)
 
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)
 
template<typename ValueType , typename dftefe::utils::MemorySpace memorySpace>
LapackError dftefe::linearAlgebra::blasLapack::inverse (size_type n, ValueType *A, LinAlgOpContext< memorySpace > &context)
 
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)
 
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)
 
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)
 
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)
 
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)
 
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)
 
template<typename ValueType >
LapackError dftefe::linearAlgebra::blasLapack::inverse (size_type n, ValueType *A, LinAlgOpContext< dftefe::utils::MemorySpace::DEVICE > &context)
 
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)
 
template<typename ValueType >
LapackError dftefe::linearAlgebra::blasLapack::potrf (Uplo uplo, size_type n, ValueType *A, size_type lda, LinAlgOpContext< dftefe::utils::MemorySpace::DEVICE > &context)
 
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)
 
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)
 
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)
 
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)