• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

Qiskit / qiskit-fermions / 33395784440
98%

Build:
DEFAULT BRANCH: main
Ran 31 Aug 2026 01:18PM UTC
Jobs 1
Files 104
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

31 Aug 2026 01:13PM UTC coverage: 98.07% (+0.02%) from 98.046%
33395784440

push

github

web-flow
fix: bound the memory used by the Jordan-Wigner mapper (#297)

The per-thread accumulators were grown with `qk_obs_scaled_add_inplace` and
combined with `qk_obs_add_inplace`, neither of which deduplicates, so they held
every Pauli term the mapper *emitted* rather than every *distinct* one. For an
electronic-structure Hamiltonian that gap is asymptotic rather than constant --
each two-body term maps onto 16 Pauli products, and terms sharing a mode set
produce the same strings -- so mapping a large operator could exhaust memory
while the simplified result was orders of magnitude smaller.

The accumulators are now merged once they have grown past their previously
merged size by `GROWTH_FACTOR`. The trigger is deliberately relative rather than
an absolute size: a fixed limit is tripped by every append once the distinct
content exceeds it, degenerating into merging continuously. Because a merge
leaves exactly the distinct content behind and the next trigger is recomputed
from that *measured* size, the peak is `GROWTH_FACTOR` times the distinct
content -- proportional to the operator being built, whatever the duplication.

The result is also merged once before it is returned. The combine stops as soon
as the trigger is satisfied, so without this the number of terms handed back
depended on how the work happened to be split across threads.

Peak memory still grows with the thread count, because terms are handed to
whichever worker is free rather than partitioned by the Pauli strings they
produce, so every accumulator ends up holding roughly a full copy of the mapped
operator. That is the cost of mapping in parallel, and `RAYON_NUM_THREADS` is
the control for it.

The mapped operator is unchanged throughout: canonicalization only merges
duplicate terms.

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>

182 of 182 new or added lines in 1 file covered. (100.0%)

12345 of 12588 relevant lines covered (98.07%)

521483.98 hits per line

Jobs
ID Job ID Ran Files Coverage
1 33395784440.1 31 Aug 2026 01:18PM UTC 104
98.07
GitHub Action Run
Source Files on build 33395784440
  • Tree
  • List 104
  • Changed 2
  • Source Changed 2
  • Coverage Changed 2
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #33395784440
  • ecdcc8ae on github
  • Prev Build on main (#33368664568)
  • Next Build on main (#33601888966)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc