Loading...
Searching...
No Matches
q3::execution::gpu::blas::CudaGPUBLAS Class Reference
+ Inheritance diagram for q3::execution::gpu::blas::CudaGPUBLAS:

Public Member Functions

 CudaGPUBLAS (std::shared_ptr< device::GPUDeviceBackend > device_backend)
 
 ~CudaGPUBLAS () 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_
 

Detailed Description

Definition at line 58 of file cuda.cpp.

Constructor & Destructor Documentation

◆ CudaGPUBLAS()

q3::execution::gpu::blas::CudaGPUBLAS::CudaGPUBLAS ( std::shared_ptr< device::GPUDeviceBackend >  device_backend)
inlineexplicit

Construct a cuBLAS wrapper, creating a cuBLAS handle.

Definition at line 63 of file cuda.cpp.

◆ ~CudaGPUBLAS()

q3::execution::gpu::blas::CudaGPUBLAS::~CudaGPUBLAS ( )
inlineoverride

Definition at line 68 of file cuda.cpp.

Member Function Documentation

◆ axpy()

void q3::execution::gpu::blas::CudaGPUBLAS::axpy ( int  number_of_elements,
Complex  scaling_factor,
const Complex *  vector_x,
Complex *  vector_y 
) const
inlineoverridevirtual

Scaled vector addition (ZAXPY) via cublasZaxpy.

Implements q3::execution::gpu::blas::GPUBLAS.

Definition at line 159 of file cuda.cpp.

◆ dgemm()

void q3::execution::gpu::blas::CudaGPUBLAS::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
inlineoverridevirtual

Real double-precision DGEMM via cublasDgemm.

Implements q3::execution::gpu::blas::GPUBLAS.

Definition at line 248 of file cuda.cpp.

◆ dot_product()

Complex q3::execution::gpu::blas::CudaGPUBLAS::dot_product ( int  number_of_elements,
const Complex *  vector_x,
const Complex *  vector_y 
) const
inlineoverridevirtual

Complex double-precision conjugated dot product via cublasZdotc.

Implements q3::execution::gpu::blas::GPUBLAS.

Definition at line 114 of file cuda.cpp.

◆ dot_product_single()

ComplexSingle q3::execution::gpu::blas::CudaGPUBLAS::dot_product_single ( int  number_of_elements,
const ComplexSingle *  vector_x,
const ComplexSingle *  vector_y 
) const
inlineoverridevirtual

Complex single-precision conjugated dot product via cublasCdotc.

Implements q3::execution::gpu::blas::GPUBLAS.

Definition at line 214 of file cuda.cpp.

◆ gemm()

void q3::execution::gpu::blas::CudaGPUBLAS::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
inlineoverridevirtual

Complex double-precision ZGEMM via cublasZgemm.

Implements q3::execution::gpu::blas::GPUBLAS.

Definition at line 79 of file cuda.cpp.

◆ gemm_single()

void q3::execution::gpu::blas::CudaGPUBLAS::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
inlineoverridevirtual

Complex single-precision CGEMM via cublasCgemm.

Implements q3::execution::gpu::blas::GPUBLAS.

Definition at line 179 of file cuda.cpp.

◆ norm()

double q3::execution::gpu::blas::CudaGPUBLAS::norm ( int  number_of_elements,
const Complex *  vector_x 
) const
inlineoverridevirtual

Euclidean norm of a complex double-precision vector via cublasDznrm2.

Implements q3::execution::gpu::blas::GPUBLAS.

Definition at line 132 of file cuda.cpp.

◆ norm_single()

float q3::execution::gpu::blas::CudaGPUBLAS::norm_single ( int  number_of_elements,
const ComplexSingle *  vector_x 
) const
inlineoverridevirtual

Euclidean norm of a complex single-precision vector via cublasScnrm2.

Implements q3::execution::gpu::blas::GPUBLAS.

Definition at line 232 of file cuda.cpp.

◆ scale()

void q3::execution::gpu::blas::CudaGPUBLAS::scale ( int  number_of_elements,
Complex  scaling_factor,
Complex *  vector_x 
) const
inlineoverridevirtual

Scale a complex double-precision vector in-place via cublasZscal.

Implements q3::execution::gpu::blas::GPUBLAS.

Definition at line 146 of file cuda.cpp.


The documentation for this class was generated from the following file: