15 #ifdef ETL_EGBLAS_MODE 17 #include "etl/impl/cublas/cuda.hpp" 28 #ifdef EGBLAS_HAS_SMIN 29 static constexpr
bool has_smin =
true;
31 static constexpr
bool has_smin =
false;
43 inline void min([[maybe_unused]]
size_t n,
44 [[maybe_unused]]
float alpha,
45 [[maybe_unused]]
float* A,
46 [[maybe_unused]]
size_t lda,
47 [[maybe_unused]]
float* B,
48 [[maybe_unused]]
size_t ldb) {
49 #ifdef EGBLAS_HAS_SMIN 51 egblas_smin(n, alpha, A, lda, B, ldb);
53 cpp_unreachable(
"Invalid call to egblas::min");
60 #ifdef EGBLAS_HAS_DMIN 61 static constexpr
bool has_dmin =
true;
63 static constexpr
bool has_dmin =
false;
75 inline void min([[maybe_unused]]
size_t n,
76 [[maybe_unused]]
double alpha,
77 [[maybe_unused]]
double* A,
78 [[maybe_unused]]
size_t lda,
79 [[maybe_unused]]
double* B,
80 [[maybe_unused]]
size_t ldb) {
81 #ifdef EGBLAS_HAS_DMIN 83 egblas_dmin(n, alpha, A, lda, B, ldb);
85 cpp_unreachable(
"Invalid call to egblas::min");
92 #ifdef EGBLAS_HAS_CMIN 93 static constexpr
bool has_cmin =
true;
95 static constexpr
bool has_cmin =
false;
107 inline void min([[maybe_unused]]
size_t n,
108 [[maybe_unused]] std::complex<float> alpha,
109 [[maybe_unused]] std::complex<float>* A,
110 [[maybe_unused]]
size_t lda,
111 [[maybe_unused]] std::complex<float>* B,
112 [[maybe_unused]]
size_t ldb) {
113 #ifdef EGBLAS_HAS_CMIN 115 egblas_cmin(n, complex_cast(alpha), reinterpret_cast<cuComplex*>(A), lda, reinterpret_cast<cuComplex*>(B), ldb);
117 cpp_unreachable(
"Invalid call to egblas::min");
130 inline void min([[maybe_unused]]
size_t n,
133 [[maybe_unused]]
size_t lda,
135 [[maybe_unused]]
size_t ldb) {
136 #ifdef EGBLAS_HAS_CMIN 138 egblas_cmin(n, complex_cast(alpha), reinterpret_cast<cuComplex*>(A), lda, reinterpret_cast<cuComplex*>(B), ldb);
140 cpp_unreachable(
"Invalid call to egblas::min");
147 #ifdef EGBLAS_HAS_ZMIN 148 static constexpr
bool has_zmin =
true;
150 static constexpr
bool has_zmin =
false;
162 inline void min([[maybe_unused]]
size_t n,
163 [[maybe_unused]] std::complex<double> alpha,
164 [[maybe_unused]] std::complex<double>* A,
165 [[maybe_unused]]
size_t lda,
166 [[maybe_unused]] std::complex<double>* B,
167 [[maybe_unused]]
size_t ldb) {
168 #ifdef EGBLAS_HAS_ZMIN 170 egblas_zmin(n, complex_cast(alpha), reinterpret_cast<cuDoubleComplex*>(A), lda, reinterpret_cast<cuDoubleComplex*>(B), ldb);
172 cpp_unreachable(
"Invalid call to egblas::min");
185 inline void min([[maybe_unused]]
size_t n,
188 [[maybe_unused]]
size_t lda,
190 [[maybe_unused]]
size_t ldb) {
191 #ifdef EGBLAS_HAS_ZMIN 193 egblas_zmin(n, complex_cast(alpha), reinterpret_cast<cuDoubleComplex*>(A), lda, reinterpret_cast<cuDoubleComplex*>(B), ldb);
195 cpp_unreachable(
"Invalid call to egblas::min");
202 #ifdef EGBLAS_HAS_SMIN3 203 static constexpr
bool has_smin3 =
true;
205 static constexpr
bool has_smin3 =
false;
217 inline void min([[maybe_unused]]
size_t n,
218 [[maybe_unused]]
float alpha,
219 [[maybe_unused]]
float* A,
220 [[maybe_unused]]
size_t lda,
221 [[maybe_unused]]
float* B,
222 [[maybe_unused]]
size_t ldb,
223 [[maybe_unused]]
float* C,
224 [[maybe_unused]]
size_t ldc) {
225 #ifdef EGBLAS_HAS_SMIN3 227 egblas_smin(n, alpha, A, lda, B, ldb, C, ldc);
229 cpp_unreachable(
"Invalid call to egblas::min");
236 #ifdef EGBLAS_HAS_DMIN3 237 static constexpr
bool has_dmin3 =
true;
239 static constexpr
bool has_dmin3 =
false;
251 inline void min([[maybe_unused]]
size_t n,
252 [[maybe_unused]]
double alpha,
253 [[maybe_unused]]
double* A,
254 [[maybe_unused]]
size_t lda,
255 [[maybe_unused]]
double* B,
256 [[maybe_unused]]
size_t ldb,
257 [[maybe_unused]]
double* C,
258 [[maybe_unused]]
size_t ldc) {
259 #ifdef EGBLAS_HAS_DMIN3 261 egblas_dmin(n, alpha, A, lda, B, ldb, C, ldc);
263 cpp_unreachable(
"Invalid call to egblas::min");
270 #ifdef EGBLAS_HAS_CMIN3 271 static constexpr
bool has_cmin3 =
true;
273 static constexpr
bool has_cmin3 =
false;
285 inline void min([[maybe_unused]]
size_t n,
286 [[maybe_unused]] std::complex<float> alpha,
287 [[maybe_unused]] std::complex<float>* A,
288 [[maybe_unused]]
size_t lda,
289 [[maybe_unused]] std::complex<float>* B,
290 [[maybe_unused]]
size_t ldb,
291 [[maybe_unused]] std::complex<float>* C,
292 [[maybe_unused]]
size_t ldc) {
293 #ifdef EGBLAS_HAS_CMIN3 295 egblas_cmin(n, complex_cast(alpha), reinterpret_cast<cuComplex*>(A), lda, reinterpret_cast<cuComplex*>(B), ldb, reinterpret_cast<cuComplex*>(C), ldc);
297 cpp_unreachable(
"Invalid call to egblas::min");
310 inline void min([[maybe_unused]]
size_t n,
313 [[maybe_unused]]
size_t lda,
315 [[maybe_unused]]
size_t ldb,
317 [[maybe_unused]]
size_t ldc) {
318 #ifdef EGBLAS_HAS_CMIN3 320 egblas_cmin(n, complex_cast(alpha), reinterpret_cast<cuComplex*>(A), lda, reinterpret_cast<cuComplex*>(B), ldb, reinterpret_cast<cuComplex*>(C), ldc);
322 cpp_unreachable(
"Invalid call to egblas::min");
329 #ifdef EGBLAS_HAS_ZMIN3 330 static constexpr
bool has_zmin3 =
true;
332 static constexpr
bool has_zmin3 =
false;
344 inline void min([[maybe_unused]]
size_t n,
345 [[maybe_unused]] std::complex<double> alpha,
346 [[maybe_unused]] std::complex<double>* A,
347 [[maybe_unused]]
size_t lda,
348 [[maybe_unused]] std::complex<double>* B,
349 [[maybe_unused]]
size_t ldb,
350 [[maybe_unused]] std::complex<double>* C,
351 [[maybe_unused]]
size_t ldc) {
352 #ifdef EGBLAS_HAS_ZMIN3 354 egblas_zmin(n, complex_cast(alpha), reinterpret_cast<cuDoubleComplex*>(A), lda, reinterpret_cast<cuDoubleComplex*>(B), ldb,
355 reinterpret_cast<cuDoubleComplex*>(C), ldc);
357 cpp_unreachable(
"Invalid call to egblas::min");
370 inline void min([[maybe_unused]]
size_t n,
373 [[maybe_unused]]
size_t lda,
375 [[maybe_unused]]
size_t ldb,
377 [[maybe_unused]]
size_t ldc) {
378 #ifdef EGBLAS_HAS_ZMIN3 380 egblas_zmin(n, complex_cast(alpha), reinterpret_cast<cuDoubleComplex*>(A), lda, reinterpret_cast<cuDoubleComplex*>(B), ldb,
381 reinterpret_cast<cuDoubleComplex*>(C), ldc);
383 cpp_unreachable(
"Invalid call to egblas::min");
Complex number implementation.
Definition: complex.hpp:31
auto min(L &&lhs, R &&rhs)
Create an expression with the min value of lhs or rhs.
Definition: expression_builder.hpp:77
void inc_counter([[maybe_unused]] const char *name)
Increase the given counter.
Definition: counters.hpp:25