Skip to content

This issue was moved to a discussion.

You can continue the conversation there. Go to discussion →

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature: LOBPCG the new eigensolver #5089

Closed
14 tasks
Cstandardlib opened this issue Sep 12, 2024 · 0 comments
Closed
14 tasks

Feature: LOBPCG the new eigensolver #5089

Cstandardlib opened this issue Sep 12, 2024 · 0 comments
Assignees
Labels
Features Needed The features are indeed needed, and developers should have sophisticated knowledge

Comments

@Cstandardlib
Copy link
Collaborator

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.
@Cstandardlib Cstandardlib self-assigned this Sep 12, 2024
@mohanchen mohanchen added the Features Needed The features are indeed needed, and developers should have sophisticated knowledge label Sep 14, 2024
@deepmodeling deepmodeling locked and limited conversation to collaborators Oct 17, 2024
@mohanchen mohanchen converted this issue into discussion #5265 Oct 17, 2024

This issue was moved to a discussion.

You can continue the conversation there. Go to discussion →

Labels
Features Needed The features are indeed needed, and developers should have sophisticated knowledge
Projects
None yet
Development

No branches or pull requests

2 participants