Loading...
Searching...
No Matches
q3::execution::gpu::lapack::CudaGPUEigensolver Class Reference
+ Inheritance diagram for q3::execution::gpu::lapack::CudaGPUEigensolver:

Public Member Functions

 CudaGPUEigensolver (std::shared_ptr< device::GPUDeviceBackend > device_backend)
 
 ~CudaGPUEigensolver () override
 
void generalized_hermitian_eigenvalue_solve (int matrix_dimension, Complex *matrix_a_data, int leading_dimension_a, Complex *matrix_b_data, int leading_dimension_b, Real *eigenvalues) override
 
void hermitian_eigenvalue_solve (int matrix_dimension, Complex *matrix_data, int leading_dimension, Real *eigenvalues) override
 
- Public Member Functions inherited from q3::execution::gpu::lapack::GPUEigensolver
 GPUEigensolver (std::shared_ptr< device::GPUDeviceBackend > device_backend)
 
virtual ~GPUEigensolver ()=default
 
device::GPUDeviceBackend & device_backend ()
 
const device::GPUDeviceBackend & device_backend () const
 

Additional Inherited Members

- Protected Attributes inherited from q3::execution::gpu::lapack::GPUEigensolver
std::shared_ptr< device::GPUDeviceBackend > device_backend_
 

Detailed Description

Definition at line 49 of file cuda.cpp.

Constructor & Destructor Documentation

◆ CudaGPUEigensolver()

q3::execution::gpu::lapack::CudaGPUEigensolver::CudaGPUEigensolver ( std::shared_ptr< device::GPUDeviceBackend >  device_backend)
inlineexplicit

Construct a cuSOLVER eigensolver, creating a cuSOLVER dense handle.

Definition at line 54 of file cuda.cpp.

◆ ~CudaGPUEigensolver()

q3::execution::gpu::lapack::CudaGPUEigensolver::~CudaGPUEigensolver ( )
inlineoverride

Definition at line 59 of file cuda.cpp.

Member Function Documentation

◆ generalized_hermitian_eigenvalue_solve()

void q3::execution::gpu::lapack::CudaGPUEigensolver::generalized_hermitian_eigenvalue_solve ( int  matrix_dimension,
Complex *  matrix_a_data,
int  leading_dimension_a,
Complex *  matrix_b_data,
int  leading_dimension_b,
Real *  eigenvalues 
)
inlineoverridevirtual

Solve A · x = λ · B · x via cusolverDnZhegvd.

B must be positive definite. On exit, matrix_a_data holds the eigenvectors and eigenvalues contains eigenvalues in ascending order.

Implements q3::execution::gpu::lapack::GPUEigensolver.

Definition at line 133 of file cuda.cpp.

◆ hermitian_eigenvalue_solve()

void q3::execution::gpu::lapack::CudaGPUEigensolver::hermitian_eigenvalue_solve ( int  matrix_dimension,
Complex *  matrix_data,
int  leading_dimension,
Real *  eigenvalues 
)
inlineoverridevirtual

Solve A · x = λ · x via cusolverDnZheevd.

Uses the divide-and-conquer algorithm for better performance on large matrices. On entry, matrix_data holds the Hermitian matrix (upper triangle). On exit, it holds the eigenvectors.

Implements q3::execution::gpu::lapack::GPUEigensolver.

Definition at line 72 of file cuda.cpp.


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