Skip to content

Feature: LOBPCG the new eigensolver #5089

Closed
@Cstandardlib

Description

@Cstandardlib

Background

I propose the development of a new feature within our software framework: the implementation of the Locally Optimal Block Preconditioned Conjugate Gradient (LOBPCG) algorithm as a general eigenvalue solver. This will complement our existing solvers like the Conjugate Gradient (CG) and Davidson methods, providing users with a versatile tool for solving generalized eigenvalue problem of large, sparse matrices.

See Toward the Optimal Preconditioned Eigensolver: Locally Optimal Block Preconditioned Conjugate Gradient Method | SIAM Journal on Scientific Computing for details about the algorithm.

Describe the solution you'd like

The primary objective is to implement LOBPCG as a standalone module within our software framework, ensuring it is:

  1. Compatible: Works seamlessly with the existing infrastructure, including data structures and interfaces. It is intended that it will be integrated into HSolver using kernel ops.
  2. Efficient: Optimized for performance, particularly for large and sparse matrices. It should take full advantage of heterogeneous computing devices.
  3. Modular: Designed to be easily maintained and extended, allowing for future improvements and integration with other solvers.

Testing and Validation:

  1. Create a comprehensive suite of unit tests to validate the correctness and performance of the LOBPCG implementation.
  2. Compare the performance and accuracy of LOBPCG with existing solvers on a set of benchmark problems.

Task list only for developers

  • Notice possible changes of behavior
  • Explain the changes of codes in core modules of ESolver, HSolver, ElecState, Hamilt, Operator or Psi

Notice Possible Changes of Behavior (Reminder only for developers)

No response

Notice any changes of core modules (Reminder only for developers)

No response

Notice Possible Changes of Core Modules (Reminder only for developers)

No response

Additional Context

No response

Task list for Issue attackers (only for developers)

  • Review and understand the proposed feature and its importance.
  • Research on the existing solutions and relevant research articles/resources.
  • Discuss with the team to evaluate the feasibility of implementing the feature.
  • Create a design document outlining the proposed solution and implementation details.
  • Get feedback from the team on the design document.
  • Develop the feature following the agreed design.
  • Write unit tests and integration tests for the feature.
  • Update the documentation to include the new feature.
  • Perform code review and address any issues.
  • Merge the feature into the main branch.
  • Monitor for any issues or bugs reported by users after the feature is released.
  • Address any issues or bugs reported by users and continuously improve the feature.

Metadata

Metadata

Assignees

Labels

Features NeededThe features are indeed needed, and developers should have sophisticated knowledge

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions