15 #ifdef ETL_EGBLAS_MODE 17 #include "etl/impl/cublas/cuda.hpp" 28 #ifdef EGBLAS_HAS_SEQUAL 29 static constexpr
bool has_sequal =
true;
31 static constexpr
bool has_sequal =
false;
44 inline void equal([[maybe_unused]]
size_t n,
45 [[maybe_unused]]
const float* A,
46 [[maybe_unused]]
size_t lda,
47 [[maybe_unused]]
const float* B,
48 [[maybe_unused]]
size_t ldb,
49 [[maybe_unused]]
bool* C,
50 [[maybe_unused]]
size_t ldc) {
51 #ifdef EGBLAS_HAS_SEQUAL 53 egblas_sequal(n, A, lda, B, ldb, C, ldc);
55 cpp_unreachable(
"Invalid call to egblas::equal");
62 #ifdef EGBLAS_HAS_DEQUAL 63 static constexpr
bool has_dequal =
true;
65 static constexpr
bool has_dequal =
false;
78 inline void equal([[maybe_unused]]
size_t n,
79 [[maybe_unused]]
const double* A,
80 [[maybe_unused]]
size_t lda,
81 [[maybe_unused]]
const double* B,
82 [[maybe_unused]]
size_t ldb,
83 [[maybe_unused]]
bool* C,
84 [[maybe_unused]]
size_t ldc) {
85 #ifdef EGBLAS_HAS_DEQUAL 87 egblas_dequal(n, A, lda, B, ldb, C, ldc);
89 cpp_unreachable(
"Invalid call to egblas::equal");
96 #ifdef EGBLAS_HAS_CEQUAL 97 static constexpr
bool has_cequal =
true;
99 static constexpr
bool has_cequal =
false;
112 inline void equal([[maybe_unused]]
size_t n,
113 [[maybe_unused]]
const std::complex<float>* A,
114 [[maybe_unused]]
size_t lda,
115 [[maybe_unused]]
const std::complex<float>* B,
116 [[maybe_unused]]
size_t ldb,
117 [[maybe_unused]]
bool* C,
118 [[maybe_unused]]
size_t ldc) {
119 #ifdef EGBLAS_HAS_CEQUAL 121 egblas_cequal(n, reinterpret_cast<const cuComplex*>(A), lda, reinterpret_cast<const cuComplex*>(B), ldb, C, ldc);
123 cpp_unreachable(
"Invalid call to egblas::equal");
137 inline void equal([[maybe_unused]]
size_t n,
139 [[maybe_unused]]
size_t lda,
141 [[maybe_unused]]
size_t ldb,
142 [[maybe_unused]]
bool* C,
143 [[maybe_unused]]
size_t ldc) {
144 #ifdef EGBLAS_HAS_CEQUAL 146 egblas_cequal(n, reinterpret_cast<const cuComplex*>(A), lda, reinterpret_cast<const cuComplex*>(B), ldb, C, ldc);
148 cpp_unreachable(
"Invalid call to egblas::equal");
155 #ifdef EGBLAS_HAS_ZEQUAL 156 static constexpr
bool has_zequal =
true;
158 static constexpr
bool has_zequal =
false;
171 inline void equal([[maybe_unused]]
size_t n,
172 [[maybe_unused]]
const std::complex<double>* A,
173 [[maybe_unused]]
size_t lda,
174 [[maybe_unused]]
const std::complex<double>* B,
175 [[maybe_unused]]
size_t ldb,
176 [[maybe_unused]]
bool* C,
177 [[maybe_unused]]
size_t ldc) {
178 #ifdef EGBLAS_HAS_ZEQUAL 180 egblas_zequal(n, reinterpret_cast<const cuDoubleComplex*>(A), lda, reinterpret_cast<const cuDoubleComplex*>(B), ldb, C, ldc);
182 cpp_unreachable(
"Invalid call to egblas::equal");
196 inline void equal([[maybe_unused]]
size_t n,
198 [[maybe_unused]]
size_t lda,
200 [[maybe_unused]]
size_t ldb,
201 [[maybe_unused]]
bool* C,
202 [[maybe_unused]]
size_t ldc) {
203 #ifdef EGBLAS_HAS_ZEQUAL 205 egblas_zequal(n, reinterpret_cast<const cuDoubleComplex*>(A), lda, reinterpret_cast<const cuDoubleComplex*>(B), ldb, C, ldc);
207 cpp_unreachable(
"Invalid call to egblas::equal");
Complex number implementation.
Definition: complex.hpp:31
void inc_counter([[maybe_unused]] const char *name)
Increase the given counter.
Definition: counters.hpp:25
auto equal(LE &&lhs, RE rhs)
Builds an expression representing the elementwise comparison of lhs and rhs.
Definition: binary_expression_builder.hpp:395