15 #ifdef ETL_EGBLAS_MODE 17 #include "etl/impl/cublas/cuda.hpp" 28 #ifdef EGBLAS_HAS_SCLIP 29 static constexpr
bool has_sclip =
true;
31 static constexpr
bool has_sclip =
false;
45 inline void clip([[maybe_unused]]
size_t n, [[maybe_unused]]
const float alpha, [[maybe_unused]]
const float* A, [[maybe_unused]]
size_t lda, [[maybe_unused]]
const float* B, [[maybe_unused]]
size_t ldb, [[maybe_unused]]
float* C, [[maybe_unused]]
size_t ldc) {
46 #ifdef EGBLAS_HAS_SCLIP 48 egblas_sclip(n, alpha, A, lda, B, ldb, C, ldc);
50 cpp_unreachable(
"Invalid call to egblas::clip");
57 #ifdef EGBLAS_HAS_DCLIP 58 static constexpr
bool has_dclip =
true;
60 static constexpr
bool has_dclip =
false;
74 inline void clip([[maybe_unused]]
size_t n, [[maybe_unused]]
double alpha, [[maybe_unused]]
const double* A, [[maybe_unused]]
size_t lda, [[maybe_unused]]
const double* B, [[maybe_unused]]
size_t ldb, [[maybe_unused]]
double* C, [[maybe_unused]]
size_t ldc) {
75 #ifdef EGBLAS_HAS_DCLIP 77 egblas_dclip(n, alpha, A, lda, B, ldb, C, ldc);
79 cpp_unreachable(
"Invalid call to egblas::clip");
86 #ifdef EGBLAS_HAS_CCLIP 87 static constexpr
bool has_cclip =
true;
89 static constexpr
bool has_cclip =
false;
103 inline void clip([[maybe_unused]]
size_t n,
104 [[maybe_unused]]
const std::complex<float> alpha,
105 [[maybe_unused]]
const std::complex<float>* A,
106 [[maybe_unused]]
size_t lda,
107 [[maybe_unused]]
const std::complex<float>* B,
108 [[maybe_unused]]
size_t ldb,
109 [[maybe_unused]] std::complex<float>* C,
110 [[maybe_unused]]
size_t ldc) {
111 #ifdef EGBLAS_HAS_CCLIP 113 egblas_cclip(n, complex_cast(alpha), reinterpret_cast<const cuComplex*>(A), lda, reinterpret_cast<const cuComplex*>(B), ldb,
114 reinterpret_cast<cuComplex*>(C), ldc);
116 cpp_unreachable(
"Invalid call to egblas::clip");
131 inline void clip([[maybe_unused]]
size_t n,
134 [[maybe_unused]]
size_t lda,
136 [[maybe_unused]]
size_t ldb,
138 [[maybe_unused]]
size_t ldc) {
139 #ifdef EGBLAS_HAS_CCLIP 141 egblas_cclip(n, complex_cast(alpha), reinterpret_cast<const cuComplex*>(A), lda, reinterpret_cast<const cuComplex*>(B), ldb,
142 reinterpret_cast<cuComplex*>(C), ldc);
144 cpp_unreachable(
"Invalid call to egblas::clip");
151 #ifdef EGBLAS_HAS_ZCLIP 152 static constexpr
bool has_zclip =
true;
154 static constexpr
bool has_zclip =
false;
168 inline void clip([[maybe_unused]]
size_t n,
169 [[maybe_unused]]
const std::complex<double> alpha,
170 [[maybe_unused]]
const std::complex<double>* A,
171 [[maybe_unused]]
size_t lda,
172 [[maybe_unused]]
const std::complex<double>* B,
173 [[maybe_unused]]
size_t ldb,
174 [[maybe_unused]] std::complex<double>* C,
175 [[maybe_unused]]
size_t ldc) {
176 #ifdef EGBLAS_HAS_ZCLIP 178 egblas_zclip(n, complex_cast(alpha), reinterpret_cast<const cuDoubleComplex*>(A), lda, reinterpret_cast<const cuDoubleComplex*>(B), ldb,
179 reinterpret_cast<cuDoubleComplex*>(C), ldc);
181 cpp_unreachable(
"Invalid call to egblas::clip");
196 inline void clip([[maybe_unused]]
size_t n,
199 [[maybe_unused]]
size_t lda,
201 [[maybe_unused]]
size_t ldb,
203 [[maybe_unused]]
size_t ldc) {
204 #ifdef EGBLAS_HAS_ZCLIP 206 egblas_zclip(n, complex_cast(alpha), reinterpret_cast<const cuDoubleComplex*>(A), lda, reinterpret_cast<const cuDoubleComplex*>(B), ldb,
207 reinterpret_cast<cuDoubleComplex*>(C), ldc);
209 cpp_unreachable(
"Invalid call to egblas::clip");
Complex number implementation.
Definition: complex.hpp:31
void inc_counter([[maybe_unused]] const char *name)
Increase the given counter.
Definition: counters.hpp:25
auto clip(E &&value, T min, T max)
Clip each values of the ETL expression between min and max.
Definition: expression_builder.hpp:110