Skip to content

v1.0.0

Latest

Choose a tag to compare

@gauravharsha gauravharsha released this 03 Sep 20:32
· 1 commit to main since this release

v1.0.0 — Space Symmetries in MBPT and SEET

Summary

This is the first stable release of the 1.0 line and the culmination of the v1.0.0-alpha series. The headline change is full symmetry adaptation across the mean-field and post-HF pipeline: space-group representations are now propagated through the k-mesh on the scalar side, and the relativistic (X2C/x2c1e) path carries the matching double-group SU(2) lift so spinor quantities transform correctly across the irreducible Brillouin zone.

The rewritten k-point symmetry engine is not just more correct, it is substantially faster on CPU (up to ~4× on 4x4x4 mesh, with even higher speed-up for denser meshes), and it removes a symmetry-contamination failure mode that could make self-consistent GW diverge. Two long-standing correctness issues (the X2C CPU kernel and black-phosphorus symmetry breaking) are fixed and now verified against a public benchmark suite (see Validation & benchmarks).

Highlights

  • Symmetry adaptation. Space-group representations on the scalar path and the double-group SU(2) lift on the X2C/x2c1e path, applied consistently in the HF, GW, and GF2 kernels.
  • Faster CPU k-point handling. The rewritten symmetry code cuts CPU wall-clock by ~1.4–4.2× across the benchmark solids, with the gain growing with the number of k-points in the star (Silicon 4×4×4: 4.18× in GW total, 4.25× in GF2 total, at identical energies). Single-k molecular cases show no speedup, as expected.
  • X2C CPU kernel fixed. The all-electron full-X2C (spinor) relativistic path was broken on the v0.3.2 CPU kernel; the GPU kernel was already correct. v1.0.0 fixes the CPU path so it matches GPU.
  • SEET preprocessing rewrite. kstruct-driven orthogonalization with full Löwdin / symmetric-Löwdin / MO / natural-orbital coverage (Löwdin variants supported for the X2C spinor path), backed by an HF/GW/GF2 orthogonalization basis-invariance regression test.
  • Release provenance. All executables now report the build version via --version, driven by GREEN_RELEASE.txt.

Validation & benchmarks

v1.0.0 was validated against the previous v0.3.2 line on the public green-benchmarks HPC regression suite, on both CPU and GPU. Full write-up and numbers:

Three findings:

  1. Same physics, faster. Total energies (ehf, e1b, ecorr) from v0.3.2 and v1.0.0 agree to the GW/SCF convergence threshold (≲1e-7 Ha) on both CPU and GPU — while v1.0.0's CPU path runs up to ~4× faster on the 4x4x4 mesh. v1.0.0 reproduces v0.3.2 wherever v0.3.2 was correct, so the two fixes below are genuine, not numerical drift.

  2. Germanium — X2C CPU kernel bug, fixed. On v0.3.2 the CPU X2C (spinor) kernel produced non-physical energies (gw/ehf off by ~215 Ha, no band structure); the GPU kernel was already correct. v1.0.0's CPU result now matches GPU. (Scalar-relativistic sfx2c1e was not affected.)

  3. Black phosphorus — symmetry contamination resolved. In a self-consistent GW run on black-phosphorous (Cmce, #64; orthorhombic, non-symmorphic), v0.3.2's Green's function accumulates growing symmetry-breaking error and the total energy diverges (~-52.5 Ha → +20 Ha around iteration 12–14). v1.0.0 stays flat and converges monotonically to ~2e-6 Ha. This is the clearest single demonstration of the release's value.

    black_p MBPT convergence

Bug fixes

  • Count the Madelung/Ewald correction once per k-point in the X2C HF kernel.
  • Distribute the GW self-energy tau over the solver object's context.
  • Optimize X2C HF exchange and fix an MPI_Bcast namespace issue; broadcast the self-energy result to all ranks after population on rank 0.
  • Inchworm impurity solver: don't double-count μ when extracting the self-energy.
  • Reset timing statistics after each kernel/solver run so per-iteration timings no longer accumulate (HF, GW, GF2 CPU paths).

What's Changed

New Contributors

Full Changelog: v0.3.1...v1.0.0