3 Commits

3 changed files with 209 additions and 72 deletions

View File

@@ -23,6 +23,11 @@
long=belief propagation with guided decimation
}
\DeclareAcronym{gdg}{
short=GDG,
long=guided decimation guessing
}
\DeclareAcronym{nms}{
short=NMS,
long=normalized min-sum
@@ -122,3 +127,18 @@
short=BB,
long=bivariate bicycle
}
\DeclareAcronym{hgp}{
short=HGP,
long=hypergraph product
}
\DeclareAcronym{lp}{
short=LP,
long=lifted-product
}
\DeclareAcronym{bpc}{
short=BPC,
long=balanced product code
}

View File

@@ -72,7 +72,7 @@ problem into many smaller ones that can be solved more efficiently.
% warm-start decoding. Or just go into warm-start decoding)
We will start by briefly reviewing the existing work related to
sliding-window decoding,
before focusing on one specific incarnation.
before focusing on one specific realization.
We will then introduce a modification to the existing algorithm and
perform numerical simulations to evaluate it.
@@ -107,35 +107,10 @@ time dimension.
Each of these windows is then decoded separately.
%%%%%%%%%%%%%%%%
\subsection{Existing Literature}
\label{subsec:Existing Literature}
\subsection{Review of Existing Literature}
\label{subsec:Review of Existing Literature}
% Review of existing literature
Research on this topic has been ongoing for some time, though mostly
for topological codes.
The literature on \ac{qldpc} codes is more limited. Figure
\Cref{fig:literature} gives an overview of the related body of work.
\red{
\begin{itemize}
\item \cite{huang_increasing_2024} use BP+OSD,
\cite{gong_toward_2024} use BP+GDG
\item \cite{huang_improved_2023} use phenomenological noise,
\cite{gong_toward_2024} circuit-level noise
\item Go into the way the parallel decoding approaches
consolidate the overlap regions
\item \cite{huang_improved_2023} use hypegraph and lifted
product codes, \cite{gong_toward_2024} use BB codes
\item \cite{kuo_fault-tolerant_2024} use toric codes, the
rest of the topological papers surface codes
\item \cite{dennis_topological_2002} call their scheme ``overlap-add''
\item QUITS views sliding-window decoding more separately
\item Reasons for latency improvement ()
\end{itemize}
}
\begin{figure}[H]
\begin{figure}[t]
\centering
\tikzset{
@@ -156,20 +131,22 @@ The literature on \ac{qldpc} codes is more limited. Figure
}
}
\tikzexternaldisable
\begin{tikzpicture}[node distance = 0mm and 0mm]
% tex-fmt: off
\node[heading, minimum width=15mm, fill=gray!25] (code) {Code};
\node[heading, below right=1mm and -5mm of code, fill=orange!20] (top) {Topological};
\node[heading, below right=42mm and -5mm of code, fill=orange!20] (qldpc) {QLDPC};
\node[heading, minimum width=15mm, fill=gray!25] (code) {Code};
\node[heading, below right=2mm and -5mm of code, fill=orange!20] (top) {Topological};
\node[heading, below right=45mm and -5mm of code, fill=orange!20] (qldpc) {QLDPC};
\node[literature, below right=0mm and -12mm of top] (dennis) {\cite{dennis_topological_2002}};
\node[literature, below right=1mm and -12mm of top] (dennis) {\cite{dennis_topological_2002}};
\node[literature, below=of dennis] (tan) {\cite{tan_scalable_2023}};
\node[literature, below=of tan] (skoric) {\cite{skoric_parallel_2023}};
\node[literature, below=of skoric] (bombin) {\cite{bombin_modular_2023}};
\node[literature, below=of bombin] (kuo) {\cite{kuo_fault-tolerant_2024}};
\node[literature, below right=0mm and -12mm of qldpc] (huang) {\cite{huang_improved_2023},\cite{huang_increasing_2024}};
\node[literature, below right=1mm and -12mm of qldpc] (huang) {\cite{huang_improved_2023},\cite{huang_increasing_2024}};
\node[literature, below=of huang] (gong) {\cite{gong_toward_2024}};
\node[literature, below=of gong] (kang) {\cite{kang_quits_2025}};
\coordinate (code-anchor) at ($(code.south) + (-2mm,0)$);
\coordinate (top-anchor) at ($(top.south) + (-5mm,0)$);
@@ -186,6 +163,7 @@ The literature on \ac{qldpc} codes is more limited. Figure
\draw (qldpc-anchor) |- (huang);
\draw (qldpc-anchor) |- (gong);
\draw (qldpc-anchor) |- (kang);
\draw [
line width=1pt,
@@ -208,15 +186,113 @@ The literature on \ac{qldpc} codes is more limited. Figure
decorate,
decoration={brace,amplitude=2mm,raise=5mm}
]
(huang.north east) -- (gong.south east)
(huang.north east) -- (kang.south east)
node[midway,right,xshift=10mm]{Sequential};
% tex-fmt: on
\end{tikzpicture}
\tikzexternalenable
\caption{Overview of literature on sliding-window decoding.}
\label{fig:literature}
\end{figure}
% Some general notes
\Cref{fig:literature} gives an overview over the existing body of work
related to sliding-window decoding.
The papers \cite{huang_improved_2023} and \cite{huang_increasing_2024} are
lumped together, as they share the same content;
one is simply preprint published earlier.
We will only refer to \cite{huang_increasing_2024} in the following.
\cite{kang_quits_2025} is somewhat special in that the authors focus
more on the introduction of a new simluator framework they call
QUITS, rather than the performance of sliding-window decoding itself.
\cite{gong_toward_2024} and \cite{kang_quits_2025} have made their
software freely available online%
\footnote{
https://github.com/mkangquantum/quits
}%
\footnote{
https://github.com/gongaa/SlidingWindowDecoder
}.
A final thing to note is that \cite{dennis_topological_2002} never
explicitly mention sliding windows, they call their scheme
``overlapping recovery''.
% Topological vs QLDPC
Research has focused on two categories of \ac{qec} codes, topological
and \ac{qldpc} codes.
Most of the work on topological codes has treated surface codes,
with the exception of \cite{kuo_fault-tolerant_2024} where toric
codes were considered.
With regard to \ac{qldpc} codes, in \cite{huang_increasing_2024}
they examine \emph{hypergraph product} (\acs{hgp}) and
\emph{lifted-product} (\acs{lp}) codes.
HGP codes are constructed from the product of two classical codes,
while LP codes generalize this construction by additionally applying
a lift to reduce the qubit overhead.
In \cite{kang_quits_2025}, \emph{balanced product codes} (\acs{bpc})
are additionally considered.
Like HGP codes, BPC codes are derived from a product construction,
but exploit an additional symmetry to yield fewer physical qubits for
the same code parameters.
Finally, in \cite{gong_toward_2024} the authors explore \ac{bb} codes.
% Sequential vs parallel
After having divided the whole circuit into separate windows, the question
arises of how exactly to realize the decoding.
There are two main approaches, with differing mechanisms of reducing
the latency.
Some papers decode the sliding windows in a parallel fashion.
The benefit in this case is the option to more effectively utilize
classical hardware for decoding.
Others choose a sequential approach.
Here, decoding can start earlier, as there is no need to wait for the
syndrome measurements of all windows before beginning with the decoding.
With the exception of \cite{dennis_topological_2002}, literature
treating topological codes has mostly focused on parallel decoding
while literature treating \ac{qldpc} codes has wholely considered
sequential decoding.
% Deep-dive into QLDPC methods
For this work, the publications treating \ac{qldpc} codes are
especially interesting.
The experimental conditions for these are summarized in
\Cref{table:experimental_conditions}.
As we noted above, \ac{hgp} and \ac{lp} codes are considered in
\cite{huang_increasing_2024},
\ac{hgp}, \ac{lp} and \ac{bpc} codes are considered in \cite{kang_quits_2025},
and \ac{bb} codes are considered in \cite{gong_toward_2024}.
The employed noise models also differ;
\cite{huang_increasing_2024} use phenomenological noise, while
\cite{gong_toward_2024} and \cite{kang_quits_2025} use circuit-level noise.
Finally, \cite{gong_toward_2024} introduce their own variation of
\ac{bpgd}, \ac{bp} with \ac{gdg}, while \cite{huang_increasing_2024}
and \cite{kang_quits_2025} use \ac{bp} + \ac{osd}.
We would additionally like to note that only in
\cite{gong_toward_2024} and \cite{kang_quits_2025} do the authors
explicitly work with the \ac{dem} formalism.
\renewcommand{\arraystretch}{1.1}
\setlength{\tabcolsep}{12pt}
\begin{table}[t]
\centering
\caption{Experimental conditions for papers related to \ac{qldpc} codes.}
\vspace*{3mm}
\label{table:experimental_conditions}
\begin{tabular}{l|ccc}
% tex-fmt: off
Publication & Code & Noise Model & Decoder \\ \hline
\hspace{-2.5mm}\cite{huang_improved_2023},\cite{huang_increasing_2024} & \acs{hgp}, \acs{lp} & Phenomenological noise & \acs{bp} + \acs{osd} \\
\hspace{-2.5mm}\cite{gong_toward_2024} & \acs{bb} & Circuit-level noise & \acs{bp} + \acs{gdg} \\
\hspace{-2.5mm}\cite{kang_quits_2025} & \acs{hgp}, \acs{lp}, \acs{bpc} & Circuit-level noise & \acs{bp} + \ac{osd}
% tex-fmt: on
\end{tabular}
\end{table}
% \red{
% Existing work
% \begin{itemize}
@@ -299,32 +375,63 @@ The literature on \ac{qldpc} codes is more limited. Figure
% \end{itemize}
% }
\content{Possibly go into the fact that current sliding-window
approaches don't differentiate clearly between the sliding-window
part and the decoder part. This work aims to extend the
sliding-window part in a general fashion that is compatible with many
different decoder parts. Combine this with QUITS modular structure
for sliding window decoding}
%%%%%%%%%%%%%%%%
\subsection{Implementation of Sliding-Window Decoding}
\label{subsec:Implementation of Sliding-Window Decoding}
\subsection{Algorithm}
\label{subsec:Algorithm}
We build on the approach taken by \cite{huang_increasing_2024} and
\cite{gong_toward_2024}.
In this section, we will examine the methodology by which a detector
error matrix is divided into overlapping windows.
The algorithm detailed here follows \cite{kang_quits_2025}, whose
work is in turn based on \cite{huang_increasing_2024}.
% High-level overview of Sliding-Window decoding
% Very high-level overview
\content{Benefits of sliding-window decoding (lower latency due to
earlier decoding start)}
\content{Why it works (block diagonal structure $\rightarrow$ ``Done
with processing'' some VNs)}
Sliding-window decoding is made possible by the time-like structure
of the syndrome extraction circuitry.
This is epecially clearly visible under the \ac{dem} formalism, where
this manifests as a block-diagonal structure of the detector
error matrix $\bm{H}$.
Note that this presupposes a choice of detectors as seen in
\Cref{subsec:Detector Error Matrix}.
This block-diagonal structure introduces some locality in the
interdependence between \acp{vn} and \acp{cn}.
For each local set of \acp{vn}, there is only a local set of connected \acp{cn}.
We exploit this fact by cutting the matrix into overlapping windows.
\Cref{fig:windowing_pcm} depicts this process.
% Detailed explanation of sliding-window decoding
% High-level overview
\content{We look at rows not columns}
\content{Define W}
\content{Define F}
How the locality is leveraged can be understood by considering the
decoding process.
After decoding a window, there is a subset of \acp{cn} that no longer
contribute to the decoding process, as they do not share any \acp{vn}
with the \acp{cn} of subsequent windows.\\
\content{Commit VNs}
\content{Benefit of this approach (as stated above: earlier decoding start)}
% W and F
There are two degrees of freedom in how we perform the windowing.
The \emph{window size} $W \in \mathbb{N}$ represents the number of
syndrome extraction rounds lumped into one window.
The \emph{step size} $F \in \mathbb{N}$ represents the number of
syndrome extraction rounds passed over before starting the next window.
$W$ controls the size of the windows while $F$ controls the overlap
between windows.
% Why we look at rows, not columns
As illustrated in \Cref{fig:windowing_pcm}, $W$ and $F$ control the
window dimensions and locactions by defining the related \acp{cn},
not the \acp{vn}.
This is because while the number of overall \acp{cn} is only affected
by the choice of the underlying code and the number of syndrome
measurement rounds, the number of \acp{vn} depends on the noise model
and is difficult to predict beforehand.
% How we get the corresponding rows and columns
\content{How we get the rows}
\content{Explain how we get the columns once we know the rows}
\content{\textbf{General note}: Mathematical definitions where possible}
@@ -337,13 +444,14 @@ with processing'' some VNs)}
% Complete process
\content{(?) Proper algorithm definition?}
\content{1. Decode window}
\content{2. Commit VN estimates}
\content{3. Update syndrome}
\content{4. Decode next window}
\content{(?) Explicitly mention we don't reuse existing messages?}
\begin{figure}[H]
\begin{figure}[t]
\centering
\hspace*{-114mm}%
@@ -361,7 +469,7 @@ with processing'' some VNs)}
\begin{tikzpicture}
\draw[{Latex}-{Latex}, line width=.7pt] (0, -0.75mm) -- (0, 5mm);
\draw[line width=1pt] (-1mm,-0.75mm) --
(3mm,-0.75mm);
(3mm,-0.75mm);
\draw[line width=1pt] (-1mm,5mm) -- (3mm,5mm);
\node[left] at (-2mm,2.125mm) {$\sim W$};
@@ -379,6 +487,14 @@ with processing'' some VNs)}
\label{fig:windowing_pcm}
\end{figure}
% TODO: Do I need this?
% \content{Possibly go into the fact that current sliding-window
% approaches don't differentiate clearly between the sliding-window
% part and the decoder part. This work aims to extend the
% sliding-window part in a general fashion that is compatible with many
% different decoder parts. Combine this with QUITS modular structure
% for sliding window decoding}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Warm-Start Sliding-Window Decoding}
\label{sec:warm_start_bp}
@@ -807,7 +923,7 @@ standard circuit-based depolarizing noise model, etc.)}
{3/KITred/triangle*,4/KITblue/diamond*,5/KITorange/square*} {
\edef\temp{\noexpand
\addplot+[mark=\mark, solid, mark
options={fill=\col}, \col]
options={fill=\col}, \col]
table[
col sep=comma, x=physical_p,
y=LER_per_round,
@@ -888,7 +1004,7 @@ options={fill=\col}, \col]
{3/KITred/triangle*,4/KITblue/diamond*,5/KITorange/square*} {
\edef\temp{\noexpand
\addplot+[mark=\mark, solid, mark
options={fill=\col}, \col]
options={fill=\col}, \col]
table[
col sep=comma, x=physical_p,
y=LER_per_round,
@@ -971,7 +1087,7 @@ options={fill=\col}, \col]
{3/KITred/triangle*,2/KITblue/diamond*,1/KITorange/square*} {
\edef\temp{\noexpand
\addplot+[mark=\mark, solid, mark
options={fill=\col}, \col]
options={fill=\col}, \col]
table[
col sep=comma, x=physical_p,
y=LER_per_round,
@@ -1039,7 +1155,7 @@ options={fill=\col}, \col]
{3/KITred/triangle,4/KITblue/diamond,5/KITorange/square} {
\edef\temp{\noexpand
\addplot+[mark=\mark, densely dashed,
forget plot, \col]
forget plot, \col]
table[
col sep=comma, x=max_iter,
y=LER_per_round,
@@ -1110,7 +1226,7 @@ forget plot, \col]
{3/KITred/triangle,2/KITblue/diamond,1/KITorange/square} {
\edef\temp{\noexpand
\addplot+[mark=\mark, densely dashed,
forget plot, \col]
forget plot, \col]
table[
col sep=comma, x=max_iter,
y=LER_per_round,
@@ -1148,7 +1264,7 @@ forget plot, \col]
under circuit-level noise.
$12$ rounds of syndrome extraction were performed and
standard circuit-based depolarizing noise was chosen as the
noise model.
noise model.
The physical error probabilty was fixed to $0.0025$.
}
\end{figure}
@@ -1307,7 +1423,7 @@ noise model.
information.
$12$ rounds of syndrome extraction were performed and
standard circuit-based depolarizing noise was chosen as the
noise model.
noise model.
}
\end{figure}
@@ -1353,7 +1469,7 @@ noise model.
{3/KITred/triangle,4/KITblue/diamond,5/KITorange/square} {
\edef\temp{\noexpand
\addplot+[mark=\mark, densely dashed,
forget plot, \col]
forget plot, \col]
table[
col sep=comma, x=max_iter,
y=LER_per_round,
@@ -1424,7 +1540,7 @@ forget plot, \col]
{3/KITred/triangle,2/KITblue/diamond,1/KITorange/square} {
\edef\temp{\noexpand
\addplot+[mark=\mark, densely dashed,
forget plot, \col]
forget plot, \col]
table[
col sep=comma, x=max_iter,
y=LER_per_round,
@@ -1469,7 +1585,7 @@ forget plot, \col]
included only the messages on the Tanner graph.
$12$ rounds of syndrome extraction were performed and
standard circuit-based depolarizing noise was chosen as the
noise model.
noise model.
The physical error probabilty was fixed to $0.0025$.
}
\end{figure}
@@ -1624,7 +1740,7 @@ noise model.
included only the messages on the Tanner graph.
$12$ rounds of syndrome extraction were performed and
standard circuit-based depolarizing noise was chosen as the
noise model.
noise model.
}
\end{figure}
@@ -1670,7 +1786,7 @@ noise model.
{3/KITred/triangle,4/KITblue/diamond,5/KITorange/square} {
\edef\temp{\noexpand
\addplot+[mark=\mark, densely dashed,
forget plot, \col]
forget plot, \col]
table[
col sep=comma, x=max_iter,
y=LER_per_round,
@@ -1741,7 +1857,7 @@ forget plot, \col]
{3/KITred/triangle,2/KITblue/diamond,1/KITorange/square} {
\edef\temp{\noexpand
\addplot+[mark=\mark, densely dashed,
forget plot, \col]
forget plot, \col]
table[
col sep=comma, x=max_iter,
y=LER_per_round,
@@ -1786,9 +1902,8 @@ forget plot, \col]
included only the messages on the Tanner graph.
$12$ rounds of syndrome extraction were performed and
standard circuit-based depolarizing noise was chosen as the
noise model.
noise model.
The physical error probabilty was fixed to $0.0025$.
}
\end{figure}

View File

@@ -2,4 +2,6 @@
\content{\textbf{Ideas for further research}}
\content{Softer way of decimating VNs}
\content{Systematic study on using different inner decoders (AED,
SED, BPGD, ...)}