Skip to content

Add GPU density-fitted CASCI and diagonal-Hessian CASSCF - #869

Open
wtpeter wants to merge 4 commits into
pyscf:masterfrom
wtpeter:feat/df-casscf
Open

Add GPU density-fitted CASCI and diagonal-Hessian CASSCF#869
wtpeter wants to merge 4 commits into
pyscf:masterfrom
wtpeter:feat/df-casscf

Conversation

@wtpeter

@wtpeter wtpeter commented Aug 24, 2026

Copy link
Copy Markdown
Contributor

Summary

This PR adds initial GPU support for density-fitted CASCI and CASSCF.

The main additions are:

  • An in-core GPU direct_spin1 FCI solver with GPU Hamiltonian contraction, Davidson diagonalization, and RDM construction.
  • GPU density-fitting AO-to-MO integral transformation through DF.ao2mo.
  • DFCASCI support for restricted HF and KS references.
  • A diagonal-Hessian DFCASSCF orbital optimizer.
  • Timing information for AO2MO, effective one-electron integrals, FCI, RDM construction, orbital derivatives, and orbital rotations.
  • Unit tests and a CPU/GPU DF-CASSCF comparison example.

The CASSCF orbital step uses a positive diagonal-Hessian model with a common level shift. The final orbital rotation parameters are limited by max_stepsize without increasing the level shift solely to enforce the step limit.

Current limitations

  • Only density-fitted CASCI/CASSCF is supported.
  • Only restricted HF/KS references are supported.
  • The GPU FCI solver is in-core only and raises MemoryError when GPU memory is insufficient.
  • CASSCF uses an approximate diagonal Hessian rather than the full augmented-Hessian optimizer.
  • Canonicalization, natural orbitals, frozen orbitals, symmetry-adapted FCI, and state-averaged CASSCF are not implemented.

This implementation is intended as a lightweight GPU CASSCF fallback rather than a replacement for the more robust second-order CPU optimizer.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant