From 4250f2a903fe81a3a41542892fc42474bddc9a45 Mon Sep 17 00:00:00 2001 From: Andreas Tsouchlos Date: Wed, 15 Apr 2026 18:40:29 +0200 Subject: [PATCH] Add sliding-window decoding slide --- .../gen_sliding_window_overlap_image.py | 195 +++ src/final_presentation/main.tex | 1408 ++++++++--------- src/final_presentation/res/72_bb_dem.pdf | Bin 0 -> 2717 bytes .../res/72_bb_dem_no_windows.pdf | Bin 0 -> 2336 bytes 4 files changed, 834 insertions(+), 769 deletions(-) create mode 100644 src/final_presentation/gen_sliding_window_overlap_image.py create mode 100644 src/final_presentation/res/72_bb_dem.pdf create mode 100644 src/final_presentation/res/72_bb_dem_no_windows.pdf diff --git a/src/final_presentation/gen_sliding_window_overlap_image.py b/src/final_presentation/gen_sliding_window_overlap_image.py new file mode 100644 index 0000000..e262d10 --- /dev/null +++ b/src/final_presentation/gen_sliding_window_overlap_image.py @@ -0,0 +1,195 @@ +import warnings +from typing import Sequence + +import numpy as np +import matplotlib.pyplot as plt +import matplotlib.patches as pt +from scipy.sparse import csc_matrix + +from quits.decoder import spacetime +from quits.decoder import detector_error_model_to_matrix + +from quits.qldpc_code import BbCode +from quits import ErrorModel, CircuitBuildOptions + + +def build_bb_circuit(N: int, num_rounds: int, p: float): + # fmt: off + if N == 72: + code = BbCode(l=6, m=6, A_x_pows=[3], A_y_pows=[1, 2], B_x_pows=[1, 2], B_y_pows=[3]) + elif N == 90: + code = BbCode(l=15, m=3, A_x_pows=[9], A_y_pows=[1, 2], B_x_pows=[2, 7], B_y_pows=[0]) + elif N == 108: + code = BbCode(l=9, m=6, A_x_pows=[3], A_y_pows=[1, 2], B_x_pows=[1, 2], B_y_pows=[3]) + elif N == 144: + code = BbCode(l=12, m=6, A_x_pows=[3], A_y_pows=[1, 2], B_x_pows=[1, 2], B_y_pows=[3]) + elif N == 288: + code = BbCode(l=12, m=12, A_x_pows=[3], A_y_pows=[2, 7], B_x_pows=[1, 2], B_y_pows=[3]) + elif N == 360: + code = BbCode(l=30, m=6, A_x_pows=[9], A_y_pows=[1, 2], B_x_pows=[25, 26], B_y_pows=[3]) + elif N == 756: + code = BbCode(l=21, m=18, A_x_pows=[3], A_y_pows=[10, 17], B_x_pows=[3, 19], B_y_pows=[5]) + else: + assert False, "Unsupported code size" + # fmt: on + + circuit = code.build_circuit( + error_model=ErrorModel(p, p, p, p), + num_rounds=num_rounds, + basis="Z", + circuit_build_options=CircuitBuildOptions(), + seed=1, + ) + + return code, circuit + + + + +def compute_num_windows(num_rounds: int, W: int, F: int): + """ + This was extracted from the function `sliding_window_circuit_mem()` of + `quits.decoder`. + """ + if 2 + num_rounds - W >= 0: + # num_cor_rounds = num of windows before the last window + num_cor_rounds = (2 + num_rounds - W) // F + + # we can slide one more window if the remaining rounds > W + if (2 + num_rounds - W) % F != 0: + num_cor_rounds += 1 + else: + num_cor_rounds = 0 + warnings.warn( + "Window size larger than the syndrome extraction rounds: Doing" + " whole history correction" + ) + + return num_cor_rounds + 1 + + +def get_overlap_info( + col_start_indices: Sequence, W: int, F: int, m: int, win_check_set: Sequence +): + def i_B(k: int): + return col_start_indices[k] + + def i_E(k: int): + return i_B(k) + win_check_set[k].shape[1] + + def j_B(k: int): + return F * (k) * m + + def j_E(k: int): + return (F * k + W) * m + + num_windows = len(win_check_set) + + overlap_begin_positions = [] + for k in range(num_windows - 1): + overlap_begin_positions.append((j_B(k + 1) - j_B(k), i_B(k + 1) - i_B(k))) + + overlap_end_positions = [] + for k in range(1, num_windows): + overlap_end_positions.append((j_E(k - 1) - j_B(k), i_E(k - 1) - i_B(k))) + + return overlap_begin_positions, overlap_end_positions + + +def reconstruct_window_start_col_indices(win_observable_set: Sequence): + """ + This function effectively just reconstructs the `col_min` values of each + window, from the `spacetime()` function of `quits.decoder`. + """ + num_windows = len(win_observable_set) + + col_mins = [0] + + for k in range(num_windows - 1): + col_mins.append(col_mins[-1] + win_observable_set[k].shape[1]) + + return col_mins + + + + +num_rounds = 12 +N = 72 +p = 0.005 +W = 5 +F = 3 + +# +# Get detector error matrix and split it into windows +# + +code, circuit = build_bb_circuit(N, num_rounds, p) +model = circuit.detector_error_model(decompose_errors=False) +check_matrix, observable_matrix, priors = detector_error_model_to_matrix(model) + +num_windows = compute_num_windows(num_rounds, W, F) +win_check_set, win_observable_set, win_priors_set, win_update = spacetime( + circuit, code.hz, W, F, num_windows - 1 +) + +col_start_indices = reconstruct_window_start_col_indices(win_observable_set) + +# +# Paint rectangles +# + +custom_colors = [ + (162/255, 34/255, 35/255), + (223/255, 155/255, 27/255), + (70/255, 100/255, 170/255), + (163/255, 16/255, 124/255), +] + +fig, ax = plt.subplots(1, 1, figsize=(10, 10)) +ax.spy(check_matrix.toarray()) + +colors = [custom_colors[i % len(custom_colors)] for i in range(num_windows)] + +m = code.hz.shape[0] +# for win_idx in range(num_windows): +# col_start_idx = col_start_indices[win_idx] +# row_start_idx = win_idx * F * m +# +# ax.add_patch( +# pt.Rectangle( +# (col_start_idx, row_start_idx), +# win_check_set[win_idx].shape[1], +# win_check_set[win_idx].shape[0], +# fc="none", +# ec=colors[win_idx], +# ) +# ) + +# overlap_begin_positions, overlap_end_positions = get_overlap_info( +# col_start_indices, W, F, m, win_check_set +# ) + +# for k in range(len(win_check_set) - 1): +# ax.add_patch( +# pt.Rectangle( +# ( +# overlap_begin_positions[k][1] + col_start_indices[k], +# overlap_begin_positions[k][0] + F * k * m, +# ), +# win_check_set[k].shape[1] - overlap_begin_positions[k][1], +# win_check_set[k].shape[0] - overlap_begin_positions[k][0], +# fc=colors[k], +# ec=colors[k], +# alpha=0.3, +# ) +# ) + + +ax.set_xticks([]) +ax.set_yticks([]) + +fig.savefig('72_bb_dem_no_windows.pdf', bbox_inches='tight') + +plt.show() + + diff --git a/src/final_presentation/main.tex b/src/final_presentation/main.tex index 775f03a..949246d 100644 --- a/src/final_presentation/main.tex +++ b/src/final_presentation/main.tex @@ -337,7 +337,7 @@ \begin{frame} \frametitle{Peculiarities of the Quantum Setting} - \vspace*{-10mm} + \vspace*{-17mm} % Related interesting stuff % - No cloning theorem -> Not replication of state, protection @@ -399,6 +399,8 @@ \end{subfigure} \end{figure} + \vspace*{-5mm} + \begin{itemize} \visible<2->{ \item Measuring the qubits directly destroys superpositions @@ -406,14 +408,51 @@ $\rightarrow$ Use syndrome for decoding \citereferencemanual{NC10} } - \visible<3>{ - \item Superposition $\rightarrow$ Multiple solutions to the - decoding problem - (\schlagwort{quantum degeneracy}) - \citereferencemanual{RWB$^+$20}} \end{itemize} - \vspace*{12mm} + \vspace*{-5mm} + + \begin{figure}[H] + \centering + + \begin{minipage}{0.25\textwidth} + \centering + \visible<2->{ + \begin{align*} + \bm{H} \bm{y}^\text{T} = \bm{H} \bm{e}^\text{T} = \bm{s} + \end{align*} + } + \end{minipage}% + \hspace*{30mm} + \begin{minipage}{0.12\textwidth} + \centering + \visible<3->{ + \begin{align*} + \bm{H} = + \begin{pmatrix} + 1 & 1 & 0 \\ + 0 & 1 & 1 + \end{pmatrix} + \end{align*} + } + \end{minipage} + \begin{minipage}{0.3\textwidth} + \centering + \visible<3->{ + % tex-fmt: off + \begin{quantikz}%[row sep=4mm, column sep=4mm] + & \ctrl{3} & & & & & \\ + \lstick{$\ket{\psi}$} & & \ctrl{2} & \ctrl{3} & & & \\ + & & & & \ctrl{2} & & \\ + \lstick{$\ket{0}_{\text{A}_1}$} & \targ{} & \targ{} & & & \meter{} & \setwiretype{c} \\ + \lstick{$\ket{0}_{\text{A}_2}$} & & & \targ{} & \targ{} & \meter{} & \setwiretype{c} + \end{quantikz} + % tex-fmt: on + } + \end{minipage}% + \end{figure} + + \vspace*{3mm} \addreferencesmanual {Rof19}{ @@ -424,120 +463,111 @@ M. A. Nielsen and I. L. Chuang, ``Quantum Computation and Quantum Information'', \emph{Cambridge University Press}, 2010. } - {RWB$^+$20}{ - J. Roffe et al., ``Decoding across the quantum low-density - parity-check code landscape,'' \emph{Physical Review Research}, 2020. - } \stopreferencesmanual \end{frame} \begin{frame} - \frametitle{Stabilizer and Calderbank Shor Steane Codes} + \frametitle{Evaluating the Decoding Performance} - \vspace*{-5mm} - - % Related interesting stuff - % - Using stabilizers to describe quantum codes is a bit like - % using parity check equations to describe classical codes - % -> stabilizer codes are the quantum analog of binary linear codes - % - For CSS codes, "the parity checks for the X errors and the - % parity checks for the Z errors can be represented independently - % of one another" + \vspace*{-15mm} \begin{itemize} - \item Stabilizer codes \citereferencemanual{NC10} - \begin{itemize} - \item Implicitly defined using \schlagwort{stabilizer - generators} - \item Can be represented using parity check matrices - \item Quantum analog of linear block codes - \end{itemize} - \vspace*{10mm} - \visible<2->{ - \item \Acf{css} codes \citereferencemanual{NC10} - \begin{itemize} - \item Subset of stabilizer codes - \item Able to correct $\X$ and $\Z$ errors independently - \item Described using two separate parity check - matrices $\bm{H}_X$ and $\bm{H}_Z$ - \item Can be constructed from two binary linear codes - $\mathcal{C}_1 \left[ n, k_1 \right]$ and - $\mathcal{C}_2 \left[ n, k_2 \right]$ with - $\mathcal{C}_2 \subset \mathcal{C}_1$ - \end{itemize} - } + \item Quantum degeneracy \citereferencemanual{RWB$^+$20}, information + stored in correlations \\ + $\rightarrow$ Consider \schlagwort{\acl{ler}} (LER) \end{itemize} - \vspace*{20mm} - - \addreferencesmanual - {NC10}{ - M. A. Nielsen and I. L. Chuang, ``Quantum Computation and - Quantum Information'', \emph{Cambridge University Press}, 2010. - } - \stopreferencesmanual -\end{frame} - -% TODO: Do I need to show what the syndrome extraction circuitry for -% Z errors looks like? -\begin{frame} - \frametitle{Syndrome Extraction Circuits} - - \vspace*{-10mm} - - \begin{itemize} - \item Entangle the state $\ket{\psi}$ with - \schlagwort{ancilla qubits} to perform syndrome - measurements \citereferencemanual{NC10} - \item Example: The 3-qubit repetition code for $\X$ errors - \end{itemize} - - \vspace*{5mm} + \vspace*{3mm} \begin{figure}[H] - \centering - \hspace*{-25mm} - \begin{subfigure}{0.4\textwidth} - \centering - \begin{align*} - \bm{H} = - \begin{pmatrix} - 1 & 1 & 0 \\ - 0 & 1 & 1 - \end{pmatrix} - \end{align*} + \tikzset{ + block/.style={ + draw, rectangle, + fill = kit-blue!25, + minimum height=15mm, + } + } + \scalebox{0.75}{ + \begin{tikzpicture}[node distance=15mm and 20mm, line width=1pt] + % tex-fmt: off + \node[block, minimum width=45mm] (enc) {Encoding}; + \node[block, right=of enc, minimum width=65mm] (cha) {Quantum Channel}; + \node[block, right=of cha, minimum width=75mm] (syn) {Syndrome Extraction}; + \node[block, below=of syn, minimum width=75mm] (sde) {Syndrome Decoding}; + \node[block, below=of cha, minimum width=65mm] (rev) {Reverse Operation}; + \node[block, below=of enc, minimum width=45mm] (dec) {Decoding}; - % \newcommand{\anyerrgate}{\gate[style={fill=red!20}]{\mathcal{E}_\text{XYZ}}} - \newcommand{\preperr}{\gate[style={fill=orange!20}]{\phantom{1}}} - \newcommand{\gateerr}{\gate[style={fill=red!20}]{\phantom{1}}} - \newcommand{\measerr}{\gate[style={fill=blue!20}]{\phantom{1}}} + \coordinate (temp) at ($(enc)!0.5!(dec) + (-85mm,0)$); + \node[block] (ler) at (temp) {LER calculation}; - \centering - % tex-fmt: off - \begin{quantikz}%[row sep=4mm, column sep=4mm] - & \ctrl{3} & & & & & \\ - \lstick{$\ket{\psi}$} & & \ctrl{2} & \ctrl{3} & & & \\ - & & & & \ctrl{2} & & \\ - \lstick{$\ket{0}_{\text{A}_1}$} & \targ{} & \targ{} & & & \meter{} & \setwiretype{c} \\ - \lstick{$\ket{0}_{\text{A}_2}$} & & & \targ{} & \targ{} & \meter{} & \setwiretype{c} - \end{quantikz} - % tex-fmt: on - \end{subfigure}% - \begin{subfigure}{0.15\textwidth} - \centering - \begin{align*} - \bm{H} \bm{y}^\text{T} = \bm{H} \bm{e}^\text{T} = \bm{s} - \end{align*} - \vspace*{-5mm} - \end{subfigure} + \node (inp) at ($(enc) + (-140mm,0)$) {$\ket{\psi}_\text{L}$}; + \node (out) at ($(dec) + (-140mm,0)$) + {$\ket{\hat{\psi}}_\text{L}$}; + + \draw[-{Latex}] (inp) -- (enc); + \draw[-{Latex}] (enc) -- (cha); + \draw[-{Latex}] (cha) -- (syn); + \draw[-{Latex}] (syn) -- (sde); + \draw[-{Latex}] (sde) -- (rev); + \draw[-{Latex}] (rev) -- (dec); + \draw[-{Latex}] (dec) -- (out); + + \draw[-{Latex}] (cha) -- (rev); + + \draw[-{Latex}] (inp -| ler) -- (ler); + \draw[-{Latex}] (out -| ler) -- (ler); + % tex-fmt: on + \end{tikzpicture} + } \end{figure} \vspace*{10mm} + \visible<2->{ + \begin{minipage}{0.35\textwidth} + \begin{itemize} + \item Independent variables + \begin{itemize} + \item \textbf{Physical error rate} + \item CNOT infidelity + \item Total qubit count + \item \ldots + \end{itemize} + \end{itemize} + \end{minipage}% + \begin{minipage}{0.65\textwidth} + \begin{itemize} + \item Noise models + \begin{itemize} + \item \textbf{Standard circuit-based + depolarizing noise} + \citereferencemanual{FSG09} + \item Superconductor inspired (SI1000) + \citereferencemanual{GNF$^+$21} + \item Entangling Measurements (EM3) + \citereferencemanual{GNF$^+$21} + \item \ldots + \end{itemize} + \end{itemize} + \end{minipage} + } + + \vspace*{12mm} + \addreferencesmanual - {NC10}{ - M. A. Nielsen and I. L. Chuang, ``Quantum Computation and - Quantum Information'', \emph{Cambridge University Press}, 2010. + {RWB$^+$20}{ + J. Roffe et al., ``Decoding across the quantum low-density + parity-check code landscape,'' \emph{Physical Review + Research}, 2020. + } + {FSG09}{ + A. G. Fowler, A. M. Stephens, and P. Groszkowski, + ``High-threshold universal quantum comp. on the surface + code,'' \emph{Physical Review}, 2009. + } + {GNF$^+$21}{ + C. Gidney et al., ``A Fault-Tolerant Honeycomb Memory'', + \emph{Quantum}, 2021. } \stopreferencesmanual \end{frame} @@ -620,273 +650,273 @@ \subsection{Detector Error Models} \label{subsec:Detector Error Models} -\begin{frame}[fragile] - \frametitle{The Measurement Syndrome Matrix I} - - \vspace*{-18mm} - - \begin{itemize} - \item \schlagwort{Measurement syndrome matrix} $\bm{\Omega}$ \\ - contains error patterns \citereferencemanual{DTB$^+$25} - \item Example: 3-qubit repetition code - \end{itemize} - - \vspace*{-25mm} - - \centering - \only<1>{ - \begin{minipage}{0.4\textwidth} - \centering - - \vspace*{40mm} - \begin{tikzpicture} - \node{$% - \bm{\Omega} = - \left( - \begin{array}{ccc} - 1 & 1 & 0 \\ - 0 & 1 & 1 \\ - 1 & 1 & 0 \\ - 0 & 1 & 1 \\ - 1 & 1 & 0 \\ - 0 & 1 & 1 - \end{array} - \right)$ - }; - - \draw [ - line width=1pt, - decorate, - decoration={brace,mirror,amplitude=3mm,raise=5mm} - ] - (2.5,1.2) -- (2.5,2.85) - node[midway,right,xshift=10mm]{$\text{SE}_1$}; - - \draw [ - line width=1pt, - decorate, - decoration={brace,mirror,amplitude=3mm,raise=5mm} - ] - (2.5,-0.75) -- (2.5,0.9) - node[midway,right,xshift=10mm]{$\text{SE}_2$}; - - \draw [ - line width=1pt, - decorate, - decoration={brace,mirror,amplitude=3mm,raise=5mm} - ] - (2.5,-2.7) -- (2.5,-1.1) - node[midway,right,xshift=10mm]{$\text{SE}_3$}; - \end{tikzpicture} - - \vspace*{-10mm} - - \begin{gather*} - \bm{s} \in \text{span} \mleft\{ \bm{\Omega} \mright\} - \end{gather*} - \end{minipage}% - \begin{minipage}{0.6\textwidth} - \begin{figure}[H] - \newcommand{\preperr}[1]{ - \gate[style={fill=orange!20}]{\scriptstyle ##1} - } - - \centering - - \begin{quantikz}[ - row sep=4mm, column sep=4mm, - wire types={q,q,q,q,q,n,n,n,n}, - execute at end picture={ - \draw [ - line width=1pt, - decorate, - decoration={brace,amplitude=3mm,raise=9mm} - ] - (\tikzcdmatrixname-4-19.north east) - -- - (\tikzcdmatrixname-5-19.south east) - node[midway,right,xshift=14mm]{$\text{SE}_1$}; - \draw [ - line width=1pt, - decorate, - decoration={brace,amplitude=3mm,raise=9mm} - ] - (\tikzcdmatrixname-6-19.north east) - -- - (\tikzcdmatrixname-7-19.south east) - node[midway,right,xshift=14mm]{$\text{SE}_2$}; - \draw [ - line width=1pt, - decorate, - decoration={brace,amplitude=3mm,raise=9mm} - ] - (\tikzcdmatrixname-8-19.north east) - -- - (\tikzcdmatrixname-9-19.south east) - node[midway,right,xshift=14mm]{$\text{SE}_3$}; - } - ] - % tex-fmt: off - & \preperr{E_0} & \ctrl{3} & & & & & & \ctrl{5} & & & & & & \ctrl{7} & & & & & \\ - \lstick{$\ket{\psi}$} & \preperr{E_1} & & \ctrl{2} & \ctrl{3} & & & & & \ctrl{4} & \ctrl{5} & & & & & \ctrl{6} & \ctrl{7} & & & \\ - & \preperr{E_2} & & & & \ctrl{2} & & & & & & \ctrl{4} & & & & & & \ctrl{6} & & \\ - \lstick{$\ket{0}_{\text{A}_1}$} & & \targ{} & \targ{} & & & & & & & & & & & & & & & \meter{} & \setwiretype{c} \\ - \lstick{$\ket{0}_{\text{A}_2}$} & & & & \targ{} & \targ{} & & & & & & & & & & & & & \meter{} & \setwiretype{c} \\ - & & & & & & \lstick{$\ket{0}_{\text{A}_3}$} & \setwiretype{q} & \targ{} & \targ{} & & & & & & & & & \meter{} & \setwiretype{c} \\ - & & & & & & \lstick{$\ket{0}_{\text{A}_4}$} & \setwiretype{q} & & & \targ{} & \targ{} & & & & & & & \meter{} & \setwiretype{c} \\ - & & & & & & & & & & & & \lstick{$\ket{0}_{\text{A}_5}$} & \setwiretype{q} & \targ{} & \targ{} & & & \meter{} & \setwiretype{c} \\ - & & & & & & & & & & & & \lstick{$\ket{0}_{\text{A}_6}$} & \setwiretype{q} & & & \targ{} & \targ{} & \meter{} & \setwiretype{c} - % tex-fmt: on - \end{quantikz} - \end{figure} - \end{minipage} - } - \only<2>{ - \begin{minipage}{0.4\textwidth} - \centering - - \vspace*{40mm} - \begin{tikzpicture} - \node{$% - \bm{\Omega} = - \left( - \begin{array}{>{\columncolor{red!20}}ccc} - 1 & 1 & 0 \\ - 0 & 1 & 1 \\ - 1 & 1 & 0 \\ - 0 & 1 & 1 \\ - 1 & 1 & 0 \\ - 0 & 1 & 1 - \end{array} - \right)$ - }; - - \draw [ - line width=1pt, - decorate, - decoration={brace,mirror,amplitude=3mm,raise=5mm} - ] - (2.5,1.2) -- (2.5,2.85) - node[midway,right,xshift=10mm]{$\text{SE}_1$}; - - \draw [ - line width=1pt, - decorate, - decoration={brace,mirror,amplitude=3mm,raise=5mm} - ] - (2.5,-0.75) -- (2.5,0.9) - node[midway,right,xshift=10mm]{$\text{SE}_2$}; - - \draw [ - line width=1pt, - decorate, - decoration={brace,mirror,amplitude=3mm,raise=5mm} - ] - (2.5,-2.7) -- (2.5,-1.1) - node[midway,right,xshift=10mm]{$\text{SE}_3$}; - \end{tikzpicture} - - \vspace*{-10mm} - - \begin{gather*} - \bm{s} \in \text{span} \mleft\{ \bm{\Omega} \mright\} - \end{gather*} - \end{minipage}% - \begin{minipage}{0.6\textwidth} - \begin{figure}[H] - \newcommand{\preperr}[1]{ - \gate[style={fill=orange!20}]{\scriptstyle ##1} - } - \newcommand{\measerr}{\gate[style={fill=blue!20}]{\phantom{1}}} - - \newcommand{\noise}{ - \gate[style={noisy}]{\text{\small X}}% - \setwiretype{n}% - \wire[l][1]{q} - } - \newcommand{\redwire}[1]{ - \wire[r][##1][style={draw=red, line width=2pt}]{q} - } - \newcommand{\redtarg}{ - \targ[style={draw=red}]{}% - \setwiretype{n}% - \wire[l][1]{q} - } - \newcommand{\redctrl}[1]{ - \ctrl[style={draw=red,fill=red,line width=2pt}]{##1} - } - \newcommand{\redmeter}{\meter[style={draw=red,fill=red!20}]{}} - - \tikzset{ - noisy/.style={ - starburst, - starburst point height=2mm, - fill=red!25, draw=red!85!black, - line width=2pt, - inner xsep=-2pt, inner ysep=-2pt - }, - } - - \centering - - \begin{quantikz}[ - row sep=4mm, column sep=4mm, - wire types={q,q,q,q,q,n,n,n,n}, - execute at end picture={ - \draw [ - line width=1pt, - decorate, - decoration={brace,amplitude=3mm,raise=9mm} - ] - (\tikzcdmatrixname-4-19.north east) - -- - (\tikzcdmatrixname-5-19.south east) - node[midway,right,xshift=14mm]{$\text{SE}_1$}; - \draw [ - line width=1pt, - decorate, - decoration={brace,amplitude=3mm,raise=9mm} - ] - (\tikzcdmatrixname-6-19.north east) - -- - (\tikzcdmatrixname-7-19.south east) - node[midway,right,xshift=14mm]{$\text{SE}_2$}; - \draw [ - line width=1pt, - decorate, - decoration={brace,amplitude=3mm,raise=9mm} - ] - (\tikzcdmatrixname-8-19.north east) - -- - (\tikzcdmatrixname-9-19.south east) - node[midway,right,xshift=14mm]{$\text{SE}_3$}; - } - ] - % tex-fmt: off - & \noise\redwire{18} & \redctrl{3} & & & & & & \redctrl{5} & & & & & & \redctrl{7} & & & & & \\ - \lstick{$\ket{\psi}$} & \preperr{E_1} & & \ctrl{2} & \ctrl{3} & & & & & \ctrl{4} & \ctrl{5} & & & & & \ctrl{6} & \ctrl{7} & & & \\ - & \preperr{E_2} & & & & \ctrl{2} & & & & & & \ctrl{4} & & & & & & \ctrl{6} & & \\ - \lstick{$\ket{0}_{\text{A}_1}$} & & \redtarg{}\redwire{16} & \targ{} & & & & & & & & & & & & & & & \redmeter\wire[r][1][style={draw=red,double, line width=2pt}]{q} & \setwiretype{n} \\ - \lstick{$\ket{0}_{\text{A}_2}$} & & & & \targ{} & \targ{} & & & & & & & & & & & & & \meter{} & \setwiretype{c} \\ - & & & & & & \lstick{$\ket{0}_{\text{A}_3}$} & \setwiretype{q} & \redtarg\redwire{10} & \targ{} & & & & & & & & & \redmeter\wire[r][1][style={draw=red,double, line width=2pt}]{q} & \setwiretype{n} \\ - & & & & & & \lstick{$\ket{0}_{\text{A}_4}$} & \setwiretype{q} & & & \targ{} & \targ{} & & & & & & & \meter{} & \setwiretype{c} \\ - & & & & & & & & & & & & \lstick{$\ket{0}_{\text{A}_5}$} & \setwiretype{q} & \redtarg\redwire{4} & \targ{} & & & \redmeter\wire[r][1][style={draw=red,double, line width=2pt}]{q} & \setwiretype{n} \\ - & & & & & & & & & & & & \lstick{$\ket{0}_{\text{A}_6}$} & \setwiretype{q} & & & \targ{} & \targ{} & \meter{} & \setwiretype{c} - % tex-fmt: on - \end{quantikz} - \end{figure} - \end{minipage} - } - - \vspace*{8mm} - - \addreferencesmanual - {DTB$^+$25}{ - P.- J. H. S. Derks et al., ``Designing fault-tolerant - circuits using detector error models,'' \emph{Quantum}, 2025. - } - \stopreferencesmanual -\end{frame} +% \begin{frame}[fragile] +% \frametitle{The Measurement Syndrome Matrix I} +% +% \vspace*{-18mm} +% +% \begin{itemize} +% \item \schlagwort{Measurement syndrome matrix} $\bm{\Omega}$ \\ +% contains error patterns \citereferencemanual{DTB$^+$25} +% \item Example: 3-qubit repetition code +% \end{itemize} +% +% \vspace*{-25mm} +% +% \centering +% \only<1>{ +% \begin{minipage}{0.4\textwidth} +% \centering +% +% \vspace*{40mm} +% \begin{tikzpicture} +% \node{$% +% \bm{\Omega} = +% \left( +% \begin{array}{ccc} +% 1 & 1 & 0 \\ +% 0 & 1 & 1 \\ +% 1 & 1 & 0 \\ +% 0 & 1 & 1 \\ +% 1 & 1 & 0 \\ +% 0 & 1 & 1 +% \end{array} +% \right)$ +% }; +% +% \draw [ +% line width=1pt, +% decorate, +% decoration={brace,mirror,amplitude=3mm,raise=5mm} +% ] +% (2.5,1.2) -- (2.5,2.85) +% node[midway,right,xshift=10mm]{$\text{SE}_1$}; +% +% \draw [ +% line width=1pt, +% decorate, +% decoration={brace,mirror,amplitude=3mm,raise=5mm} +% ] +% (2.5,-0.75) -- (2.5,0.9) +% node[midway,right,xshift=10mm]{$\text{SE}_2$}; +% +% \draw [ +% line width=1pt, +% decorate, +% decoration={brace,mirror,amplitude=3mm,raise=5mm} +% ] +% (2.5,-2.7) -- (2.5,-1.1) +% node[midway,right,xshift=10mm]{$\text{SE}_3$}; +% \end{tikzpicture} +% +% \vspace*{-10mm} +% +% \begin{gather*} +% \bm{s} \in \text{span} \mleft\{ \bm{\Omega} \mright\} +% \end{gather*} +% \end{minipage}% +% \begin{minipage}{0.6\textwidth} +% \begin{figure}[H] +% \newcommand{\preperr}[1]{ +% \gate[style={fill=orange!20}]{\scriptstyle ##1} +% } +% +% \centering +% +% \begin{quantikz}[ +% row sep=4mm, column sep=4mm, +% wire types={q,q,q,q,q,n,n,n,n}, +% execute at end picture={ +% \draw [ +% line width=1pt, +% decorate, +% decoration={brace,amplitude=3mm,raise=9mm} +% ] +% (\tikzcdmatrixname-4-19.north east) +% -- +% (\tikzcdmatrixname-5-19.south east) +% node[midway,right,xshift=14mm]{$\text{SE}_1$}; +% \draw [ +% line width=1pt, +% decorate, +% decoration={brace,amplitude=3mm,raise=9mm} +% ] +% (\tikzcdmatrixname-6-19.north east) +% -- +% (\tikzcdmatrixname-7-19.south east) +% node[midway,right,xshift=14mm]{$\text{SE}_2$}; +% \draw [ +% line width=1pt, +% decorate, +% decoration={brace,amplitude=3mm,raise=9mm} +% ] +% (\tikzcdmatrixname-8-19.north east) +% -- +% (\tikzcdmatrixname-9-19.south east) +% node[midway,right,xshift=14mm]{$\text{SE}_3$}; +% } +% ] +% % tex-fmt: off +% & \preperr{E_0} & \ctrl{3} & & & & & & \ctrl{5} & & & & & & \ctrl{7} & & & & & \\ +% \lstick{$\ket{\psi}$} & \preperr{E_1} & & \ctrl{2} & \ctrl{3} & & & & & \ctrl{4} & \ctrl{5} & & & & & \ctrl{6} & \ctrl{7} & & & \\ +% & \preperr{E_2} & & & & \ctrl{2} & & & & & & \ctrl{4} & & & & & & \ctrl{6} & & \\ +% \lstick{$\ket{0}_{\text{A}_1}$} & & \targ{} & \targ{} & & & & & & & & & & & & & & & \meter{} & \setwiretype{c} \\ +% \lstick{$\ket{0}_{\text{A}_2}$} & & & & \targ{} & \targ{} & & & & & & & & & & & & & \meter{} & \setwiretype{c} \\ +% & & & & & & \lstick{$\ket{0}_{\text{A}_3}$} & \setwiretype{q} & \targ{} & \targ{} & & & & & & & & & \meter{} & \setwiretype{c} \\ +% & & & & & & \lstick{$\ket{0}_{\text{A}_4}$} & \setwiretype{q} & & & \targ{} & \targ{} & & & & & & & \meter{} & \setwiretype{c} \\ +% & & & & & & & & & & & & \lstick{$\ket{0}_{\text{A}_5}$} & \setwiretype{q} & \targ{} & \targ{} & & & \meter{} & \setwiretype{c} \\ +% & & & & & & & & & & & & \lstick{$\ket{0}_{\text{A}_6}$} & \setwiretype{q} & & & \targ{} & \targ{} & \meter{} & \setwiretype{c} +% % tex-fmt: on +% \end{quantikz} +% \end{figure} +% \end{minipage} +% } +% \only<2>{ +% \begin{minipage}{0.4\textwidth} +% \centering +% +% \vspace*{40mm} +% \begin{tikzpicture} +% \node{$% +% \bm{\Omega} = +% \left( +% \begin{array}{>{\columncolor{red!20}}ccc} +% 1 & 1 & 0 \\ +% 0 & 1 & 1 \\ +% 1 & 1 & 0 \\ +% 0 & 1 & 1 \\ +% 1 & 1 & 0 \\ +% 0 & 1 & 1 +% \end{array} +% \right)$ +% }; +% +% \draw [ +% line width=1pt, +% decorate, +% decoration={brace,mirror,amplitude=3mm,raise=5mm} +% ] +% (2.5,1.2) -- (2.5,2.85) +% node[midway,right,xshift=10mm]{$\text{SE}_1$}; +% +% \draw [ +% line width=1pt, +% decorate, +% decoration={brace,mirror,amplitude=3mm,raise=5mm} +% ] +% (2.5,-0.75) -- (2.5,0.9) +% node[midway,right,xshift=10mm]{$\text{SE}_2$}; +% +% \draw [ +% line width=1pt, +% decorate, +% decoration={brace,mirror,amplitude=3mm,raise=5mm} +% ] +% (2.5,-2.7) -- (2.5,-1.1) +% node[midway,right,xshift=10mm]{$\text{SE}_3$}; +% \end{tikzpicture} +% +% \vspace*{-10mm} +% +% \begin{gather*} +% \bm{s} \in \text{span} \mleft\{ \bm{\Omega} \mright\} +% \end{gather*} +% \end{minipage}% +% \begin{minipage}{0.6\textwidth} +% \begin{figure}[H] +% \newcommand{\preperr}[1]{ +% \gate[style={fill=orange!20}]{\scriptstyle ##1} +% } +% \newcommand{\measerr}{\gate[style={fill=blue!20}]{\phantom{1}}} +% +% \newcommand{\noise}{ +% \gate[style={noisy}]{\text{\small X}}% +% \setwiretype{n}% +% \wire[l][1]{q} +% } +% \newcommand{\redwire}[1]{ +% \wire[r][##1][style={draw=red, line width=2pt}]{q} +% } +% \newcommand{\redtarg}{ +% \targ[style={draw=red}]{}% +% \setwiretype{n}% +% \wire[l][1]{q} +% } +% \newcommand{\redctrl}[1]{ +% \ctrl[style={draw=red,fill=red,line width=2pt}]{##1} +% } +% \newcommand{\redmeter}{\meter[style={draw=red,fill=red!20}]{}} +% +% \tikzset{ +% noisy/.style={ +% starburst, +% starburst point height=2mm, +% fill=red!25, draw=red!85!black, +% line width=2pt, +% inner xsep=-2pt, inner ysep=-2pt +% }, +% } +% +% \centering +% +% \begin{quantikz}[ +% row sep=4mm, column sep=4mm, +% wire types={q,q,q,q,q,n,n,n,n}, +% execute at end picture={ +% \draw [ +% line width=1pt, +% decorate, +% decoration={brace,amplitude=3mm,raise=9mm} +% ] +% (\tikzcdmatrixname-4-19.north east) +% -- +% (\tikzcdmatrixname-5-19.south east) +% node[midway,right,xshift=14mm]{$\text{SE}_1$}; +% \draw [ +% line width=1pt, +% decorate, +% decoration={brace,amplitude=3mm,raise=9mm} +% ] +% (\tikzcdmatrixname-6-19.north east) +% -- +% (\tikzcdmatrixname-7-19.south east) +% node[midway,right,xshift=14mm]{$\text{SE}_2$}; +% \draw [ +% line width=1pt, +% decorate, +% decoration={brace,amplitude=3mm,raise=9mm} +% ] +% (\tikzcdmatrixname-8-19.north east) +% -- +% (\tikzcdmatrixname-9-19.south east) +% node[midway,right,xshift=14mm]{$\text{SE}_3$}; +% } +% ] +% % tex-fmt: off +% & \noise\redwire{18} & \redctrl{3} & & & & & & \redctrl{5} & & & & & & \redctrl{7} & & & & & \\ +% \lstick{$\ket{\psi}$} & \preperr{E_1} & & \ctrl{2} & \ctrl{3} & & & & & \ctrl{4} & \ctrl{5} & & & & & \ctrl{6} & \ctrl{7} & & & \\ +% & \preperr{E_2} & & & & \ctrl{2} & & & & & & \ctrl{4} & & & & & & \ctrl{6} & & \\ +% \lstick{$\ket{0}_{\text{A}_1}$} & & \redtarg{}\redwire{16} & \targ{} & & & & & & & & & & & & & & & \redmeter\wire[r][1][style={draw=red,double, line width=2pt}]{q} & \setwiretype{n} \\ +% \lstick{$\ket{0}_{\text{A}_2}$} & & & & \targ{} & \targ{} & & & & & & & & & & & & & \meter{} & \setwiretype{c} \\ +% & & & & & & \lstick{$\ket{0}_{\text{A}_3}$} & \setwiretype{q} & \redtarg\redwire{10} & \targ{} & & & & & & & & & \redmeter\wire[r][1][style={draw=red,double, line width=2pt}]{q} & \setwiretype{n} \\ +% & & & & & & \lstick{$\ket{0}_{\text{A}_4}$} & \setwiretype{q} & & & \targ{} & \targ{} & & & & & & & \meter{} & \setwiretype{c} \\ +% & & & & & & & & & & & & \lstick{$\ket{0}_{\text{A}_5}$} & \setwiretype{q} & \redtarg\redwire{4} & \targ{} & & & \redmeter\wire[r][1][style={draw=red,double, line width=2pt}]{q} & \setwiretype{n} \\ +% & & & & & & & & & & & & \lstick{$\ket{0}_{\text{A}_6}$} & \setwiretype{q} & & & \targ{} & \targ{} & \meter{} & \setwiretype{c} +% % tex-fmt: on +% \end{quantikz} +% \end{figure} +% \end{minipage} +% } +% +% \vspace*{8mm} +% +% \addreferencesmanual +% {DTB$^+$25}{ +% P.- J. H. S. Derks et al., ``Designing fault-tolerant +% circuits using detector error models,'' \emph{Quantum}, 2025. +% } +% \stopreferencesmanual +% \end{frame} \begin{frame}[fragile] \frametitle{The Measurement Syndrome Matrix II} @@ -930,7 +960,8 @@ \end{array} \right) \\[10mm] \hspace*{50mm} % - \bm{s} \in \text{span} \mleft\{ \bm{\Omega} \mright\} + \bm{s} \in \text{span} \mleft\{ + \bm{\Omega} \mright\} \end{gather*} } } @@ -1027,7 +1058,8 @@ \end{array} \right) \\[10mm] \hspace*{50mm} % - \bm{s} \in \text{span} \mleft\{ \bm{\Omega} \mright\} + \bm{s} \in \text{span} \mleft\{ + \bm{\Omega} \mright\} \end{gather*} } } @@ -1124,7 +1156,8 @@ \end{array} \right) \\[10mm] \hspace*{50mm} % - \bm{s} \in \text{span} \mleft\{ \bm{\Omega} \mright\} + \bm{s} \in \text{span} \mleft\{ + \bm{\Omega} \mright\} \end{gather*} } } @@ -1356,7 +1389,7 @@ \end{frame} \begin{frame}[fragile] - \frametitle{Noise Model} + \frametitle{Noise Models} % Related interesting stuff % - The difference between an n-qubit error and multiple @@ -1380,7 +1413,8 @@ \item Noise model types \begin{itemize} \visible<1->{ - \item The \schlagwort{depolarizing channel} considers + \item The \schlagwort{depolarizing + channel} considers \citereferencemanual{NC10} \begin{itemize} \item $\X$, $\Y$ or $\Z$ errors on @@ -1391,7 +1425,8 @@ \item \schlagwort{Phenomenological noise} considers \citereferencemanual{DTB$^+$25} \begin{itemize} - \item $\X$ errors on data qubits before each \\ + \item $\X$ errors on data qubits + before each \\ measurement round \item $\X$ errors on measurement outcomes \end{itemize} @@ -1419,20 +1454,26 @@ fill=kit-red, path picture={ \fill[kit-blue!60] - ($(path picture bounding box.south west)+(0,0)$) -- - ($(path picture bounding box.north west)+(0,0)$) -- + ($(path picture bounding box.south + west)+(0,0)$) -- + ($(path picture bounding box.north + west)+(0,0)$) -- ($(path picture bounding box.north west)+(0.34,0)$) -- cycle; \fill[kit-orange!60] - ($(path picture bounding box.north east)+(0,0)$) -- - ($(path picture bounding box.south east)+(0,0)$) -- + ($(path picture bounding box.north + east)+(0,0)$) -- + ($(path picture bounding box.south + east)+(0,0)$) -- ($(path picture bounding box.south east)+(-0.34,0)$) -- cycle; \fill[kit-red!60] - ($(path picture bounding box.north east)+(0,0)$) -- + ($(path picture bounding box.north + east)+(0,0)$) -- ($(path picture bounding box.south east)+(-0.34,0)$) -- - ($(path picture bounding box.south west)+(0,0)$) -- + ($(path picture bounding box.south + west)+(0,0)$) -- ($(path picture bounding box.north west)+(0.34,0)$) -- cycle; } @@ -1553,194 +1594,150 @@ \end{frame} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\section{Research Gap} -\label{sec:Research Gap} +\section{Sliding-Window Decoding} +\label{sec:Sliding-Window Decoding} %%%%%%%%%%%%%%%% \subsection{State of the Art} \label{subsec:State of the Art} -% TODO: Mention somewhere that we are particularly interested in QLDPC codes -\begin{frame} - \frametitle{Addressing the Challenges} +% % TODO: Mention somewhere that we are particularly interested in QLDPC codes +% \begin{frame} +% \frametitle{Addressing the Challenges} +% +% \vspace*{-14mm} +% +% \begin{itemize} +% \item Decoding complexity addressed with window-based approaches +% \begin{itemize} +% \item Parallel decoding \citereferencemanual{SBB$^+$23} +% \item Sliding windows +% \citereferencemanual{HP23} +% \citereferencemanual{GCR24} +% \end{itemize} +% \visible<2>{ +% \item Degraded \ac{bp} performance addressed with +% modification or extension +% \begin{itemize} +% \item \Ac{osd} post-processing +% \citereferencemanual{RWB$^+$20} +% \item Guided decimation \citereferencemanual{GCR24} +% \item Neural approaches +% \citereferencemanual{KL22} +% \citereferencemanual{MSL$^+$25} +% \item Ensemble decoding +% \citereferencemanual{KSW$^+$25} +% \end{itemize} +% } +% \end{itemize} +% +% \vspace*{15mm} +% +% \addreferencesmanual +% {SBB$^+$23}{ +% L. Skoric et al., ``Parallel window decoding enables scalable +% fault tolerant quantum computation,'' \emph{Nature +% Communications}, 2023. +% } +% {HP23}{ +% S. Huang and S. Puri, ``Improved Noisy Syndrome Decoding of +% Quantum LDPC Codes with Sliding Window,'' +% \emph{arXiv:2311.03307}, 2023. +% } +% {GCR24}{ +% A. Gong, S. Cammerer, and J. M. Renes, ``Toward +% Low-latency Iterative Decoding of QLDPC Codes Under +% Circuit-Level Noise,'' 2024. +% } +% {RWB$^+$20}{ +% J. Roffe, et al., ``Decoding across the quantum low-density +% parity-check code landscape,'' \emph{Physical Review}, 2020. +% } +% {KL22}{ +% K.- Y. Kuo and C.- Y. Lai, ``Exploiting degeneracy in belief +% propagation decoding of quantum codes,'' \emph{npj Quantum +% Information}, 2022. +% } +% {MSL$^+$25}{ +% S. Miao et al., ``Quaternary Neural Belief Propagation +% Decoding of Quantum LDPC Codes with Overcomplete +% Check Matrices'', \emph{IEEE Access}, 2025. +% } +% {KSW$^+$25}{ +% S. Koutsioumpas et al., ``Automorphism Ensemble Decoding of +% Quantum LDPC Codes,'' \emph{arXiv:2503.01738}, 2025. +% } +% \stopreferencesmanual +% \end{frame} - \vspace*{-14mm} +\begin{frame} + \frametitle{Sliding-Window Decoding} + + \vspace*{-10mm} \begin{itemize} - \item Decoding complexity addressed with window-based approaches - \begin{itemize} - \item Parallel decoding \citereferencemanual{SBB$^+$23} - \item Sliding windows - \citereferencemanual{HP23} - \citereferencemanual{GCR24} - \end{itemize} - \visible<2>{ - \item Degraded \ac{bp} performance addressed with - modification or extension + \item Example: \ac{dem} of $[[72,6,6]]$ - \ac{bb} code + \end{itemize} + + \visible<3->{ + \hspace*{21mm}% + \begin{tikzpicture} + \draw[decorate, decoration={brace, amplitude=10pt}] + (0,0) -- (6,0) node[midway, above=4mm] {Commit region}; + \end{tikzpicture} + } + + \vspace*{-2mm} + + \only<1> { + \begin{figure}[H] + \centering + \includegraphics[scale=1.4]{res/72_bb_dem_no_windows.pdf} + \end{figure} + } + + \only<2-> { + \begin{figure}[H] + \centering + \includegraphics[scale=1.4]{res/72_bb_dem.pdf} + \end{figure} + } + + \begin{itemize} + \visible<2->{ + \item Split \ac{dem} into \schlagwort{overlapping + windows} \citereferencemanual{HP23} \citereferencemanual{GCR24} + } + \visible<3->{ + \item After decoding a window \begin{itemize} - \item \Ac{osd} post-processing - \citereferencemanual{RWB$^+$20} - \item Guided decimation \citereferencemanual{GCR24} - \item Neural approaches - \citereferencemanual{KL22} - \citereferencemanual{MSL$^+$25} - \item Ensemble decoding - \citereferencemanual{KSW$^+$25} + \item store error estimates in + \schlagwort{commit region} (part of the + window with no overlap) + \item \schlagwort{update syndrome} of overlapping region \end{itemize} } \end{itemize} - \vspace*{15mm} + \vspace*{20mm} \addreferencesmanual - {SBB$^+$23}{ - L. Skoric et al., ``Parallel window decoding enables scalable - fault tolerant quantum computation,'' \emph{Nature - Communications}, 2023. - } {HP23}{ S. Huang and S. Puri, ``Improved Noisy Syndrome Decoding of - Quantum LDPC Codes with Sliding Window,'' \emph{arXiv:2311.03307}, 2023. + Quantum LDPC Codes with Sliding Window,'' + \emph{arXiv:2311.03307}, 2023. } {GCR24}{ A. Gong, S. Cammerer, and J. M. Renes, ``Toward Low-latency Iterative Decoding of QLDPC Codes Under Circuit-Level Noise,'' 2024. } - {RWB$^+$20}{ - J. Roffe, et al., ``Decoding across the quantum low-density - parity-check code landscape,'' \emph{Physical Review}, 2020. - } - {KL22}{ - K.- Y. Kuo and C.- Y. Lai, ``Exploiting degeneracy in belief - propagation decoding of quantum codes,'' \emph{npj Quantum - Information}, 2022. - } - {MSL$^+$25}{ - S. Miao et al., ``Quaternary Neural Belief Propagation - Decoding of Quantum LDPC Codes with Overcomplete - Check Matrices'', \emph{IEEE Access}, 2025. - } - {KSW$^+$25}{ - S. Koutsioumpas et al., ``Automorphism Ensemble Decoding of - Quantum LDPC Codes,'' \emph{arXiv:2503.01738}, 2025. - } - \stopreferencesmanual -\end{frame} - -% TODO: Understand update equation for s_2' -\begin{frame}[fragile] - \frametitle{Sliding-Window Decoding} - - \vspace*{-12mm} - - \begin{itemize} - \item Approach taken in \citereferencemanual{GCR24} - resembles \acf{scldpc} code - \item They try \ac{bp} + \ac{osd} and a modification of - \ac{bp} with guided decimation - \end{itemize} - - \vspace*{5mm} - - \begin{figure} - \begin{subfigure}[b]{0.5\textwidth} - \newcommand{\pz}{\phantom{\bm{0}}} - \[ - \left( - \hspace*{-4mm} - \begin{tikzpicture}[baseline=(m.center)] - \matrix (m)[ - matrix of math nodes, - nodes in empty cells, - column sep={14mm,between origins}, - row sep={10mm,between origins}, - ] { - % tex-fmt: off - \bm{H}_0 & \bm{H}_1 & \pz & \pz & \pz & \pz & \pz & \pz \\ - \pz & \bm{H}_2 & \bm{H}_0 & \bm{H}_1 & \pz & \pz & \pz & \pz & \pz \\ - \pz & \pz & \pz & \bm{H}_2 & \bm{H}_0 & \bm{H}_1 & \pz & \pz & \pz \\ - \pz & \pz & \pz & \pz & \pz & \bm{H}_2 & \bm{H}_0 & \bm{H}_1 & \pz \\ - \pz & \pz & \pz & \pz & \pz & \pz & \pz & \pz & \ddots \\ - % tex-fmt: on - } ; - - \draw[kit-red, line width=2pt] - ($(m-3-1.south west) + (-0.1,-0.1)$) - rectangle - ($(m-1-6.north east) + (0.1,0.1)$); - - \draw[kit-orange, line width=2pt] - ($(m-4-3.south west) + (-0.1,-0.1)$) - rectangle - ($(m-2-8.north east) + (0.1,0.1)$); - - \draw[kit-blue, line width=2pt] - ($(m-5-5.south west) + (-0.1,-0.1)$) - rectangle - ($(m-3-9.north east) + (0.1,0.1)$); - - \draw[-{Latex},line width=2pt] - ($(m-1-6.north) + (0,0.8)$) - -- - ($(m-3-9.north) + (0.5,0.8)$); - \end{tikzpicture} - \hspace*{-2mm} - \right) - \] - - \caption{Visualization of sliding window procedure} - \end{subfigure}% - \begin{subfigure}[b]{0.5\textwidth} - \begin{gather*} - \begin{pmatrix} - \bm{H}_0 & \bm{H}_1 & \bm{0} & \bm{0} & - \bm{0} & \bm{0} \\ - \bm{0} & \bm{H}_2 & \bm{H}_0 & \bm{H}_1 & - \bm{0} & \bm{0} \\ - \bm{0} & \bm{0} & \bm{0} & \bm{H}_2 & - \bm{H}_0 & \bm{H}_1 - \end{pmatrix} - \begin{pmatrix} - \hat{\bm{e}}_0 \\ - \vdots \\ - \hat{\bm{e}}_5 - \end{pmatrix} - = - \begin{pmatrix} - \bm{s}_1 \\ - \bm{s}_2 \\ - \bm{s}_3 - \end{pmatrix} \\[5mm] - \bm{s}_2' = \bm{s}_2 + \bm{H}_2 \hat{\bm{e}}_1 - \end{gather*} - - \vspace*{2mm} - - \caption{Equations for the decoding of the first window} - \end{subfigure}% - \end{figure} - - \visible<2->{ - \begin{itemize} - \item However, no passing of soft information between windows - \end{itemize} - } - - \vspace*{10mm} - - \addreferencesmanual - {GCR24}{ - A. Gong, S. Cammerer, and J. M. Renes, ``Toward - Low-latency Iterative Decoding of QLDPC Codes Under - Circuit-Level Noise,'' 2024. - } \stopreferencesmanual \end{frame} %%%%%%%%%%%%%%%% -\subsection{Future Work} -\label{subsec:Future Work} +\subsection{Soft-Information-Aware Sliding-Window Decoding} +\label{subsec:Soft-Information-Aware Sliding-Window Decoding} \begin{frame} \frametitle{Future Work} @@ -1794,182 +1791,6 @@ \stopreferencesmanual \end{frame} -% TODO: Organize sections properly -%%%%%%%%%%%%%%%% -\section{Remarks on Evaluation} -\label{sec:Remarks on Evaluation} - -%%%%%%%%%%%%%%%% -\subsection{Figures of Merit} -\label{subsec:Figures of Merit} - -\begin{frame} - \frametitle{Performance Evaluation} - - % - Gong et al. don't actually analyze the latency -> - % Benchmarking against other methods would be interesting - - % \item For circuit-level noise, use same - % \schlagwort{physical error rate} for all error - % locations \citereferencemanual{FSG09} - - \vspace*{-15mm} - - \begin{minipage}{0.35\textwidth} - \only<1>{ - \begin{itemize} - \item Independent variables - \begin{itemize} - \item Physical error rate - \item CNOT infidelity - \item Total qubit count - \item \ldots - \end{itemize} - \end{itemize} - } - \only<2->{ - \begin{itemize} - \item Independent variables - \begin{itemize} - \item \textbf{Physical error rate} - \item CNOT infidelity - \item \textbf{Total qubit count} - \item \ldots - \end{itemize} - \end{itemize} - } - \end{minipage}% - \begin{minipage}{0.65\textwidth} - \begin{itemize} - \only<1>{ - \item Noise models - \begin{itemize} - \item Standard circuit-based depolarizing noise - \citereferencemanual{FSG09} - \item Superconductor inspired (SI1000) - \citereferencemanual{GNF$^+$21} - \item Entangling Measurements (EM3) - \citereferencemanual{GNF$^+$21} - \item \ldots - \end{itemize} - } - \only<2->{ - \item Noise models - \begin{itemize} - \item \textbf{Standard circuit-based depolarizing noise} - \citereferencemanual{FSG09} - \item Superconductor inspired (SI1000) - \citereferencemanual{GNF$^+$21} - \item Entangling Measurements (EM3) - \citereferencemanual{GNF$^+$21} - \item \ldots - \end{itemize} - } - \end{itemize} - \end{minipage} - - \vspace{5mm} - - \visible<3->{ - \begin{itemize} - \item Degeneracy, information stored in correlations - $\rightarrow$ Consider \schlagwort{\acl{ler}} (LER) - \end{itemize} - } - \visible<4->{ - \begin{itemize} - \item Types of benchmarking plots - \end{itemize} - - \vspace*{5mm} - - \begin{figure}[H] - \centering - \begin{subfigure}{0.35\textwidth} - \centering - \begin{tikzpicture} - \begin{axis}[ - domain=-5:5, - width=7cm, - height=5.5cm, - xticklabels=\empty, - yticklabels=\empty, - xlabel={Physical error rate}, - xlabel style={yshift=5mm}, - ylabel={LER}, - ylabel style={yshift=-5mm}, - grid, - ] - - \addplot+[ - mark=none, - kit-red, - line width=2pt, - ] - table[row sep=crcr] { - x y \\ - 1.134800559068837 0.5575221183357257 \\ - 2.0632737437615223 0.9764009116710485 \\ - 2.861072612292603 1.7787608707489788 \\ - 3.7551580964997053 2.8407080379684153 \\ - 4.264098875196703 3.513274267363004 \\ - 4.573589936760932 3.9911505302955272 \\ - 4.903713970055305 4.268436552233389 \\ - }; - \end{axis} - \end{tikzpicture} - \end{subfigure}% - \begin{subfigure}{0.35\textwidth} - \centering - \begin{tikzpicture} - \begin{axis}[ - domain=-5:5, - width=7cm, - height=5.5cm, - xticklabels=\empty, - yticklabels=\empty, - xlabel={Total qubit count}, - xlabel style={yshift=5mm}, - ylabel={LER}, - ylabel style={yshift=-5mm}, - grid, - ] - - \addplot+[ - mark=none, - kit-blue, - line width=2pt, - ] - table[row sep=crcr] { - x y \\ - 1.147643096789246 3.8430493581808607 \\ - 1.7245658892318043 2.762331811591747 \\ - 2.3573205843145306 2.3587443650766753 \\ - 2.9156332708646624 1.560537992857378 \\ - 3.6352360073136527 1.0403588210329737 \\ - 4.392060012189421 0.7130042787942606 \\ - }; - \end{axis} - \end{tikzpicture} - \end{subfigure} - \end{figure} - } - - \vspace*{4mm} - - \addreferencesmanual - {FSG09}{ - A. G. Fowler, A. M. Stephens, and P. Groszkowski, - ``High-threshold universal quantum computation on the surface - code,'' \emph{Physical Review}, 2009. - } - {GNF$^+$21}{ - C. Gidney et al., ``A Fault-Tolerant Honeycomb Memory'', - \emph{Quantum}, 2021. - } - \stopreferencesmanual -\end{frame} - %%%%%%%%%%%%%%%% \subsection{Conclusion and Outlook} \label{subsec:Conclusion and Outlook} @@ -1999,7 +1820,8 @@ \item Parameters \begin{itemize} \item Use standard depolarizing noise for comparability - \item Compare performance with other \ac{bb} code decoders + \item Compare performance with other \ac{bb} + code decoders \end{itemize} \end{itemize} \end{minipage}% @@ -2024,8 +1846,6 @@ \appendix \beginbackup -% TODO: Move arrow into syndrome extraction lower (branch from other -% arrow) and change caption to "modified from [MSLS25]" \begin{frame} \frametitle{System Level Overview} @@ -2110,13 +1930,109 @@ \stopreferencesmanual \end{frame} +\begin{frame} + \frametitle{Stabilizer and Calderbank Shor Steane Codes} + + \vspace*{-5mm} + + % Related interesting stuff + % - Using stabilizers to describe quantum codes is a bit like + % using parity check equations to describe classical codes + % -> stabilizer codes are the quantum analog of binary linear codes + % - For CSS codes, "the parity checks for the X errors and the + % parity checks for the Z errors can be represented independently + % of one another" + + \begin{itemize} + \item Stabilizer codes \citereferencemanual{NC10} + \begin{itemize} + \item Implicitly defined using \schlagwort{stabilizer + generators} + \item Can be represented using parity check matrices + \item Quantum analog of linear block codes + \end{itemize} + \vspace*{10mm} + \visible<2->{ + \item \Acf{css} codes \citereferencemanual{NC10} + \begin{itemize} + \item Subset of stabilizer codes + \item Able to correct $\X$ and $\Z$ errors independently + \item Described using two separate parity check + matrices $\bm{H}_X$ and $\bm{H}_Z$ + \item Can be constructed from two binary linear codes + $\mathcal{C}_1 \left[ n, k_1 \right]$ and + $\mathcal{C}_2 \left[ n, k_2 \right]$ with + $\mathcal{C}_2 \subset \mathcal{C}_1$ + \end{itemize} + } + \end{itemize} + + \vspace*{20mm} + + \addreferencesmanual + {NC10}{ + M. A. Nielsen and I. L. Chuang, ``Quantum Computation and + Quantum Information'', \emph{Cambridge University Press}, 2010. + } + \stopreferencesmanual +\end{frame} + +\begin{frame} + \frametitle{The Quantum Error Correcting Landscape} + + \vspace*{-10mm} + + \begin{itemize} + \item Taxonomy of main QEC code families + \citereferencemanual{SPG$^+$25} + \end{itemize} + + \vspace*{2mm} + + \begin{figure}[H] + \centering + \includegraphics[scale=2.5]{res/taxonomy.pdf} + \end{figure} + + \begin{itemize} + \item Surface code is the industry standard for + experimental implementations, but has poor encoding + efficiency \citereferencemanual{BCG$^+$24} + \item \Ac{qldpc} codes particularly interesting because of + \begin{itemize} + \item Constant overhead scaling \citereferencemanual{Got14} + \item Linear distance scaling + \citereferencemanual{BCG$^+$24} + \end{itemize} + \end{itemize} + + \vspace*{15mm} + + \addreferencesmanual + {SPG$^+$25}{ + A. Swierkowska et al., ``ECCentric: An Empirical + Analysis of Quantum Error Correction Codes'', + \emph{arXiv:2511.01062v1}, 2025. + } + {BCG$^+$24}{ + S. Bravyi et al., ``High-threshold and low-overhead + fault-tolerant quantum memory,'' \emph{Nature}, 2024. + } + {Got14}{ + D. Gottesman, ``Fault-Tolerant Quantum Computation with + Constant Overhead'', \emph{arXiv:1310.2984}, 2014. + } + \stopreferencesendmanual +\end{frame} + \begin{frame} \frametitle{Guided Decimation Guessing Decoding} \begin{minipage}{0.57\textwidth} \begin{itemize} \item BP guided decimation (BPGD) \\ - $\rightarrow$ Iteratively fix most reliable variable node (VN) + $\rightarrow$ Iteratively fix most reliable + variable node (VN) \vspace*{10mm} \item \schlagwort{Guided decimation guessing} (GDG) \citereferencemanual{GCR24} @@ -2147,52 +2063,6 @@ \stopreferencesmanual \end{frame} -\begin{frame} - \frametitle{The Quantum Error Correcting Landscape} - - \vspace*{-10mm} - - \begin{itemize} - \item Taxonomy of main QEC code families \citereferencemanual{SPG$^+$25} - \end{itemize} - - \vspace*{2mm} - - \begin{figure}[H] - \centering - \includegraphics[scale=2.5]{res/taxonomy.pdf} - \end{figure} - - \begin{itemize} - \item Surface code is the industry standard for - experimental implementations, but has poor encoding - efficiency \citereferencemanual{BCG$^+$24} - \item \Ac{qldpc} codes particularly interesting because of - \begin{itemize} - \item Constant overhead scaling \citereferencemanual{Got14} - \item Linear distance scaling \citereferencemanual{BCG$^+$24} - \end{itemize} - \end{itemize} - - \vspace*{15mm} - - \addreferencesmanual - {SPG$^+$25}{ - A. Swierkowska et al., ``ECCentric: An Empirical - Analysis of Quantum Error Correction Codes'', - \emph{arXiv:2511.01062v1}, 2025. - } - {BCG$^+$24}{ - S. Bravyi et al., ``High-threshold and low-overhead - fault-tolerant quantum memory,'' \emph{Nature}, 2024. - } - {Got14}{ - D. Gottesman, ``Fault-Tolerant Quantum Computation with - Constant Overhead'', \emph{arXiv:1310.2984}, 2014. - } - \stopreferencesendmanual -\end{frame} - % TODO: Is this really necessary? % \begin{frame} % \frametitle{The Quantum Error Correction Landscape} diff --git a/src/final_presentation/res/72_bb_dem.pdf b/src/final_presentation/res/72_bb_dem.pdf new file mode 100644 index 0000000000000000000000000000000000000000..49123a2d9b76726fb8043e9de5b4397722583b7e GIT binary patch literal 2717 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 S2FhA~EQXCEOlD%582Jz4k_mzU literal 0 HcmV?d00001