Skip to content

Commit bd8291d

Browse files
committed
v0.6.3: BP-OSD convergence cap, AVX2 SIMD, Blossom Rayon, DecoderPool, decode_mmap, DecodeResult, Workbench
- BP-OSD: decode_timed(max_latency_ms), 50-iter cap, early-exit on belief convergence - CPU batch: AVX2 SIMD transpose+gather (1.1M shots/s via runtime dispatch) - Blossom: pre-allocated adjacency, intra-decode Rayon at n>40 defects - DecoderPool: multi-process pool with auto-Rayon on Windows - New public API: get_decoder, clear_decoder_cache, decode_mmap, DecodeResult, decode_with_diagnostics, Workbench - FastUnionFindDecoder consistently faster (updated docstring) - Feature gates: run_mcp_server behind grpc, OpenCLBatchDecoder behind opencl - Cleanup: removed apply_fixes.py, fix_empty_msg.py, stale patches
1 parent 69f6f76 commit bd8291d

36 files changed

Lines changed: 2657 additions & 1003 deletions

.github/workflows/python-package.yml

Whitespace-only changes.

CHANGELOG.md

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,30 @@ environment so report figures trace back to a specific build.
77

88
## [Unreleased]
99

10+
## [0.6.3] - 2026-07-10
11+
12+
### Added
13+
- **BP-OSD convergence cap**: 50-iteration max, early-exit on belief convergence (max |Δ| < 1e-6), `decode_timed(max_latency_ms)` for tail-latency control.
14+
- **AVX2 SIMD transpose + gather**: CPU batch decoder auto-detects AVX2 via `is_x86_feature_detected!` — 1.1M shots/s on surface d=3, batch=32768.
15+
- **Blossom intra-decode Rayon parallelism**: k-NN search parallelized via `into_par_iter()` when n_defects > 40.
16+
- **DecoderPool**: Multi-process batch decoding with auto-Rayon fallback on Windows (50–500× faster than multi-process IPC).
17+
- **Cached decoder factory**: `get_decoder()` / `clear_decoder_cache()` / `get_decoder_pool()` — zero construction cost after first call.
18+
- **`decode_mmap`**: Out-of-core decoding via memory-mapped NumPy arrays.
19+
- **`DecodeResult` / `decode_with_diagnostics`**: Structured decode results with per-shot diagnostic metadata.
20+
- **`Workbench`**: High-level orchestration for multi-decoder comparison and benchmarking.
21+
- **Comprehensive test suite**: `test_comprehensive_suite.py` — 200+ scenario tests across all decoder families.
22+
23+
### Changed
24+
- `FastUnionFindDecoder` docstring updated: "Consistently faster than UnionFindDecoder on surface and repetition codes (1.1M shots/s)".
25+
- `run_mcp_server` gated behind `grpc` feature; `OpenCLBatchDecoder`/`opencl_is_available` gated behind `opencl`.
26+
- CPUBatch `batch_decode()` now calls SIMD path by default; `batch_decode_par()` for explicit Rayon variant.
27+
- Bumped package to 0.6.3 across all metadata files.
28+
29+
### Fixed
30+
- `bposd.py` line 118: CRW consistency bug in belief tracking.
31+
- DecoderPool on Windows: auto-selects single-process Rayon path instead of broken multi-process IPC.
32+
- Memory layout optimizations: aligned Vecs, pre-reserved capacity in Blossom construction.
33+
1034
## [0.6.2] - 2026-07-06
1135

1236
### Added

CITATION.cff

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ authors:
66
- family-names: Lessard
77
given-names: Guillaume
88
affiliation: iD01t Productions
9-
version: 0.6.2
10-
date-released: 2026-07-06
9+
version: 0.6.3
10+
date-released: 2026-07-10
1111
url: https://www.qector.store
1212
repository-code: https://github.com/GuillaumeLessard/qector-decoder
1313
identifiers:

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "qector_decoder_v3"
3-
version = "0.6.2"
3+
version = "0.6.3"
44
edition = "2021"
55
authors = ["Guillaume Lessard / iD01t Productions <guiliguili2705@gmail.com>"]
66
description = "Source-available Rust QEC decoder core (Union-Find, exact polynomial MWPM/Blossom, Sparse Blossom, BP-OSD) with CPU/CUDA/OpenCL batch decoding and PyO3 bindings"

INSTALL.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# Installation Guide - QECTOR Decoder v0.6.2
1+
# Installation Guide - QECTOR Decoder v0.6.3
22

33
The current repository does **not** include `install.py`. Use the source build path below.
44

PYPI_README.md

Lines changed: 41 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,16 @@
22

33
**Source-available Rust/Python quantum error correction decoding platform.**
44

5-
**v0.6.2 highlights**: hardened Union-Find (`UnionFindDecoder`, `FastUnionFindDecoder`) with explicit rejection of hypergraphs (qubits in >2 checks) + full input validation. No more silent wrong results.
6-
75
QECTOR Decoder v3 provides a Python package backed by a native Rust extension for quantum error correction research and validation workflows. It includes PyMatching-compatible MWPM validation, Union-Find decoding, belief-matching experiments, BP-OSD/qLDPC workflows, batch decoding, and optional GPU backend checks where the release build and target machine support them.
86

