15 #ifdef ETL_EGBLAS_MODE 17 #include "etl/impl/cublas/cuda.hpp" 25 #ifdef EGBLAS_HAS_SAPXDBPY 26 static constexpr
bool has_sapxdbpy =
true;
28 static constexpr
bool has_sapxdbpy =
false;
40 inline void apxdbpy([[maybe_unused]]
size_t n,
41 [[maybe_unused]]
float alpha,
42 [[maybe_unused]]
float* A,
43 [[maybe_unused]]
size_t lda,
44 [[maybe_unused]]
float beta,
45 [[maybe_unused]]
float* B,
46 [[maybe_unused]]
size_t ldb) {
47 #ifdef EGBLAS_HAS_SAPXDBPY 49 egblas_sapxdbpy(n, alpha, A, lda, beta, B, ldb);
51 cpp_unreachable(
"Invalid call to egblas::apxdbpy");
55 #ifdef EGBLAS_HAS_DAPXDBPY 56 static constexpr
bool has_dapxdbpy =
true;
58 static constexpr
bool has_dapxdbpy =
false;
70 inline void apxdbpy([[maybe_unused]]
size_t n,
71 [[maybe_unused]]
double alpha,
72 [[maybe_unused]]
double* A,
73 [[maybe_unused]]
size_t lda,
74 [[maybe_unused]]
double beta,
75 [[maybe_unused]]
double* B,
76 [[maybe_unused]]
size_t ldb) {
77 #ifdef EGBLAS_HAS_DAPXDBPY 79 egblas_dapxdbpy(n, alpha, A, lda, beta, B, ldb);
81 cpp_unreachable(
"Invalid call to egblas::apxdbpy");
85 #ifdef EGBLAS_HAS_CAPXDBPY 86 static constexpr
bool has_capxdbpy =
true;
88 static constexpr
bool has_capxdbpy =
false;
100 inline void apxdbpy([[maybe_unused]]
size_t n,
101 [[maybe_unused]] std::complex<float> alpha,
102 [[maybe_unused]] std::complex<float>* A,
103 [[maybe_unused]]
size_t lda,
104 [[maybe_unused]] std::complex<float> beta,
105 [[maybe_unused]] std::complex<float>* B,
106 [[maybe_unused]]
size_t ldb) {
107 #ifdef EGBLAS_HAS_CAPXDBPY 109 egblas_capxdbpy(n, complex_cast(alpha), reinterpret_cast<cuComplex*>(A), lda, complex_cast(beta), reinterpret_cast<cuComplex*>(B), ldb);
111 cpp_unreachable(
"Invalid call to egblas::apxdbpy");
124 inline void apxdbpy([[maybe_unused]]
size_t n,
127 [[maybe_unused]]
size_t lda,
128 [[maybe_unused]] std::complex<float> beta,
130 [[maybe_unused]]
size_t ldb) {
131 #ifdef EGBLAS_HAS_CAPXDBPY 133 egblas_capxdbpy(n, complex_cast(alpha), reinterpret_cast<cuComplex*>(A), lda, complex_cast(beta), reinterpret_cast<cuComplex*>(B), ldb);
135 cpp_unreachable(
"Invalid call to egblas::apxdbpy");
139 #ifdef EGBLAS_HAS_ZAPXDBPY 140 static constexpr
bool has_zapxdbpy =
true;
142 static constexpr
bool has_zapxdbpy =
false;
154 inline void apxdbpy([[maybe_unused]]
size_t n,
155 [[maybe_unused]] std::complex<double> alpha,
156 [[maybe_unused]] std::complex<double>* A,
157 [[maybe_unused]]
size_t lda,
158 [[maybe_unused]] std::complex<double> beta,
159 [[maybe_unused]] std::complex<double>* B,
160 [[maybe_unused]]
size_t ldb) {
161 #ifdef EGBLAS_HAS_ZAPXDBPY 163 egblas_zapxdbpy(n, complex_cast(alpha), reinterpret_cast<cuDoubleComplex*>(A), lda, complex_cast(beta), reinterpret_cast<cuDoubleComplex*>(B), ldb);
165 cpp_unreachable(
"Invalid call to egblas::apxdbpy");
178 inline void apxdbpy([[maybe_unused]]
size_t n,
181 [[maybe_unused]]
size_t lda,
182 [[maybe_unused]] std::complex<double> beta,
184 [[maybe_unused]]
size_t ldb) {
185 #ifdef EGBLAS_HAS_ZAPXDBPY 187 egblas_zapxdbpy(n, complex_cast(alpha), reinterpret_cast<cuDoubleComplex*>(A), lda, complex_cast(beta), reinterpret_cast<cuDoubleComplex*>(B), ldb);
189 cpp_unreachable(
"Invalid call to egblas::apxdbpy");
Complex number implementation.
Definition: complex.hpp:31
void apxdbpy([[maybe_unused]] size_t n, [[maybe_unused]] float alpha, [[maybe_unused]] float *A, [[maybe_unused]] size_t lda, [[maybe_unused]] float beta, [[maybe_unused]] float *B, [[maybe_unused]] size_t ldb)
Wrappers for single-precision egblas apxdbpy operation.
Definition: apxdbpy.hpp:40
void inc_counter([[maybe_unused]] const char *name)
Increase the given counter.
Definition: counters.hpp:25