This repo contains the source codes of the paper Toward Low-latency Iterative Decoding of QLDPC Codes Under Circuit-Level Noise.
Update [May-13-2025]
- fix typos, update BP+OSD import/calls to ldpc_v2, add CUDA-Q QEC GPU decoder into
Sliding Window OSD.ipynb - SHYPS memory experiment in
SHPYS.ipynb - FAQ page
- make sliding window part more reusable
- update the BP part from GDG to LDPC v2, improve code-capacity noise multi-thread GDG implementation
- let MAC users install from the directory
- CUDA implementation of GDG
- logical Clifford synthesis compiler
- SHYPS logical experiment
Please checkout the FAQ page for installation!
IBM.ipynbaims to reproduce the results in Figure 3 of the IBM paper arXiv v1 (they updated their numerical results in v2).N72circuit.svgis the visualization of the noiseless, single syndrome cycle Stim circuit of their Figure 7 for the [[72,12,6]] code.Round Analysis.ipynbtakes a closer look at the parity check matrix, explains the basic concept of sliding window decoding and show how the windows are extracted.Sliding Window OSD.ipynbcontains the complete pipleline of code/circuit creation, window extraction and BP+OSD is used to decode each window.Data noise.ipynbintroduces basic usage of GDG, and is for producing Figure 4 of our paper.Sliding Window GDG.ipynbuses GDG on each window for decoding, for Figure 3 and 7.Syndrome code.ipynbis related to Appendix B.Misc.ipynbis not related to our paper, but demonstrates my implementation of the following papers: BP4+OSD, 2BGA codes, CAMEL, BPGD.
src
├── include
│ └── bpgd.cpp # base class for handling decimation, multi-thread GDG
│
├── bp_guessing_decoder.pyx # single-thread GDG, it shares interface with the multi-thread version
├── osd_window.pyx # OSD on shortened window PCM
├── codes_q.py # code constructions
├── build_circuit.py # build Stim circuit for BB codes
└── simulation.py # simulation framework for data qubit noise