ABACUS develop
Atomic-orbital Based Ab-initio Computation at UStc
Loading...
Searching...
No Matches
Public Types | Public Member Functions | List of all members
hsolver::dngvd_op< T, Device > Struct Template Reference

#include <dngvd_op.h>

Collaboration diagram for hsolver::dngvd_op< T, Device >:

Public Types

using Real = typename GetTypeReal< T >::type
 

Public Member Functions

void operator() (const Device *d, const int nstart, const int ldh, const T *A, const T *B, Real *W, T *V)
 DNGVD computes all the eigenvalues and eigenvectors of a complex generalized Hermitian-definite eigenproblem. If eigenvectors are desired, it uses a divide and conquer algorithm.
 

Member Typedef Documentation

◆ Real

template<typename T , typename Device >
using hsolver::dngvd_op< T, Device >::Real = typename GetTypeReal<T>::type

Member Function Documentation

◆ operator()()

template<typename T , typename Device >
void hsolver::dngvd_op< T, Device >::operator() ( const Device *  d,
const int  nstart,
const int  ldh,
const T A,
const T B,
Real W,
T V 
)

DNGVD computes all the eigenvalues and eigenvectors of a complex generalized Hermitian-definite eigenproblem. If eigenvectors are desired, it uses a divide and conquer algorithm.

In this op, the CPU version is implemented through the gvd interface, and the CUDA version is implemented through the gvd interface. API doc:

  1. zhegvd: https://netlib.org/lapack/explore-html/df/d9a/group__complex16_h_eeigen_ga74fdf9b5a16c90d8b7a589dec5ca058a.html
  2. cusolverDnZhegvd: https://docs.nvidia.com/cuda/cusolver/index.html#cusolverdn-t-sygvd

Input Parameters

Parameters
d: the type of device
nstart: the number of cols of the matrix
ldh: the number of rows of the matrix
A: the hermitian matrix A in A x=lambda B x (col major)
B: the overlap matrix B in A x=lambda B x (col major) Output Parameter
W: calculated eigenvalues
V: calculated eigenvectors (col major)

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