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

Public Member Functions

 HIPGPUBLAS (std::shared_ptr< device::GPUDeviceBackend > device_backend)
 
 ~HIPGPUBLAS () 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 hip.cpp.

Constructor & Destructor Documentation

◆ HIPGPUBLAS()

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

Construct a hipBLAS wrapper, creating a hipBLAS handle.

Definition at line 63 of file hip.cpp.

◆ ~HIPGPUBLAS()

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

Definition at line 68 of file hip.cpp.

Member Function Documentation

◆ axpy()

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

Scaled vector addition (ZAXPY) via hipblasZaxpy.

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

Definition at line 163 of file hip.cpp.

◆ dgemm()

void q3::execution::gpu::blas::HIPGPUBLAS::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 hipblasDgemm.

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

Definition at line 256 of file hip.cpp.

◆ dot_product()

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

Complex double-precision conjugated dot product via hipblasZdotc.

Use reinterpret_cast for portable access — hipblasDoubleComplex field names (.real/.imag vs .x/.y) vary across ROCm versions.

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

Definition at line 114 of file hip.cpp.

◆ dot_product_single()

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

Complex single-precision conjugated dot product via hipblasCdotc.

Use reinterpret_cast for portable access — hipblasComplex field names (.real/.imag vs .x/.y) vary across ROCm versions.

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

Definition at line 218 of file hip.cpp.

◆ gemm()

void q3::execution::gpu::blas::HIPGPUBLAS::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 hipblasZgemm.

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

Definition at line 79 of file hip.cpp.

◆ gemm_single()

void q3::execution::gpu::blas::HIPGPUBLAS::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 hipblasCgemm.

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

Definition at line 183 of file hip.cpp.

◆ norm()

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

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

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

Definition at line 136 of file hip.cpp.

◆ norm_single()

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

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

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

Definition at line 240 of file hip.cpp.

◆ scale()

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

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

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

Definition at line 150 of file hip.cpp.


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