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

Public Member Functions

 SYCLGPUEigensolver (std::shared_ptr< device::GPUDeviceBackend > device_backend)
 
 ~SYCLGPUEigensolver () override=default
 
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 24 of file sycl.cpp.

Constructor & Destructor Documentation

◆ SYCLGPUEigensolver()

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

Construct a oneMKL LAPACK eigensolver.

Obtains the SYCL queue from the device backend via dynamic_cast. Throws if the device backend is not a SYCLGPUDeviceBackend.

Definition at line 32 of file sycl.cpp.

References q3::execution::gpu::lapack::GPUEigensolver::device_backend_.

◆ ~SYCLGPUEigensolver()

q3::execution::gpu::lapack::SYCLGPUEigensolver::~SYCLGPUEigensolver ( )
overridedefault

Member Function Documentation

◆ generalized_hermitian_eigenvalue_solve()

void q3::execution::gpu::lapack::SYCLGPUEigensolver::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 oneMKL hegvd.

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 101 of file sycl.cpp.

◆ hermitian_eigenvalue_solve()

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

Solve A · x = λ · x via oneMKL heevd.

Uses the divide-and-conquer algorithm for better performance on larger 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 51 of file sycl.cpp.


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