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_ |
|
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_.
|
overridedefault |
|
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.
|
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.