Skip to content

Optimize fermions#1713

Merged
mtfishman merged 6 commits into
mainfrom
mf/optimize-fermions
Mar 7, 2026
Merged

Optimize fermions#1713
mtfishman merged 6 commits into
mainfrom
mf/optimize-fermions

Conversation

@mtfishman

@mtfishman mtfishman commented Mar 7, 2026

Copy link
Copy Markdown
Member

Related to #1712, these are all of the optimizations that AI came up with. This version removes all extra allocations in the fermion code.

Closes #1709, closes #1712.

@mtfishman mtfishman marked this pull request as draft March 7, 2026 20:48
@mtfishman mtfishman marked this pull request as ready for review March 7, 2026 21:30
@mtfishman mtfishman changed the title [WIP] Optimize fermions Optimize fermions Mar 7, 2026
@mtfishman

mtfishman commented Mar 7, 2026

Copy link
Copy Markdown
Member Author

The time overhead is now down to about 5-10% for a Hubbard model DMRG calculation on a length 10 chain with 6 sweeps ramping up to a bond dimension of 200, and the allocation overhead is minimal. The overhead decreases with larger bond dimensions (or more specifically, larger block dimensions) and system sizes.

Some example runs for that case:

julia> @time mps_dmrg_bench(; use_auto_fermion = false)
mps.maxlinkdim(H_mps) = 6
After sweep 1 energy=-11.969543558445253  maxlinkdim=10 maxerr=1.49E-03 time=0.034
After sweep 2 energy=-12.116369527016067  maxlinkdim=20 maxerr=1.37E-04 time=0.128
After sweep 3 energy=-12.118011427386474  maxlinkdim=40 maxerr=1.14E-05 time=0.213
After sweep 4 energy=-12.118221850986792  maxlinkdim=80 maxerr=5.02E-08 time=0.260
After sweep 5 energy=-12.118222536641227  maxlinkdim=160 maxerr=2.75E-10 time=0.323
After sweep 6 energy=-12.118222538380001  maxlinkdim=200 maxerr=9.94E-11 time=0.359
DMRG energy = -12.118222538380001
  1.325985 seconds (14.83 M allocations: 2.267 GiB, 12.80% gc time)

julia> @time mps_dmrg_bench(; use_auto_fermion = true)
mps.maxlinkdim(H_mps) = 6
After sweep 1 energy=-11.96954355844525  maxlinkdim=10 maxerr=1.49E-03 time=0.031
After sweep 2 energy=-12.116369527016055  maxlinkdim=20 maxerr=1.37E-04 time=0.135
After sweep 3 energy=-12.118011427386506  maxlinkdim=40 maxerr=1.14E-05 time=0.231
After sweep 4 energy=-12.118221850986796  maxlinkdim=80 maxerr=5.02E-08 time=0.275
After sweep 5 energy=-12.11822253664123  maxlinkdim=160 maxerr=2.75E-10 time=0.341
After sweep 6 energy=-12.118222538379994  maxlinkdim=200 maxerr=9.94E-11 time=0.373
DMRG energy = -12.118222538379994
  1.392076 seconds (14.83 M allocations: 2.298 GiB, 10.65% gc time)

@mtfishman mtfishman merged commit ea9d21c into main Mar 7, 2026
15 of 16 checks passed
@mtfishman mtfishman deleted the mf/optimize-fermions branch March 7, 2026 23:41
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