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