Skip to content

Production resources and measured timings

python3 reproduce.py runs the complete 22-point BAFQMC/reference calculation with the paper's parameters, then generates the processed data and figures. The main-text figure comprises eight number-conserving U points and seven paired Delta points; the Supplemental Material adds seven U1 points. The default is one MPI rank, one numerical-library thread, and sequential cases. Plan for 12–24 hours, 16 GiB RAM with at least 8 GiB available, and 8 GiB of free disk on a recent desktop. The time is a planning range assembled from the measurements below; the whole integrated campaign has not been timed as one uninterrupted run. A slower processor or filesystem can take longer.

Use python3 reproduce.py --plan to display this budget without starting a job. The same estimate is printed before a production run. --threads N changes the numerical-library thread count; the one-thread timing range should not be divided by N because the stages scale differently. Use --scope main or --scope supplement to select the corresponding figure, and add --model to restrict the solver. The full campaign budget above includes all three scans.

Measured evidence

Calibration measurements used an AMD Ryzen 5 9600X, Linux/WSL2, Intel Fortran 2025.2.1/MKL, and one MPI rank/thread. Python ED used QuSpin 1.0.1, NumPy 2.4.4, SciPy 1.17.1, and Numba 0.65.1.

Calculation Measurement Peak resident memory
Paired BAFQMC, Delta=0.2, original beta=4 and Delta tau=0.01, 500 warmup iterations, 1000 bins 46.38 s elapsed 65 MiB
Paired ED, Delta=0.2, nmax=3, ncut=4, full 7297-state trace 40.40 s elapsed 3.01 GiB
Main-text number-conserving BAFQMC, U=0.25 (input U2), beta=4, original warmup, 1000 bins 5.47 s elapsed 61 MiB
Number-conserving BAFQMC, U1=-0.6, beta=1, original warmup, 1000 bins 2.29 s elapsed 61 MiB
Original seven paired 100000-bin production chains 12.20 h summed case elapsed time Not recorded
Historical supplemental attractive-density ED, six completed shells 243.5–289.3 s per point Not recorded

Multiplying the paired 1000-bin calibration by 100 gives a conservative single-point estimate of 1.29 h because it also multiplies warmup overhead. Seven such points give about 9 h. Together with the historical complete runs, 9–13 h is a useful budget for the paired BAFQMC stage on comparable hardware. The seven dense paired ED calculations add approximately 5–10 minutes. The two number-conserving calibrations give an approximately 1.3–1.7 hour budget for its 15 BAFQMC points. Number-conserving ED has varying block sizes; the main-text U=0.25, seven-shell point dominates that reference stage. Its historical successful checkpoint was written about 67.5 minutes after the recorded start. That historical thread count was not retained. Allow roughly 3–5 hours for the complete number-conserving part, including its ED stage. The recalculated paired ED point reproduced the archived four reference values to 5.3e-18 absolute accuracy.

Number-conserving ED memory

The archived interacting references stop after 4–7 particle-number shells. The largest required momentum block is at U=0.25 (input U1=0, U2=0.25): dimension 9075 in shell 7. Four complex128 matrices of this size occupy about 4.91 GiB; sparse operators, Python, and numerical-library workspace require additional memory. This is why the full campaign should have at least 8 GiB available, even though BAFQMC itself uses far less memory.

The free U1=U2=0 point is freshly evaluated with the analytic Bose distribution, as in the paper. It does not launch an unnecessary truncated many-body ED. The original convergence policies and particle cutoffs are preserved for the interacting points. Memory checks stop before an oversized dense solve; they do not silently lower the particle cutoff.

Storage and continuation

BAFQMC repeatedly appends to many small files. On WSL, run those writes in the Linux filesystem rather than /mnt/c. The production driver automatically creates Linux temporary scratch space and records its path in progress.json. Use --work-dir /path/on/fast/linux/storage to choose an empty scratch directory. Each completed case/stage is copied into the selected output directory. Raw outputs stay outside Git. Scratch and the copied outputs can coexist, so the disk budget includes both.

Every case/stage has a log, elapsed time, and file hashes. To continue an interrupted campaign:

python3 reproduce.py --resume --output benchmarks/paper/output/full-YYYYMMDD-HHMMSS

Use the same --scope, --model, --python-ed, and --threads as the original command. Completed stages are checked and skipped. An interrupted chain is moved aside in scratch and restarted from its original input; its partial samples are never appended to a new chain. --mode dqmc, --mode ed, and --mode analyze can also run the production stages separately with the same explicit --output.

After all results have been copied and checked, the scratch directory named in progress.json may be removed. Keep the final runs/, tables, environment record, and logs needed for your research.