guanaqo 1.0.0-alpha.27
Utilities for scientific software
Loading...
Searching...
No Matches
blas-interface.hpp
Go to the documentation of this file.
1/// @file
2/// This file provides simple overloaded wrappers around standard BLAS functions.
3/// @ingroup linalg_blas_ll
4
5#pragma once
6
8
9namespace guanaqo::blas {
10
11/// @addtogroup linalg_blas_ll
12/// @{
13
14template <class T, class I>
15void xgemv(CBLAS_LAYOUT Layout, CBLAS_TRANSPOSE TransA, I M, I N,
16 std::type_identity_t<T> alpha, std::type_identity_t<const T *> A,
17 I lda, std::type_identity_t<const T *> X, I incX,
18 std::type_identity_t<T> beta, T *Y, I incY);
19
20template <class T, class I>
21void xgemm(CBLAS_LAYOUT Layout, CBLAS_TRANSPOSE TransA, CBLAS_TRANSPOSE TransB,
22 I M, I N, I K, std::type_identity_t<T> alpha,
23 std::type_identity_t<const T *> A, I lda,
24 std::type_identity_t<const T *> B, I ldb,
25 std::type_identity_t<T> beta, T *C, I ldc);
26
27template <class T, class I>
28void xgemmt(CBLAS_LAYOUT Layout, CBLAS_UPLO uplo, CBLAS_TRANSPOSE TransA,
29 CBLAS_TRANSPOSE TransB, I N, I K, std::type_identity_t<T> alpha,
30 std::type_identity_t<const T *> A, I lda,
31 std::type_identity_t<const T *> B, I ldb,
32 std::type_identity_t<T> beta, T *C, I ldc);
33
34template <class T, class I>
35void xsymv(CBLAS_LAYOUT Layout, CBLAS_UPLO uplo, I N,
36 std::type_identity_t<T> alpha, std::type_identity_t<const T *> A,
37 I lda, std::type_identity_t<const T *> X, I incX,
38 std::type_identity_t<T> beta, T *Y, I incY);
39
40template <class T, class I>
41void xtrmv(CBLAS_LAYOUT Layout, CBLAS_UPLO Uplo, CBLAS_TRANSPOSE TransA,
42 CBLAS_DIAG Diag, I N, std::type_identity_t<const T *> A, I lda, T *X,
43 I incX);
44
45template <class T, class I>
46void xtrsv(CBLAS_LAYOUT Layout, CBLAS_UPLO Uplo, CBLAS_TRANSPOSE TransA,
47 CBLAS_DIAG Diag, I N, std::type_identity_t<const T *> A, I lda, T *X,
48 I incX);
49
50template <class T, class I>
51void xtrmm(CBLAS_LAYOUT Layout, CBLAS_SIDE Side, CBLAS_UPLO Uplo,
52 CBLAS_TRANSPOSE TransA, CBLAS_DIAG Diag, I M, I N,
53 std::type_identity_t<T> alpha, std::type_identity_t<const T *> A,
54 I lda, T *B, I ldb);
55
56template <class T, class I>
57void xsyrk(CBLAS_LAYOUT Layout, CBLAS_UPLO Uplo, CBLAS_TRANSPOSE Trans, I N,
58 I K, std::type_identity_t<T> alpha,
59 std::type_identity_t<const T *> A, I lda,
60 std::type_identity_t<T> beta, T *C, I ldc);
61
62template <class T, class I>
63void xtrsm(CBLAS_LAYOUT Layout, CBLAS_SIDE Side, CBLAS_UPLO Uplo,
64 CBLAS_TRANSPOSE TransA, CBLAS_DIAG Diag, I M, I N,
65 std::type_identity_t<T> alpha, std::type_identity_t<const T *> A,
66 I lda, T *B, I ldb);
67
68template <class T, class I>
69void xsytrf_rk(const char *uplo, const I *n, T *a, const I *lda, T *e, I *ipiv,
70 T *work, const I *lwork, I *info);
71
72template <class T, class I>
73void xtrtrs(const char *uplo, const char *trans, const char *diag, const I *n,
74 const I *nrhs, std::type_identity_t<const T *> A, const I *ldA,
75 T *B, const I *ldB, I *info);
76
77template <class T, class I>
78void xscal(I N, std::type_identity_t<T> alpha, T *X, I incX);
79
80template <class T, class I>
81void xpotrf(const char *uplo, I n, T *a, I lda, I *info);
82
83template <class T, class I>
84void xlauum(const char *uplo, I n, T *a, I lda, I *info);
85
86template <class T, class I>
87void xtrtri(const char *uplo, const char *diag, I n, T *a, I lda, I *info);
88
89template <class T, class I>
90void xgemv_batch_strided(CBLAS_LAYOUT layout, CBLAS_TRANSPOSE trans, I m, I n,
91 std::type_identity_t<T> alpha,
92 std::type_identity_t<const T *> a, I lda, I stridea,
93 std::type_identity_t<const T *> x, I incx, I stridex,
94 std::type_identity_t<T> beta, T *y, I incy, I stridey,
95 I batch_size);
96
97template <class T, class I>
98void xgemm_batch_strided(CBLAS_LAYOUT Layout, CBLAS_TRANSPOSE TransA,
99 CBLAS_TRANSPOSE TransB, I M, I N, I K,
100 std::type_identity_t<T> alpha,
101 std::type_identity_t<const T *> A, I lda, I stridea,
102 std::type_identity_t<const T *> B, I ldb, I strideb,
103 std::type_identity_t<T> beta, T *C, I ldc, I stridec,
104 I batch_size);
105
106template <class T, class I>
107void xsyrk_batch_strided(CBLAS_LAYOUT Layout, CBLAS_UPLO Uplo,
108 CBLAS_TRANSPOSE Trans, I N, I K,
109 std::type_identity_t<T> alpha,
110 std::type_identity_t<const T *> A, I lda, I stridea,
111 std::type_identity_t<T> beta, T *C, I ldc, I stridec,
112 I batch_size);
113
114template <class T, class I>
115void xtrsm_batch_strided(CBLAS_LAYOUT Layout, CBLAS_SIDE Side, CBLAS_UPLO Uplo,
116 CBLAS_TRANSPOSE TransA, CBLAS_DIAG Diag, I M, I N,
117 std::type_identity_t<T> alpha,
118 std::type_identity_t<const T *> A, I lda, I stridea,
119 T *B, I ldb, I strideb, I batch_size);
120
121template <class T, class I>
122void xpotrf_batch_strided(const char *Uplo, I N, T *A, I lda, I stridea,
123 I batch_size);
124
125/// @}
126
127} // namespace guanaqo::blas
void xlauum(const char *uplo, I n, T *a, I lda, I *info)
void xtrsm(CBLAS_LAYOUT Layout, CBLAS_SIDE Side, CBLAS_UPLO Uplo, CBLAS_TRANSPOSE TransA, CBLAS_DIAG Diag, I M, I N, std::type_identity_t< T > alpha, std::type_identity_t< const T * > A, I lda, T *B, I ldb)
void xtrmm(CBLAS_LAYOUT Layout, CBLAS_SIDE Side, CBLAS_UPLO Uplo, CBLAS_TRANSPOSE TransA, CBLAS_DIAG Diag, I M, I N, std::type_identity_t< T > alpha, std::type_identity_t< const T * > A, I lda, T *B, I ldb)
void xpotrf(const char *uplo, I n, T *a, I lda, I *info)
void xsymv(CBLAS_LAYOUT Layout, CBLAS_UPLO uplo, I N, std::type_identity_t< T > alpha, std::type_identity_t< const T * > A, I lda, std::type_identity_t< const T * > X, I incX, std::type_identity_t< T > beta, T *Y, I incY)
void xtrmv(CBLAS_LAYOUT Layout, CBLAS_UPLO Uplo, CBLAS_TRANSPOSE TransA, CBLAS_DIAG Diag, I N, std::type_identity_t< const T * > A, I lda, T *X, I incX)
void xtrtrs(const char *uplo, const char *trans, const char *diag, const I *n, const I *nrhs, std::type_identity_t< const T * > A, const I *ldA, T *B, const I *ldB, I *info)
void xpotrf_batch_strided(const char *Uplo, I N, T *A, I lda, I stridea, I batch_size)
void xsyrk_batch_strided(CBLAS_LAYOUT Layout, CBLAS_UPLO Uplo, CBLAS_TRANSPOSE Trans, I N, I K, std::type_identity_t< T > alpha, std::type_identity_t< const T * > A, I lda, I stridea, std::type_identity_t< T > beta, T *C, I ldc, I stridec, I batch_size)
void xtrsm_batch_strided(CBLAS_LAYOUT Layout, CBLAS_SIDE Side, CBLAS_UPLO Uplo, CBLAS_TRANSPOSE TransA, CBLAS_DIAG Diag, I M, I N, std::type_identity_t< T > alpha, std::type_identity_t< const T * > A, I lda, I stridea, T *B, I ldb, I strideb, I batch_size)
void xtrsv(CBLAS_LAYOUT Layout, CBLAS_UPLO Uplo, CBLAS_TRANSPOSE TransA, CBLAS_DIAG Diag, I N, std::type_identity_t< const T * > A, I lda, T *X, I incX)
void xgemv_batch_strided(CBLAS_LAYOUT layout, CBLAS_TRANSPOSE trans, I m, I n, std::type_identity_t< T > alpha, std::type_identity_t< const T * > a, I lda, I stridea, std::type_identity_t< const T * > x, I incx, I stridex, std::type_identity_t< T > beta, T *y, I incy, I stridey, I batch_size)
void xscal(I N, std::type_identity_t< T > alpha, T *X, I incX)
void xgemmt(CBLAS_LAYOUT Layout, CBLAS_UPLO uplo, CBLAS_TRANSPOSE TransA, CBLAS_TRANSPOSE TransB, I N, I K, std::type_identity_t< T > alpha, std::type_identity_t< const T * > A, I lda, std::type_identity_t< const T * > B, I ldb, std::type_identity_t< T > beta, T *C, I ldc)
void xsyrk(CBLAS_LAYOUT Layout, CBLAS_UPLO Uplo, CBLAS_TRANSPOSE Trans, I N, I K, std::type_identity_t< T > alpha, std::type_identity_t< const T * > A, I lda, std::type_identity_t< T > beta, T *C, I ldc)
void xsytrf_rk(const char *uplo, const I *n, T *a, const I *lda, T *e, I *ipiv, T *work, const I *lwork, I *info)
void xgemm(CBLAS_LAYOUT Layout, CBLAS_TRANSPOSE TransA, CBLAS_TRANSPOSE TransB, I M, I N, I K, std::type_identity_t< T > alpha, std::type_identity_t< const T * > A, I lda, std::type_identity_t< const T * > B, I ldb, std::type_identity_t< T > beta, T *C, I ldc)
void xgemv(CBLAS_LAYOUT Layout, CBLAS_TRANSPOSE TransA, I M, I N, std::type_identity_t< T > alpha, std::type_identity_t< const T * > A, I lda, std::type_identity_t< const T * > X, I incX, std::type_identity_t< T > beta, T *Y, I incY)
void xgemm_batch_strided(CBLAS_LAYOUT Layout, CBLAS_TRANSPOSE TransA, CBLAS_TRANSPOSE TransB, I M, I N, I K, std::type_identity_t< T > alpha, std::type_identity_t< const T * > A, I lda, I stridea, std::type_identity_t< const T * > B, I ldb, I strideb, std::type_identity_t< T > beta, T *C, I ldc, I stridec, I batch_size)
void xtrtri(const char *uplo, const char *diag, I n, T *a, I lda, I *info)