9-
Website: https://www.qector.store
10-
Repository: https://github.com/GuillaumeLessard/qector-decoder
11-
Commercial licensing: https://www.qector.store
7+
**Companion projects**:
8+
9+
- The public package snapshot focuses on the decoder library, Python API, validation suite, and benchmark evidence.
10+
- Additional desktop, automation, and documentation tooling may be distributed separately from this checkout.
11+
12+
Website: [https://www.qector.store](https://www.qector.store)
13+
Repository: [https://github.com/GuillaumeLessard/qector-decoder](https://github.com/GuillaumeLessard/qector-decoder)
14+
Commercial licensing: [https://www.qector.store](https://www.qector.store)
1215

1316
---
1417

@@ -21,12 +24,10 @@ pip install qector-decoder-v3
2124
Supported package target for the public release workflow:
2225

2326
- Python 3.9 to 3.13
24-
- Linux x86_64 wheels (manylinux)
27+
- Linux x86_64 wheels
2528
- Windows x64 wheels
26-
- macOS Apple Silicon arm64 wheels
27-
- Source distribution (sdist) for custom/source builds
28-
29-
macOS Intel (x86_64) wheels are not included in v0.6.2 due to extremely long GitHub Actions runner queues (they will be added in a follow-up).
29+
- macOS arm64 wheels
30+
- Source distribution for custom/source builds
3031

3132
Optional research and validation extras:
3233

@@ -101,7 +102,7 @@ decoder = BlossomDecoder(checks, n_qubits)
101102
## Included decoder families
102103

103104
| Module | Primary use | Status |
104-
|---|---|---|
105+
| --- | --- | --- |
105106
| `UnionFindDecoder` | Fast approximate decoding | Stable public API |
106107
| `FastUnionFindDecoder` | Optimized Union-Find path | Stable public API |
107108
| `BlossomDecoder` | Exact MWPM / PyMatching-parity validation | Stable public API |
@@ -111,6 +112,14 @@ decoder = BlossomDecoder(checks, n_qubits)
111112
| `BatchDecoder` / `CPUBatchDecoder` | CPU Monte Carlo sweeps | Stable public API |
112113
| `CUDABatchDecoder` | CUDA batch decoding | Runtime/build dependent |
113114
| `OpenCLBatchDecoder` | OpenCL batch decoding | Runtime/build dependent |
115+
| `AutoDecoder` | CPU/GPU backend calibration | Experimental |
116+
| `PredecodedDecoder` | Easy-syndrome prefiltering | Experimental |
117+
| `DecoderPool` | Multi-process batch decoding | Stable public API |
118+
| `get_decoder` | Cached decoder factory | Stable public API |
119+
| `decode_mmap` | Out-of-core decoding via memmap | Stable public API |
120+
| `DecodeResult` | Structured decode result | Stable public API |
121+
| `decode_with_diagnostics` | Decode with diagnostics | Stable public API |
122+
| `Workbench` | High-level orchestration | Stable public API |
114123
| `stim_compat` | Stim circuit and DEM conversion | Stable utility |
115124
| `sinter_compat` | Sinter custom decoder integration | Stable utility |
116125
| `rest_api` | Local decoding service | Local/partner review only |
@@ -135,10 +144,11 @@ Important boundaries:
135144
- GPU availability and performance depend on wheel build features, drivers, hardware, and runtime checks.
136145
- OpenCL support must be confirmed on the target machine or built under the appropriate licensed/custom configuration.
137146
- REST/API surfaces are for local experiments or controlled review unless separately hardened.
147+
- **v0.6.3**: CPU batch decoder now reaches 1.1M shots/s via AVX2 SIMD transpose. BP-OSD adds `decode_timed` with convergence cap. Blossom intra-decode Rayon parallelism. DecoderPool auto-Rayon on Windows.
138148

139149
Full methodology, reproducibility notes, and benchmark artifacts are in the GitHub repository:
140150

141-
https://github.com/GuillaumeLessard/qector-decoder
151+
[https://github.com/GuillaumeLessard/qector-decoder](https://github.com/GuillaumeLessard/qector-decoder)
142152

143153
---
144154

@@ -155,6 +165,22 @@ Do this before making any hardware-specific performance claim.
155165

156166
---
157167

168+
## v0.6.3 Highlights
169+
170+
| Feature | Description |
171+
| --- | --- |
172+
| BP-OSD `decode_timed` | Wall-clock deadline for BP iterations; falls back to hard-decision on timeout |
173+
| AVX2 runtime dispatch | CPU batch decoder auto-detects AVX2 support and uses SIMD transpose for 1.1M shots/s |
174+
| Blossom intra-decode parallelism | Rayon-parallelized Blossom matching for multi-shot batches |
175+
| DecoderPool Windows fix | Auto-Rayon fallback on Windows when multi-process pool is unavailable |
176+
| `DecoderPool` | Multi-process batch decoding with automatic worker management |
177+
| `get_decoder` / `clear_decoder_cache` | Cached decoder factory — zero construction cost after first call |
178+
| `decode_mmap` | Out-of-core decoding via memory-mapped NumPy arrays |
179+
| `DecodeResult` / `decode_with_diagnostics` | Structured decode results with per-shot diagnostic metadata |
180+
| `Workbench` | High-level orchestration for multi-decoder comparison and benchmarking |
181+
182+
---
183+
158184
## Licensing
159185

160186
QECTOR Decoder v3 is source-available.
@@ -163,11 +189,11 @@ Personal, academic, educational and non-commercial research use is allowed under
163189

164190
Commercial licensing:
165191

166-
https://www.qector.store
192+
[https://www.qector.store](https://www.qector.store)
167193

168194
Contact:
169195

170-
admin@qector.store
196+
<admin@qector.store>
171197

172198
---
173199

@@ -178,7 +204,7 @@ admin@qector.store
178204
author = {Guillaume Lessard},
179205
title = {{QECTOR Decoder v3}: Rust/Python Quantum Error Correction Decoding Platform},
180206
year = {2026},
181-
version = {0.6.2},
207+
version = {0.6.3},
182208
url = {https://www.qector.store},
183209
note = {Source-available. Commercial license required for commercial use.}
184210
}

0 commit comments

Comments
 (0)