Inheritance diagram for q3::execution::gpu::blas::SYCLGPUBLAS:Public Member Functions | |
| SYCLGPUBLAS (std::shared_ptr< device::GPUDeviceBackend > device_backend) | |
| ~SYCLGPUBLAS () override | |
| void | axpy (int number_of_elements, Complex scaling_factor, const Complex *vector_x, Complex *vector_y) const override |
| void | dgemm (char transpose_a, char transpose_b, int m, int n, int k, Real alpha, const Real *matrix_a, int leading_dimension_a, const Real *matrix_b, int leading_dimension_b, Real beta, Real *matrix_c, int leading_dimension_c) const override |
| Complex | dot_product (int number_of_elements, const Complex *vector_x, const Complex *vector_y) const override |
| ComplexSingle | dot_product_single (int number_of_elements, const ComplexSingle *vector_x, const ComplexSingle *vector_y) const override |
| void | gemm (char transpose_a, char transpose_b, int m, int n, int k, Complex alpha, const Complex *matrix_a, int leading_dimension_a, const Complex *matrix_b, int leading_dimension_b, Complex beta, Complex *matrix_c, int leading_dimension_c) const override |
| void | gemm_single (char transpose_a, char transpose_b, int m, int n, int k, ComplexSingle alpha, const ComplexSingle *matrix_a, int leading_dimension_a, const ComplexSingle *matrix_b, int leading_dimension_b, ComplexSingle beta, ComplexSingle *matrix_c, int leading_dimension_c) const override |
| double | norm (int number_of_elements, const Complex *vector_x) const override |
| float | norm_single (int number_of_elements, const ComplexSingle *vector_x) const override |
| void | scale (int number_of_elements, Complex scaling_factor, Complex *vector_x) const override |
Public Member Functions inherited from q3::execution::gpu::blas::GPUBLAS | |
| GPUBLAS (std::shared_ptr< device::GPUDeviceBackend > device_backend) | |
| virtual | ~GPUBLAS ()=default |
| device::GPUDeviceBackend & | device_backend () |
| const device::GPUDeviceBackend & | device_backend () const |
Additional Inherited Members | |
Protected Attributes inherited from q3::execution::gpu::blas::GPUBLAS | |
| std::shared_ptr< device::GPUDeviceBackend > | device_backend_ |
|
inlineexplicit |
Construct a oneMKL BLAS wrapper.
Obtains the SYCL queue from the device backend via dynamic_cast. Pre-allocates persistent shared-memory buffers for scalar results to avoid per-call allocation overhead. Throws if the device backend is not a SYCLGPUDeviceBackend.
Definition at line 64 of file sycl.cpp.
References q3::execution::gpu::blas::GPUBLAS::device_backend_.
|
inlineoverride |
|
inlineoverridevirtual |
Scaled vector addition (ZAXPY) via oneMKL axpy.
Implements q3::execution::gpu::blas::GPUBLAS.
|
inlineoverridevirtual |
Real double-precision DGEMM via oneMKL gemm.
Implements q3::execution::gpu::blas::GPUBLAS.
|
inlineoverridevirtual |
Complex double-precision conjugated dot product via oneMKL dotc.
Uses a pre-allocated shared-memory scalar buffer to avoid per-call allocation overhead in the Davidson hot loop.
Implements q3::execution::gpu::blas::GPUBLAS.
|
inlineoverridevirtual |
Complex single-precision conjugated dot product via oneMKL dotc.
Uses a pre-allocated shared-memory scalar buffer.
Implements q3::execution::gpu::blas::GPUBLAS.
|
inlineoverridevirtual |
Complex double-precision ZGEMM via oneMKL gemm.
Implements q3::execution::gpu::blas::GPUBLAS.
|
inlineoverridevirtual |
Complex single-precision CGEMM via oneMKL gemm.
Implements q3::execution::gpu::blas::GPUBLAS.
|
inlineoverridevirtual |
Euclidean norm of a complex double-precision vector via oneMKL nrm2.
Uses a pre-allocated shared-memory scalar buffer.
Implements q3::execution::gpu::blas::GPUBLAS.
|
inlineoverridevirtual |
Euclidean norm of a complex single-precision vector via oneMKL nrm2.
Uses a pre-allocated shared-memory scalar buffer.
Implements q3::execution::gpu::blas::GPUBLAS.
|
inlineoverridevirtual |
Scale a complex double-precision vector in-place via oneMKL scal.
Implements q3::execution::gpu::blas::GPUBLAS.