26#ifndef dftefeBlasWrappers_h 
   27#define dftefeBlasWrappers_h 
   37  namespace linearAlgebra
 
   41      template <
typename ValueType,
 
   47           LinAlgOpContext<memorySpace> &context);
 
   49      template <
typename ValueType,
 
   55           LinAlgOpContext<memorySpace> &context);
 
   66      template <
typename ValueType,
 
   71                       ValueType 
const *             multiVecData,
 
   72                       LinAlgOpContext<memorySpace> &context);
 
   75      template <
typename ValueType1,
 
   80           scalar_type<ValueType1, ValueType2> alpha,
 
   85           LinAlgOpContext<memorySpace> &      context);
 
   99      template <
typename ValueType1,
 
  104                  const ValueType1                     alpha,
 
  105                  ValueType2 
const *                   x,
 
  106                  scalar_type<ValueType1, ValueType2> *y,
 
  107                  LinAlgOpContext<memorySpace> &       context);
 
  117      template <
typename ValueType1,
 
  123             const ValueType2 *                   x,
 
  124             scalar_type<ValueType1, ValueType2> *z,
 
  125             LinAlgOpContext<memorySpace> &       context);
 
  135      template <
typename ValueType1,
 
  140                      const ValueType1 *                   x,
 
  141                      const ValueType2 *                   y,
 
  142                      scalar_type<ValueType1, ValueType2> *z,
 
  143                      LinAlgOpContext<memorySpace> &       context);
 
  180      template <
typename ValueType1,
 
  185                      const ValueType1 *                   x,
 
  186                      const ValueType2 *                   y,
 
  189                      scalar_type<ValueType1, ValueType2> *z,
 
  190                      LinAlgOpContext<memorySpace> &       context);
 
  217      template <
typename ValueType1,
 
  231                             const ValueType1 *                   dA,
 
  232                             const ValueType2 *                   dB,
 
  233                             scalar_type<ValueType1, ValueType2> *dC,
 
  234                             LinAlgOpContext<memorySpace> &       context);
 
  258      template <
typename ValueType1,
 
  266                       const ValueType1 *                   A,
 
  267                       const ValueType2 *                   B,
 
  268                       scalar_type<ValueType1, ValueType2> *Z,
 
  269                       LinAlgOpContext<memorySpace> &       context);
 
  294      template <
typename ValueType1,
 
  302                                 const ValueType1 *                   A,
 
  303                                 const ValueType2 *                   B,
 
  304                                 scalar_type<ValueType1, ValueType2> *Z,
 
  305                                 LinAlgOpContext<memorySpace> &       context);
 
  317      template <
typename ValueType1,
 
  322            scalar_type<ValueType1, ValueType2>  alpha,
 
  323            ValueType1 
const *                   x,
 
  324            scalar_type<ValueType1, ValueType2>  beta,
 
  325            const ValueType2 *                   y,
 
  326            scalar_type<ValueType1, ValueType2> *z,
 
  327            LinAlgOpContext<memorySpace> &       context);
 
  338      template <
typename ValueType1,
 
  344                   const scalar_type<ValueType1, ValueType2>  alpha1,
 
  345                   const scalar_type<ValueType1, ValueType2> *alpha,
 
  346                   const ValueType1 *                         x,
 
  347                   const scalar_type<ValueType1, ValueType2>  beta1,
 
  348                   const scalar_type<ValueType1, ValueType2> *beta,
 
  349                   const ValueType2 *                         y,
 
  350                   scalar_type<ValueType1, ValueType2> *      z,
 
  351                   LinAlgOpContext<memorySpace> &             context);
 
  354      template <
typename ValueType1,
 
  357      scalar_type<ValueType1, ValueType2>
 
  359          ValueType1 
const *            x,
 
  361          ValueType2 
const *            y,
 
  363          LinAlgOpContext<memorySpace> &context);
 
  383      template <
typename ValueType1,
 
  389                     const ValueType1 *                   multiVecDataX,
 
  390                     const ValueType2 *                   multiVecDataY,
 
  393                     scalar_type<ValueType1, ValueType2> *multiVecDotProduct,
 
  394                     LinAlgOpContext<memorySpace> &       context);
 
  397      template <
typename ValueType,
 
  403           LinAlgOpContext<memorySpace> &context);
 
  414      template <
typename ValueType,
 
  419                       ValueType 
const *             multiVecData,
 
  420                       LinAlgOpContext<memorySpace> &context);
 
  422      template <
typename ValueType1,
 
  426      gemm(
const char &                              transA,
 
  431           const scalar_type<ValueType1, ValueType2> alpha,
 
  432           ValueType1 
const *                        dA,
 
  434           ValueType2 
const *                        dB,
 
  436           const scalar_type<ValueType1, ValueType2> beta,
 
  437           scalar_type<ValueType1, ValueType2> *     dC,
 
  439           LinAlgOpContext<memorySpace> &            context);
 
  447      template <
typename ValueType1,
 
  460                            scalar_type<ValueType1, ValueType2>  alpha,
 
  461                            const ValueType1 *                   dA,
 
  463                            const ValueType2 *                   dB,
 
  465                            scalar_type<ValueType1, ValueType2>  beta,
 
  466                            scalar_type<ValueType1, ValueType2> *dC,
 
  468                            LinAlgOpContext<memorySpace> &       context);
 
  474      template <
