Skip to content

Refactor cheq Core for Lossless Performance Gains #13

@TKanX

Description

@TKanX

Description:

Focus on internal, result-identical optimizations to make the QEq core faster without changing outputs or user-facing behavior. We will eliminate redundant work in matrix assembly, reuse allocations, and keep parallelism simple via Rayon/faer defaults. No approximations or configurable “fast” modes in this issue—strict numerical equivalence is required.

Tasks:

  • Matrix Build Refactor (Lossless)

    • Precompute geometry-dependent terms (distances/J_ij) and build a base matrix once; per-iteration only patch hydrogen diagonals.
    • Reuse matrix/vector buffers (workspace) across iterations to avoid repeated allocations.
  • Parallel-Friendly Fill (Deterministic)

    • Use Rayon global pool for the O(N²) fill in a race-free, deterministic manner; provide a clean serial fallback if Rayon is disabled.
    • Keep faer defaults; note how to disable global parallelism for users who need it (docs comment only, no behavior change).
  • Validation

    • Confirm strict equality (within ULP) vs current outputs on regression cases.
    • Add/adjust tests for symmetry, total charge conservation, and unchanged results in strict mode.
    • Add a lightweight benchmark (criterion or timing harness) for N≈10/100/500 to document speedups.

Metadata

Metadata

Assignees

Labels

enhancement ✨New feature or requestperformance ⚡Performance improvements and code optimizations

Type

Projects

Status

Done

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions