13 #ifndef QMCPLUSPLUS_SYCL_BLAS_H 14 #define QMCPLUSPLUS_SYCL_BLAS_H 17 #include <sycl/sycl.hpp> 18 #include <oneapi/mkl/blas.hpp> 30 if (trans ==
'N' || trans ==
'n')
31 return oneapi::mkl::transpose::nontrans;
32 else if (trans ==
'T' || trans ==
't')
33 return oneapi::mkl::transpose::trans;
34 else if (trans ==
'C' || trans ==
'c')
35 return oneapi::mkl::transpose::conjtrans;
37 throw std::runtime_error(
38 "syclBLAS::convertTransEnum trans can only be 'N', 'T', 'C', 'n', 't', 'c'. Input value is " +
39 std::string(1, trans));
55 const std::vector<sycl::event>& events = {});
71 const size_t batch_count,
72 const std::vector<sycl::event>& events = {});
89 const std::vector<sycl::event>& events = {});
103 const size_t batch_count,
104 const std::vector<sycl::event>& events = {});
106 template<
typename T1,
typename T2>
114 const std::vector<sycl::event>& events = {});
116 template<
typename T1,
typename T2>
121 const std::vector<sycl::event>& events = {});
126 #endif // QMCPLUSPLUS_OMPBLAS_H
helper functions for EinsplineSetBuilder
sycl::event syclBLAS_status
sycl::event ger_batched(sycl::queue &handle, const int m, const int n, const T *alpha, const T *const x[], const int incx, const T *const y[], const int incy, T *const A[], const int lda, const size_t batch_count, const std::vector< sycl::event > &events={})
in-house version of ger_batch implemented in SYCL. Can be dropped if we have vendor optimized version...
oneapi::mkl::transpose convertTransEnum(char trans)
sycl::queue syclBLAS_handle
sycl::event transpose(sycl::queue &q, const T1 *restrict in, int m, int lda, T2 *restrict out, int n, int ldb, const std::vector< sycl::event > &events)
sycl::event gemv_batched(sycl::queue &handle, const char trans, const int m, const int n, const T *alpha, const T *const A[], const int lda, const T *const x[], const int incx, const T *beta, T *const y[], const int incy, const size_t batch_count, const std::vector< sycl::event > &events={})
in-house version of gemv_batch implemented in SYCL. Can be dropped if we have vendor optimized versio...
sycl::event gemv(sycl::queue &handle, const char trans, const int m, const int n, const T alpha, const T *const A, const int lda, const T *const x, const int incx, const T beta, T *const y, const int incy, const std::vector< sycl::event > &events)
sycl::event gemm(sycl::queue &handle, const char tA, const char tB, const int m, const int n, const int k, const T alpha, const T *A, const int lda, const T *B, const int ldb, const T beta, T *C, const int ldc, const std::vector< sycl::event > &events)
sycl::event copy_n(sycl::queue &aq, const T1 *restrict VA, size_t array_size, T2 *restrict VC, const std::vector< sycl::event > &events)
double B(double x, int k, int i, const std::vector< double > &t)
sycl::event transpose(sycl::queue &q, const T1 *in, int m, int lda, T2 *out, int n, int ldb, const std::vector< sycl::event > &events={})
std::int64_t syclBLAS_int