Loading...
Searching...
No Matches
q3::execution::gpu::lapack::GPUEigensolver Class Referenceabstract

#include <init.hpp>

+ Inheritance diagram for q3::execution::gpu::lapack::GPUEigensolver:

Public Member Functions

 GPUEigensolver (std::shared_ptr< device::GPUDeviceBackend > device_backend)
 
virtual ~GPUEigensolver ()=default
 
device::GPUDeviceBackend & device_backend ()
 
const device::GPUDeviceBackend & device_backend () const
 
virtual 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)=0
 
virtual void hermitian_eigenvalue_solve (int matrix_dimension, Complex *matrix_data, int leading_dimension, Real *eigenvalues)=0
 

Protected Attributes

std::shared_ptr< device::GPUDeviceBackend > device_backend_
 

Detailed Description

Definition at line 30 of file init.hpp.

Constructor & Destructor Documentation

◆ GPUEigensolver()

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

Construct a GPU eigensolver backed by the given device.

Parameters
device_backendShared pointer to the GPU device backend. Must not be null.

Definition at line 38 of file init.hpp.

◆ ~GPUEigensolver()

virtual q3::execution::gpu::lapack::GPUEigensolver::~GPUEigensolver ( )
virtualdefault

Member Function Documentation

◆ device_backend() [1/2]

device::GPUDeviceBackend & q3::execution::gpu::lapack::GPUEigensolver::device_backend ( )
inline

Access the underlying GPU device backend.

Definition at line 87 of file init.hpp.

References device_backend_.

◆ device_backend() [2/2]

const device::GPUDeviceBackend & q3::execution::gpu::lapack::GPUEigensolver::device_backend ( ) const
inline

Access the underlying GPU device backend (const).

Definition at line 94 of file init.hpp.

References device_backend_.

◆ generalized_hermitian_eigenvalue_solve()

virtual void q3::execution::gpu::lapack::GPUEigensolver::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 
)
pure virtual

Solve the generalized Hermitian eigenvalue problem: A · x = λ · B · x.

B must be positive definite (e.g., the overlap matrix S for US-PP). On return, matrix_a_data contains the eigenvectors and eigenvalues contains the eigenvalues in ascending order.

Parameters
matrix_dimensionOrder of both matrices (N).
matrix_a_dataOn entry: Hermitian matrix A (upper triangle). On exit: the eigenvectors.
leading_dimension_aLeading dimension of matrix_a_data (>= N).
matrix_b_dataOn entry: positive-definite Hermitian B. On exit: the Cholesky factor of B.
leading_dimension_bLeading dimension of matrix_b_data (>= N).
eigenvaluesOutput array of N real eigenvalues (ascending).

Implemented in q3::execution::gpu::lapack::CudaGPUEigensolver, q3::execution::gpu::lapack::HIPGPUEigensolver, and q3::execution::gpu::lapack::SYCLGPUEigensolver.

◆ hermitian_eigenvalue_solve()

virtual void q3::execution::gpu::lapack::GPUEigensolver::hermitian_eigenvalue_solve ( int  matrix_dimension,
Complex *  matrix_data,
int  leading_dimension,
Real *  eigenvalues 
)
pure virtual

Solve the standard Hermitian eigenvalue problem: A · x = λ · x.

Computes all eigenvalues and eigenvectors of a complex Hermitian matrix. On return, matrix_data contains the eigenvectors and eigenvalues contains the eigenvalues in ascending order.

Parameters
matrix_dimensionOrder of the matrix (N).
matrix_dataOn entry: the Hermitian matrix (upper triangle). On exit: the orthonormal eigenvectors.
leading_dimensionLeading dimension of matrix_data (>= N).
eigenvaluesOutput array of N real eigenvalues (ascending).

Implemented in q3::execution::gpu::lapack::CudaGPUEigensolver, q3::execution::gpu::lapack::HIPGPUEigensolver, and q3::execution::gpu::lapack::SYCLGPUEigensolver.

Referenced by q3::cli::validate_gpu_eigensolver().

Member Data Documentation

◆ device_backend_

std::shared_ptr<device::GPUDeviceBackend> q3::execution::gpu::lapack::GPUEigensolver::device_backend_
protected

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