Loading...
Searching...
No Matches
q3::GPUDavidsonWorkspace Class Reference

#include <davidson.hpp>

+ Inheritance diagram for q3::GPUDavidsonWorkspace:

Public Member Functions

 GPUDavidsonWorkspace (std::shared_ptr< execution::gpu::device::GPUDeviceBackend > device_backend)
 
const Complex * band_scratch () const override
 
Complex * band_scratch () override
 
const Complex * basis_vectors () const override
 
Complex * basis_vectors () override
 
Real * eigenvalues_device ()
 
const Real * eigenvalues_device () const
 
const Complex * hamiltonian_basis_vectors () const override
 
Complex * hamiltonian_basis_vectors () override
 
const Complex * overlap_basis_vectors () const override
 
Complex * overlap_basis_vectors () override
 
void resize (int maximum_basis_size, int number_of_plane_waves, int number_of_bands, bool overlap_is_identity) override
 
const Complex * subspace_hamiltonian () const override
 
Complex * subspace_hamiltonian () override
 
const Complex * subspace_overlap () const override
 
Complex * subspace_overlap () override
 
void sync_to_device ()
 
void sync_to_host () override
 
- Public Member Functions inherited from q3::PlanewaveDavidsonWorkspace
virtual ~PlanewaveDavidsonWorkspace ()=default
 
Real * local_eigenvalues ()
 
const Real * local_eigenvalues () const
 

Additional Inherited Members

- Protected Attributes inherited from q3::PlanewaveDavidsonWorkspace
std::vector< Real > local_eigenvalues_host_
 

Detailed Description

Definition at line 217 of file davidson.hpp.

Constructor & Destructor Documentation

◆ GPUDavidsonWorkspace()

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

Definition at line 219 of file davidson.hpp.

Member Function Documentation

◆ band_scratch() [1/2]

const Complex * q3::GPUDavidsonWorkspace::band_scratch ( ) const
inlineoverridevirtual

◆ band_scratch() [2/2]

Complex * q3::GPUDavidsonWorkspace::band_scratch ( )
inlineoverridevirtual

One band-sized buffer the solver borrows for a rotation that cannot be done in place – the subspace collapse and the final extraction. It replaced the Ritz vectors, H|Ritz>, S|Ritz> and residual arrays, which the correction-vector build made unnecessary.

Implements q3::PlanewaveDavidsonWorkspace.

Definition at line 311 of file davidson.hpp.

References q3::execution::gpu::device::GPUDeviceBuffer< T >::data().

◆ basis_vectors() [1/2]

const Complex * q3::GPUDavidsonWorkspace::basis_vectors ( ) const
inlineoverridevirtual

◆ basis_vectors() [2/2]

Complex * q3::GPUDavidsonWorkspace::basis_vectors ( )
inlineoverridevirtual

◆ eigenvalues_device() [1/2]

Real * q3::GPUDavidsonWorkspace::eigenvalues_device ( )
inline

◆ eigenvalues_device() [2/2]

const Real * q3::GPUDavidsonWorkspace::eigenvalues_device ( ) const
inline

◆ hamiltonian_basis_vectors() [1/2]

const Complex * q3::GPUDavidsonWorkspace::hamiltonian_basis_vectors ( ) const
inlineoverridevirtual

◆ hamiltonian_basis_vectors() [2/2]

Complex * q3::GPUDavidsonWorkspace::hamiltonian_basis_vectors ( )
inlineoverridevirtual

◆ overlap_basis_vectors() [1/2]

const Complex * q3::GPUDavidsonWorkspace::overlap_basis_vectors ( ) const
inlineoverridevirtual

◆ overlap_basis_vectors() [2/2]

Complex * q3::GPUDavidsonWorkspace::overlap_basis_vectors ( )
inlineoverridevirtual

◆ resize()

void q3::GPUDavidsonWorkspace::resize ( int  maximum_basis_size,
int  number_of_plane_waves,
int  number_of_bands,
bool  overlap_is_identity 
)
inlineoverridevirtual

Size the workspace for this k-point.

overlap_is_identity lets a norm-conserving run skip the S arrays entirely; the accessors then return the basis and Ritz buffers, which hold exactly the same values.

The device path still allocates its S buffers. Aliasing them would need the same write audit on every GPU kernel, and that wants its own change with a device to test it on.

Implements q3::PlanewaveDavidsonWorkspace.

Definition at line 230 of file davidson.hpp.

References q3::execution::gpu::device::GPUDeviceBuffer< T >::data(), q3::PlanewaveDavidsonWorkspace::local_eigenvalues_host_, and q3::execution::gpu::device::GPUDeviceBuffer< T >::size().

◆ subspace_hamiltonian() [1/2]

const Complex * q3::GPUDavidsonWorkspace::subspace_hamiltonian ( ) const
inlineoverridevirtual

◆ subspace_hamiltonian() [2/2]

Complex * q3::GPUDavidsonWorkspace::subspace_hamiltonian ( )
inlineoverridevirtual

◆ subspace_overlap() [1/2]

const Complex * q3::GPUDavidsonWorkspace::subspace_overlap ( ) const
inlineoverridevirtual

◆ subspace_overlap() [2/2]

Complex * q3::GPUDavidsonWorkspace::subspace_overlap ( )
inlineoverridevirtual

◆ sync_to_device()

void q3::GPUDavidsonWorkspace::sync_to_device ( )
inline

◆ sync_to_host()

void q3::GPUDavidsonWorkspace::sync_to_host ( )
inlineoverridevirtual

Implements q3::PlanewaveDavidsonWorkspace.

Definition at line 331 of file davidson.hpp.


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