typename ValueType,
 
  482      template <
typename ValueType,
 
  485      trtri(
const char                    uplo,
 
  490            LinAlgOpContext<memorySpace> &context);
 
  495      template <
typename ValueType,
 
  498      potrf(
const char                    uplo,
 
  502            LinAlgOpContext<memorySpace> &context);
 
  507      template <
typename ValueType,
 
  510      steqr(
const char                    jobz,
 
  512            real_type<ValueType> *        D,
 
  513            real_type<ValueType> *        E,
 
  516            LinAlgOpContext<memorySpace> &context);
 
  521      template <
typename ValueType,
 
  524      heevd(
const char                    jobz,
 
  529            real_type<ValueType> *        W,
 
  530            LinAlgOpContext<memorySpace> &context);
 
  535      template <
typename ValueType,
 
  546           real_type<ValueType> *        W,
 
  547           LinAlgOpContext<memorySpace> &context);
 
  553      template <
typename ValueType,
 
  562           LinAlgOpContext<memorySpace> &context);
 
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)
Definition: BlasLapack.t.cpp:210
real_type< ValueType > amax(size_type n, ValueType const *x, size_type incx, LinAlgOpContext< memorySpace > &context)
Definition: BlasLapack.t.cpp:28
LapackError gesv(size_type n, size_type nrhs, ValueType *A, size_type lda, ValueType *B, size_type ldb, LinAlgOpContext< memorySpace > &context)
Definition: BlasLapack.t.cpp:636
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)
Definition: BlasLapack.t.cpp:281
void hadamardProduct(size_type n, const ValueType1 *x, const ValueType2 *y, scalar_type< ValueType1, ValueType2 > *z, LinAlgOpContext< memorySpace > &context)
Template for performing  alpha  z_i = x_i * y_i$.
Definition: BlasLapack.t.cpp:108
void axpy(size_type n, scalar_type< ValueType1, ValueType2 > alpha, ValueType1 const *x, size_type incx, ValueType2 *y, size_type incy, LinAlgOpContext< memorySpace > &context)
Definition: BlasLapack.t.cpp:59
std::vector< double > amaxsMultiVector(size_type vecSize, size_type numVec, ValueType const *multiVecData, LinAlgOpContext< memorySpace > &context)
Template for computing  norms of all the numVec vectors in a multi Vector.
Definition: BlasLapack.t.cpp:41
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)
Definition: BlasLapack.t.cpp:193
Layout
Definition: BlasLapackTypedef.h:161
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)
Definition: BlasLapack.t.cpp:391
real_type< ValueType > nrm2(const size_type n, ValueType const *x, const size_type incx, LinAlgOpContext< memorySpace > &context)
Definition: BlasLapack.t.cpp:304
LapackError potrf(const char uplo, size_type n, ValueType *A, size_type lda, LinAlgOpContext< memorySpace > &context)
Definition: BlasLapack.t.cpp:522
std::vector< double > nrms2MultiVector(const size_type vecSize, const size_type numVec, const ValueType *multiVecData, LinAlgOpContext< memorySpace > &context)
Definition: BlasLapack.t.cpp:318
real_type< ValueType > asum(size_type n, ValueType const *x, size_type incx, LinAlgOpContext< memorySpace > &context)
Definition: BlasLapack.t.cpp:16
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)
Definition: BlasLapack.t.cpp:604
LapackError trtri(const char uplo, const char diag, size_type n, ValueType *A, size_type lda, LinAlgOpContext< memorySpace > &context)
Definition: BlasLapack.t.cpp:495
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)
Definition: BlasLapack.t.cpp:228
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)
Definition: BlasLapack.t.cpp:264
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)
Definition: BlasLapack.t.cpp:157
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 ele...
Definition: BlasLapack.t.cpp:78
ScalarOp
Definition: BlasLapackTypedef.h:169
LapackError steqr(const char jobz, size_type n, real_type< ValueType > *D, real_type< ValueType > *E, ValueType *Z, size_type ldz, LinAlgOpContext< memorySpace > &context)
Definition: BlasLapack.t.cpp:548
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)
Definition: BlasLapack.t.cpp:332
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)
Definition: BlasLapack.t.cpp:244
LapackError inverse(size_type n, ValueType *A, LinAlgOpContext< memorySpace > &context)
Definition: BlasLapack.t.cpp:469
LapackError heevd(const char jobz, const char uplo, size_type n, ValueType *A, size_type lda, real_type< ValueType > *W, LinAlgOpContext< memorySpace > &context)
Definition: BlasLapack.t.cpp:576
void ascale(const size_type n, const ValueType1 alpha, const ValueType2 *x, scalar_type< ValueType1, ValueType2 > *z, LinAlgOpContext< memorySpace > &context)
Definition: BlasLapack.t.cpp:92
MemorySpace
Definition: MemorySpaceType.h:37
dealii includes
Definition: AtomFieldDataSpherical.cpp:31
unsigned int size_type
Definition: TypeConfig.h:8