1795 lines
67 KiB
TeX
1795 lines
67 KiB
TeX
% TODO: Make all [H] -> [t]
|
|
\chapter{Decoding under Detector Error Models}
|
|
|
|
In \Cref{ch:Fundamentals} we introduced the fundamentals of classical
|
|
error correction, before moving on to quantum information science and
|
|
finally combining the two in \acf{qec}.
|
|
In \Cref{ch:Fault tolerance} we then turned to fault-tolerance, with
|
|
a focus on a specific way of implementing it, called \acfp{dem}.
|
|
In this chapter, we move on from the fundamental concepts and examine
|
|
how to apply them in practice.
|
|
Specifically, we concern ourselves with the practical aspects of decoding
|
|
under \acp{dem}.
|
|
|
|
We investigate decoding \acf{qldpc} codes under \acp{dem} in particular.
|
|
We focus on \ac{qldpc} codes, as they have emerged as leading
|
|
candidates for practical quantum error correction, offering the
|
|
ability to encode more logical qubits per physical qubit than surface
|
|
codes while maintaining favorable threshold properties
|
|
\cite[Sec.~1]{bravyi_high-threshold_2024}.
|
|
Because of this, the decoding algorithms we consider will all be
|
|
related to \acf{bp} in some way.
|
|
Our aim is to build a fault-tolerant \ac{qec} system that works well
|
|
even under consideration of circuit-level noise.
|
|
We must overcome two main challenges to achieve this.
|
|
|
|
First, recall the problems related to degeneracy, which is inherent
|
|
to quantum codes.
|
|
Because multiple minimum-weight codewords exist, the \ac{bp}
|
|
algorithm becomes uncertain of the direction to proceed in.
|
|
Additionally, the commutativity conditions of the stabilizers
|
|
necessitate the existence of short cycles.
|
|
These two aspects together lead to substantial convergence problems
|
|
of \ac{bp} for quantum codes, when it is used on it's own.
|
|
|
|
Second, the consideration of circuit-level noise introduces many more
|
|
error locations into the circuit.
|
|
Using \acp{dem}, we construct a new circuit code and model each of
|
|
these error locations as a new \acf{vn}.
|
|
We also perform multiple rounds of syndrome measuremetns,
|
|
exacerbating the problem.
|
|
This leads to a massively increased computational complexity and
|
|
latency of the decoding process.
|
|
In our experiments using the $\llbracket 144,12,12 \rrbracket$
|
|
\acf{bb} code with $12$ syndrome measurement rounds, for example, the
|
|
number of \acp{vn} was increased from $144$ to $9504$, and the
|
|
number of \acfp{cn} was increased from $72$ to $1008$.
|
|
|
|
The first problem is not inherent to \acp{dem} or fault-tolerance,
|
|
but rather quantum codes in general.
|
|
Many different approaches to solving it exist, usually centered
|
|
around somehow modifying \ac{bp}.
|
|
The most popular approach is combining a few initial
|
|
iterations of \ac{bp} with a second decoding algorithm, \ac{osd}
|
|
\cite{roffe_decoding_2020}.
|
|
Other approaches exist, such as \ac{aed}
|
|
\cite{koutsioumpas_automorphism_2025}, were multiple variations of
|
|
the code are decoded simultaneously to increase the chances of convergence.
|
|
Here, we will focus on the \acf{bpgd} algorithm
|
|
\cite{yao_belief_2024} we already introduced in \Cref{ch:Fundamentals},
|
|
for reasons that will become clear later in the chapter.
|
|
|
|
The second problem is inherent to decoding using \acp{dem}.
|
|
This is an area that has been less studied.
|
|
As we saw in \Cref{sec:Quantum Error Correction}, for \ac{qec},
|
|
latency is the main constraint, not raw computational complexity.
|
|
The main way this is addressed in the literature is \emph{sliding
|
|
window decoding}, which attempts to divide the overall decoding
|
|
problem into many smaller ones that can be solved more efficiently.
|
|
|
|
% TODO: This could potentially be abit more text (e.g., go into
|
|
% SC-LDPC like structure that serves as the inspiration for the
|
|
% 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.
|
|
We will then introduce a modification to the existing algorithm and
|
|
perform numerical simulations to evaluate it.
|
|
|
|
% and reducing latency is the main goal of the existing literature.
|
|
% This is generally done using windowing approaches; either
|
|
% sliding-window based, where the latency is reduced due an earlier
|
|
% start to the decoding process \cite{kuo_fault-tolerant_2024}%
|
|
% \cite{huang_improved_2023}\cite{huang_increasing_2024}\cite{gong_toward_2024},
|
|
% or by decoding multiple windows in parallel
|
|
% \cite{skoric_parallel_2023}\cite{tan_scalable_2023}.
|
|
% This work is based on the sliding-window method.
|
|
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
\section{Sliding-Window Decoding}
|
|
\label{sec:Sliding-Window Decoding}
|
|
|
|
% Spacetime codes
|
|
|
|
\ac{qec} codes are often viewed through the lenses of the
|
|
\emph{space} and \emph{time} dimensions.
|
|
Both directions add redundancy, but they do so in a different way and
|
|
guard against different defects.
|
|
The space dimension corresponds to the redundancy added through the
|
|
code itself, while the time dimension corresponds to the repetition
|
|
of the syndrome measurements \cite[Sec.~IV.B]{dennis_topological_2002}.
|
|
|
|
% Basic idea
|
|
|
|
The idea of sliding-window decoding is to exploit the time-like
|
|
structure by splitting the circuit into overlapping windows along the
|
|
time dimension.
|
|
Each of these windows is then decoded separately.
|
|
|
|
%%%%%%%%%%%%%%%%
|
|
\subsection{Existing Literature}
|
|
\label{subsec: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]
|
|
\centering
|
|
|
|
\tikzset{
|
|
literature/.append style={
|
|
minimum width=6mm,
|
|
minimum height=6mm,
|
|
text width=18mm,
|
|
align=left,
|
|
}
|
|
}
|
|
\tikzset{
|
|
heading/.append style={
|
|
draw=black,
|
|
minimum width=22mm,
|
|
minimum height=6mm,
|
|
align=left,
|
|
rounded corners = 1mm,
|
|
}
|
|
}
|
|
|
|
\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[literature, below right=0mm 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=of huang] (gong) {\cite{gong_toward_2024}};
|
|
|
|
\coordinate (code-anchor) at ($(code.south) + (-2mm,0)$);
|
|
\coordinate (top-anchor) at ($(top.south) + (-5mm,0)$);
|
|
\coordinate (qldpc-anchor) at ($(qldpc.south) + (-5mm,0)$);
|
|
|
|
\draw (code-anchor) |- (top);
|
|
\draw (code-anchor) |- (qldpc);
|
|
|
|
\draw (top-anchor) |- (dennis);
|
|
\draw (top-anchor) |- (tan);
|
|
\draw (top-anchor) |- (skoric);
|
|
\draw (top-anchor) |- (bombin);
|
|
\draw (top-anchor) |- (kuo);
|
|
|
|
\draw (qldpc-anchor) |- (huang);
|
|
\draw (qldpc-anchor) |- (gong);
|
|
|
|
\draw [
|
|
line width=1pt,
|
|
decorate,
|
|
decoration={brace,amplitude=2mm,raise=5mm}
|
|
]
|
|
(dennis.north east) -- (dennis.south east)
|
|
node[midway,right,xshift=10mm]{Sequential};
|
|
|
|
\draw [
|
|
line width=1pt,
|
|
decorate,
|
|
decoration={brace,amplitude=2mm,raise=5mm}
|
|
]
|
|
(tan.north east) -- (kuo.south east)
|
|
node[midway,right,xshift=10mm]{Parallel};
|
|
|
|
\draw [
|
|
line width=1pt,
|
|
decorate,
|
|
decoration={brace,amplitude=2mm,raise=5mm}
|
|
]
|
|
(huang.north east) -- (gong.south east)
|
|
node[midway,right,xshift=10mm]{Sequential};
|
|
% tex-fmt: on
|
|
\end{tikzpicture}
|
|
|
|
\caption{Overview of literature on sliding-window decoding.}
|
|
\label{fig:literature}
|
|
\end{figure}
|
|
|
|
% \red{
|
|
% Existing work
|
|
% \begin{itemize}
|
|
% \item \cite{gong_toward_2024}
|
|
% \begin{itemize}
|
|
% \item BB codes (QLDPC)
|
|
% \item Circuit-level noise
|
|
% \item Sequential
|
|
% \item Cites $\underbrace{\cite{dennis_topological_2002}
|
|
% \cite{tan_scalable_2023}
|
|
% \cite{skoric_parallel_2023}}_\text{Surface code}
|
|
% \underbrace{\cite{huang_improved_2023}}_\text{QLDPC,Phenomenological}$
|
|
% \end{itemize}
|
|
% \item \cite{huang_improved_2023}
|
|
% \begin{itemize}
|
|
% \item Hypergraph product codes, Lifted product codes (QLDPC)
|
|
% \item Phenomenological noise
|
|
% \item Sequential
|
|
% \item Cites $\underbrace{\cite{dennis_topological_2002}
|
|
% [Huang, Brown, 2021]
|
|
% \cite{skoric_parallel_2023}
|
|
% \cite{tan_scalable_2023}
|
|
% \cite{bombin_modular_2023}}_\text{Surface code}$
|
|
% \end{itemize}
|
|
% \item \cite{dennis_topological_2002}
|
|
% \begin{itemize}
|
|
% \item Surface code (Topological)
|
|
% \item No idea what noise, don't care either (Gong et
|
|
% al. say circuit-level noise)
|
|
% \item ``Overlapping recovery'' -> Sequential
|
|
% \end{itemize}
|
|
% \item \cite{tan_scalable_2023}
|
|
% \begin{itemize}
|
|
% \item Surface code (Topological)
|
|
% \item Circuit-level noise
|
|
% \item Parallel
|
|
% \item Cites \cite{dennis_topological_2002}
|
|
% \end{itemize}
|
|
% \item \cite{skoric_parallel_2023}
|
|
% \begin{itemize}
|
|
% \item Surface code (Topological)
|
|
% \item Circuit-level noise
|
|
% \item Parallel
|
|
% \item Cites \cite{dennis_topological_2002}
|
|
% \end{itemize}
|
|
% \item \cite{huang_increasing_2024}
|
|
% \begin{itemize}
|
|
% \item Same as \cite{huang_improved_2023}
|
|
% \end{itemize}
|
|
% \item \cite{kuo_fault-tolerant_2024}
|
|
% \begin{itemize}
|
|
% \item Toric codes (Topological)
|
|
% \item Circuit-level noise
|
|
% \item Parallel
|
|
% \item Cites \cite{dennis_topological_2002}
|
|
% \cite{tan_scalable_2023}
|
|
% \cite{skoric_parallel_2023} \cite{gong_toward_2024}
|
|
% \end{itemize}
|
|
% \item \cite{bombin_modular_2023}
|
|
% \begin{itemize}
|
|
% \item Surface codes (Topological)
|
|
% \item No idea if it's even fault-tolerant
|
|
% \item Parallel
|
|
% \item Cites \cite{dennis_topological_2002}
|
|
% \cite{tan_scalable_2023}
|
|
% \cite{skoric_parallel_2023} \cite{leverrier_decoding_2022}
|
|
% \end{itemize}
|
|
% % This is not BP and not parallelization over the time dimension
|
|
% % \item \cite{leverrier_decoding_2022}
|
|
% % \begin{itemize}
|
|
% % \item Quantum tanner codes (QLDPC)
|
|
% % \item Parallel
|
|
% % \item No idea if it's even fault-tolerant
|
|
% % \item Cites [don't care]
|
|
% % \end{itemize}
|
|
% \item \cite{kang_quits_2025}
|
|
% \begin{itemize}
|
|
% \item Cites \cite{huang_increasing_2024} \ldots
|
|
% \end{itemize}
|
|
% \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}
|
|
|
|
We build on the approach taken by \cite{huang_increasing_2024} and
|
|
\cite{gong_toward_2024}.
|
|
|
|
% High-level overview of Sliding-Window decoding
|
|
|
|
\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)}
|
|
|
|
% Detailed explanation of sliding-window decoding
|
|
|
|
\content{We look at rows not columns}
|
|
\content{Define W}
|
|
\content{Define F}
|
|
\content{Explain how we get the columns once we know the rows}
|
|
\content{\textbf{General note}: Mathematical definitions where possible}
|
|
|
|
% Syndrome update
|
|
|
|
\content{Explain commit region}
|
|
\content{Why we need to update the syndrome}
|
|
\content{How we update the syndrome}
|
|
\content{\textbf{General note}: Mathematical definitions where possible}
|
|
|
|
% Complete process
|
|
|
|
\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]
|
|
\centering
|
|
|
|
\hspace*{-114mm}%
|
|
\begin{tikzpicture}
|
|
\draw[decorate, decoration={brace, amplitude=10pt}, line width=1pt]
|
|
(0,0) -- (3.1,0) node[midway, above=4mm] {Commit region};
|
|
\end{tikzpicture}
|
|
|
|
\centering
|
|
\includegraphics[scale=0.75]{res/72_bb_dem.pdf}
|
|
|
|
\vspace*{-25.3mm}
|
|
|
|
\hspace*{-98mm}%
|
|
\begin{tikzpicture}
|
|
\draw[{Latex}-{Latex}, line width=.7pt] (0, -0.75mm) -- (0, 5mm);
|
|
\draw[line width=1pt] (-1mm,-0.75mm) --
|
|
(3mm,-0.75mm);
|
|
\draw[line width=1pt] (-1mm,5mm) -- (3mm,5mm);
|
|
\node[left] at (-2mm,2.125mm) {$\sim W$};
|
|
|
|
\draw[{Latex}-{Latex}, line width=.3pt] (6.5cm,1.6mm) -- (6.5cm,5mm);
|
|
\draw[line width=1pt] (6.5cm,4.9mm) -- (6.5cm,7mm);
|
|
\node[above] at (6.5cm,7mm) {$\sim F$};
|
|
\end{tikzpicture}
|
|
|
|
\vspace*{10mm}
|
|
|
|
\caption{
|
|
Visualization of the windowing process on the detector
|
|
error matrix.
|
|
}
|
|
\label{fig:windowing_pcm}
|
|
\end{figure}
|
|
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
\section{Warm-Start Sliding-Window Decoding}
|
|
\label{sec:warm_start_bp}
|
|
|
|
% Intro
|
|
|
|
\content{Change view from PCM to Tanner graph}
|
|
\content{Call attention to SC-LDPC-like structure}
|
|
\content{High-level overview of modification}
|
|
|
|
% Warm-Start decoding for BP
|
|
|
|
\content{Pass messages to next window}
|
|
\content{(?) Explicitly mention initialization using only CN->VN
|
|
messages + swapping of CN and VN update?}
|
|
\content{(?) Algorithm}
|
|
|
|
% Warm-Start decoding for BPGD
|
|
|
|
\content{Modified structure of BPGD $\rightarrow$ In addition to
|
|
messages, pass decimation info}
|
|
\content{(?) Explicitly mention decimation info = channel llrs?}
|
|
\content{(?) Algorithm}
|
|
|
|
\begin{figure}[H]
|
|
\centering
|
|
|
|
\tikzset{
|
|
VN/.style={
|
|
circle, fill=KITgreen, minimum width=1mm, minimum height=1mm,
|
|
},
|
|
CN/.style={
|
|
rectangle, fill=KITblue, minimum width=1mm, minimum height=1mm,
|
|
},
|
|
}
|
|
|
|
\begin{tikzpicture}[node distance = 5mm]
|
|
\node[VN] (vn00) {};
|
|
\node[VN, below = of vn00] (vn01) {};
|
|
\node[VN, below = of vn01] (vn02) {};
|
|
\node[VN, below = of vn02] (vn03) {};
|
|
\node[VN, below = of vn03] (vn04) {};
|
|
|
|
\coordinate (temp) at ($(vn01)!0.5!(vn02)$);
|
|
|
|
\node[CN, left =10mm of temp] (cn00) {};
|
|
\node[CN, below = of cn00] (cn01) {};
|
|
|
|
\draw (vn00) -- (cn00);
|
|
\draw (vn01) -- (cn00);
|
|
\draw (vn03) -- (cn00);
|
|
\draw (vn01) -- (cn01);
|
|
\draw (vn02) -- (cn01);
|
|
\draw (vn04) -- (cn01);
|
|
|
|
\foreach \i in {1,2,3,4} {
|
|
\pgfmathtruncatemacro{\prev}{\i-1}
|
|
|
|
\node[VN, right = 25mm of vn\prev 0] (vn\i0) {};
|
|
\node[VN, below = of vn\i0] (vn\i1) {};
|
|
\node[VN, below = of vn\i1] (vn\i2) {};
|
|
\node[VN, below = of vn\i2] (vn\i3) {};
|
|
\node[VN, below = of vn\i3] (vn\i4) {};
|
|
|
|
\coordinate (temp) at ($(vn\i1)!0.5!(vn\i2)$);
|
|
|
|
\node[CN, left = 10mm of temp] (cn\i0) {};
|
|
\node[CN, below = of cn\i0] (cn\i1) {};
|
|
|
|
\draw (vn\i0) -- (cn\i0);
|
|
\draw (vn\i1) -- (cn\i0);
|
|
\draw (vn\i3) -- (cn\i0);
|
|
\draw (vn\i1) -- (cn\i1);
|
|
\draw (vn\i2) -- (cn\i1);
|
|
\draw (vn\i4) -- (cn\i1);
|
|
}
|
|
|
|
\foreach \i in {1,2,3,4} {
|
|
\pgfmathtruncatemacro{\prev}{\i-1}
|
|
|
|
\draw (vn\prev 3) -- (cn\i 0);
|
|
\draw (vn\prev 4) -- (cn\i 1);
|
|
}
|
|
|
|
\node[
|
|
draw, inner sep=5mm,line width=1pt,
|
|
fit=(vn00)(vn04)(cn00)(cn01)(vn20)(vn24)(cn20)(cn21)
|
|
]
|
|
(box1) {};
|
|
\node[
|
|
draw, dashed, inner sep=5mm, inner ysep=8mm,line width=1pt,
|
|
fit=(vn10)(vn14)(cn10)(cn11)(vn30)(vn34)(cn30)(cn31)
|
|
]
|
|
(box2) {};
|
|
|
|
% Marker for W on the bottom
|
|
\draw[line width=1pt]
|
|
([yshift=-5mm, line width=1pt]box1.south west) -- ++(0,-4mm)
|
|
coordinate (dim1l);
|
|
\draw[line width=1pt]
|
|
([yshift=-5mm]box1.south east) -- ++(0,-4mm)
|
|
coordinate (dim1r);
|
|
\draw[{Latex}-{Latex}, line width=1pt]
|
|
([yshift=1mm]dim1l) -- ([yshift=1mm]dim1r)
|
|
node[midway, below=2pt] {$W$};
|
|
|
|
% Marker for F on top
|
|
\draw[line width=1pt]
|
|
([yshift=3mm]box2.north west) -- ++(0,4mm)
|
|
coordinate (dim3l);
|
|
\draw[line width=1pt]
|
|
([yshift=3mm]box2.north west -| box1.north west) -- ++(0,4mm)
|
|
coordinate (dim3r);
|
|
\draw[{Latex}-{Latex}, line width=1pt]
|
|
([yshift=-1mm]dim3l) -- ([yshift=-1mm]dim3r)
|
|
node[midway, above=2pt] {$F$};
|
|
|
|
% Arrow on the top right
|
|
\draw[-{Latex}, line width=1pt]
|
|
([yshift=8mm] box1.north east) -- ++(28mm,0);
|
|
\end{tikzpicture}
|
|
|
|
\caption{Visualization of the windowing process on the Tanner graph.}
|
|
\label{fig:windowing_tanner}
|
|
\end{figure}
|
|
|
|
\begin{figure}[H]
|
|
\centering
|
|
|
|
\tikzset{
|
|
VN/.style={
|
|
circle, fill=KITgreen, minimum width=1mm, minimum height=1mm,
|
|
},
|
|
CN/.style={
|
|
rectangle, fill=KITblue, minimum width=1mm, minimum height=1mm,
|
|
},
|
|
}
|
|
|
|
\begin{tikzpicture}[node distance = 5mm]
|
|
\node[VN] (vn00) {};
|
|
\node[VN, below = of vn00] (vn01) {};
|
|
\node[VN, below = of vn01] (vn02) {};
|
|
\node[VN, below = of vn02] (vn03) {};
|
|
\node[VN, below = of vn03] (vn04) {};
|
|
|
|
\coordinate (temp) at ($(vn01)!0.5!(vn02)$);
|
|
|
|
\node[CN, left =10mm of temp] (cn00) {};
|
|
\node[CN, below = of cn00] (cn01) {};
|
|
|
|
\draw (vn00) -- (cn00);
|
|
\draw (vn01) -- (cn00);
|
|
\draw (vn03) -- (cn00);
|
|
\draw (vn01) -- (cn01);
|
|
\draw (vn02) -- (cn01);
|
|
\draw (vn04) -- (cn01);
|
|
|
|
\foreach \i in {1,2,3,4} {
|
|
\pgfmathtruncatemacro{\prev}{\i-1}
|
|
|
|
\node[VN, right = 25mm of vn\prev 0] (vn\i0) {};
|
|
\node[VN, below = of vn\i0] (vn\i1) {};
|
|
\node[VN, below = of vn\i1] (vn\i2) {};
|
|
\node[VN, below = of vn\i2] (vn\i3) {};
|
|
\node[VN, below = of vn\i3] (vn\i4) {};
|
|
|
|
\coordinate (temp) at ($(vn\i1)!0.5!(vn\i2)$);
|
|
|
|
\node[CN, left = 10mm of temp] (cn\i0) {};
|
|
\node[CN, below = of cn\i0] (cn\i1) {};
|
|
|
|
\draw (vn\i0) -- (cn\i0);
|
|
\draw (vn\i1) -- (cn\i0);
|
|
\draw (vn\i3) -- (cn\i0);
|
|
\draw (vn\i1) -- (cn\i1);
|
|
\draw (vn\i2) -- (cn\i1);
|
|
\draw (vn\i4) -- (cn\i1);
|
|
}
|
|
|
|
\foreach \i in {1,2,3,4} {
|
|
\pgfmathtruncatemacro{\prev}{\i-1}
|
|
|
|
\draw (vn\prev 3) -- (cn\i 0);
|
|
\draw (vn\prev 4) -- (cn\i 1);
|
|
}
|
|
|
|
\node[
|
|
draw, inner sep=5mm,line width=1pt,
|
|
fit=(vn00)(vn04)(cn00)(cn01)(vn20)(vn24)(cn20)(cn21)
|
|
]
|
|
(box1) {};
|
|
\node[
|
|
draw, dashed, inner sep=5mm, inner ysep=8mm,line width=1pt,
|
|
fit=(vn10)(vn14)(cn10)(cn11)(vn30)(vn34)(cn30)(cn31)
|
|
]
|
|
(box2) {};
|
|
|
|
\draw[KITorange, line width=2pt] (cn10) -- (vn10);
|
|
\draw[KITorange, line width=2pt] (cn10) -- (vn11);
|
|
\draw[KITorange, line width=2pt] (cn10) -- (vn13);
|
|
\draw[KITorange, line width=2pt] (cn11) -- (vn11);
|
|
\draw[KITorange, line width=2pt] (cn11) -- (vn12);
|
|
\draw[KITorange, line width=2pt] (cn11) -- (vn14);
|
|
|
|
\draw[KITorange, line width=2pt] (vn13) -- (cn20);
|
|
\draw[KITorange, line width=2pt] (vn14) -- (cn21);
|
|
|
|
\draw[KITorange, line width=2pt] (cn20) -- (vn20);
|
|
\draw[KITorange, line width=2pt] (cn20) -- (vn21);
|
|
\draw[KITorange, line width=2pt] (cn20) -- (vn23);
|
|
\draw[KITorange, line width=2pt] (cn21) -- (vn21);
|
|
\draw[KITorange, line width=2pt] (cn21) -- (vn22);
|
|
\draw[KITorange, line width=2pt] (cn21) -- (vn24);
|
|
|
|
% Marker for W on the bottom
|
|
\draw[line width=1pt]
|
|
([yshift=-5mm, line width=1pt]box1.south west) -- ++(0,-4mm)
|
|
coordinate (dim1l);
|
|
\draw[line width=1pt]
|
|
([yshift=-5mm]box1.south east) -- ++(0,-4mm)
|
|
coordinate (dim1r);
|
|
\draw[{Latex}-{Latex}, line width=1pt]
|
|
([yshift=1mm]dim1l) -- ([yshift=1mm]dim1r)
|
|
node[midway, below=2pt] {$W$};
|
|
|
|
% Marker for F on top
|
|
\draw[line width=1pt]
|
|
([yshift=3mm]box2.north west) -- ++(0,4mm)
|
|
coordinate (dim3l);
|
|
\draw[line width=1pt]
|
|
([yshift=3mm]box2.north west -| box1.north west) -- ++(0,4mm)
|
|
coordinate (dim3r);
|
|
\draw[{Latex}-{Latex}, line width=1pt]
|
|
([yshift=-1mm]dim3l) -- ([yshift=-1mm]dim3r)
|
|
node[midway, above=2pt] {$F$};
|
|
|
|
% Arrow on the top right
|
|
\draw[-{Latex}, line width=1pt]
|
|
([yshift=8mm] box1.north east) -- ++(28mm,0);
|
|
\end{tikzpicture}
|
|
|
|
\caption{
|
|
Visualization of the messages used for the
|
|
initialization of the next window.
|
|
}
|
|
\label{fig:messages_tanner}
|
|
\end{figure}
|
|
|
|
\begin{figure}[H]
|
|
\centering
|
|
|
|
\tikzset{
|
|
VN/.style={
|
|
circle, fill=KITgreen, minimum width=1mm, minimum height=1mm,
|
|
},
|
|
CN/.style={
|
|
rectangle, fill=KITblue, minimum width=1mm, minimum height=1mm,
|
|
},
|
|
}
|
|
|
|
\begin{tikzpicture}[node distance = 5mm]
|
|
\node[VN] (vn00) {};
|
|
\node[VN, below = of vn00] (vn01) {};
|
|
\node[VN, below = of vn01] (vn02) {};
|
|
\node[VN, below = of vn02] (vn03) {};
|
|
\node[VN, below = of vn03] (vn04) {};
|
|
|
|
\coordinate (temp) at ($(vn01)!0.5!(vn02)$);
|
|
|
|
\node[CN, left =10mm of temp] (cn00) {};
|
|
\node[CN, below = of cn00] (cn01) {};
|
|
|
|
\draw (vn00) -- (cn00);
|
|
\draw (vn01) -- (cn00);
|
|
\draw (vn03) -- (cn00);
|
|
\draw (vn01) -- (cn01);
|
|
\draw (vn02) -- (cn01);
|
|
\draw (vn04) -- (cn01);
|
|
|
|
\foreach \i in {1,2,3,4} {
|
|
\pgfmathtruncatemacro{\prev}{\i-1}
|
|
|
|
\node[VN, right = 25mm of vn\prev 0] (vn\i0) {};
|
|
\node[VN, below = of vn\i0] (vn\i1) {};
|
|
\node[VN, below = of vn\i1] (vn\i2) {};
|
|
\node[VN, below = of vn\i2] (vn\i3) {};
|
|
\node[VN, below = of vn\i3] (vn\i4) {};
|
|
|
|
\coordinate (temp) at ($(vn\i1)!0.5!(vn\i2)$);
|
|
|
|
\node[CN, left = 10mm of temp] (cn\i0) {};
|
|
\node[CN, below = of cn\i0] (cn\i1) {};
|
|
|
|
\draw (vn\i0) -- (cn\i0);
|
|
\draw (vn\i1) -- (cn\i0);
|
|
\draw (vn\i3) -- (cn\i0);
|
|
\draw (vn\i1) -- (cn\i1);
|
|
\draw (vn\i2) -- (cn\i1);
|
|
\draw (vn\i4) -- (cn\i1);
|
|
}
|
|
|
|
\foreach \i in {1,2,3,4} {
|
|
\pgfmathtruncatemacro{\prev}{\i-1}
|
|
|
|
\draw (vn\prev 3) -- (cn\i 0);
|
|
\draw (vn\prev 4) -- (cn\i 1);
|
|
}
|
|
|
|
\node[
|
|
draw, inner sep=5mm,line width=1pt,
|
|
fit=(vn00)(vn04)(cn00)(cn01)(vn20)(vn24)(cn20)(cn21)
|
|
]
|
|
(box1) {};
|
|
\node[
|
|
draw, dashed, inner sep=5mm, inner ysep=8mm,line width=1pt,
|
|
fit=(vn10)(vn14)(cn10)(cn11)(vn30)(vn34)(cn30)(cn31)
|
|
]
|
|
(box2) {};
|
|
|
|
\draw[KITorange, line width=2pt] (cn10) -- (vn10);
|
|
\draw[KITorange, line width=2pt] (cn10) -- (vn11);
|
|
\draw[KITorange, line width=2pt] (cn10) -- (vn13);
|
|
\draw[KITorange, line width=2pt] (cn11) -- (vn11);
|
|
\draw[KITorange, line width=2pt] (cn11) -- (vn12);
|
|
\draw[KITorange, line width=2pt] (cn11) -- (vn14);
|
|
|
|
\draw[KITorange, line width=2pt] (vn13) -- (cn20);
|
|
\draw[KITorange, line width=2pt] (vn14) -- (cn21);
|
|
|
|
\draw[KITorange, line width=2pt] (cn20) -- (vn20);
|
|
\draw[KITorange, line width=2pt] (cn20) -- (vn21);
|
|
\draw[KITorange, line width=2pt] (cn20) -- (vn23);
|
|
\draw[KITorange, line width=2pt] (cn21) -- (vn21);
|
|
\draw[KITorange, line width=2pt] (cn21) -- (vn22);
|
|
\draw[KITorange, line width=2pt] (cn21) -- (vn24);
|
|
|
|
\node[VN, draw=KITorange, fill=KITorange] at (vn10) {};
|
|
\node[VN, draw=KITorange, fill=KITorange] at (vn11) {};
|
|
\node[VN, draw=KITorange, fill=KITorange] at (vn12) {};
|
|
\node[VN, draw=KITorange, fill=KITorange] at (vn13) {};
|
|
\node[VN, draw=KITorange, fill=KITorange] at (vn14) {};
|
|
|
|
\node[VN, draw=KITorange, fill=KITorange] at (vn20) {};
|
|
\node[VN, draw=KITorange, fill=KITorange] at (vn21) {};
|
|
\node[VN, draw=KITorange, fill=KITorange] at (vn22) {};
|
|
\node[VN, draw=KITorange, fill=KITorange] at (vn23) {};
|
|
\node[VN, draw=KITorange, fill=KITorange] at (vn24) {};
|
|
|
|
% Marker for W on the bottom
|
|
\draw[line width=1pt]
|
|
([yshift=-5mm, line width=1pt]box1.south west) -- ++(0,-4mm)
|
|
coordinate (dim1l);
|
|
\draw[line width=1pt]
|
|
([yshift=-5mm]box1.south east) -- ++(0,-4mm)
|
|
coordinate (dim1r);
|
|
\draw[{Latex}-{Latex}, line width=1pt]
|
|
([yshift=1mm]dim1l) -- ([yshift=1mm]dim1r)
|
|
node[midway, below=2pt] {$W$};
|
|
|
|
% Marker for F on top
|
|
\draw[line width=1pt]
|
|
([yshift=3mm]box2.north west) -- ++(0,4mm)
|
|
coordinate (dim3l);
|
|
\draw[line width=1pt]
|
|
([yshift=3mm]box2.north west -| box1.north west) -- ++(0,4mm)
|
|
coordinate (dim3r);
|
|
\draw[{Latex}-{Latex}, line width=1pt]
|
|
([yshift=-1mm]dim3l) -- ([yshift=-1mm]dim3r)
|
|
node[midway, above=2pt] {$F$};
|
|
|
|
% Arrow on the top right
|
|
\draw[-{Latex}, line width=1pt]
|
|
([yshift=8mm] box1.north east) -- ++(28mm,0);
|
|
\end{tikzpicture}
|
|
|
|
\caption{
|
|
Visualization of the messages and decimation information used for the
|
|
initialization of the next window.
|
|
}
|
|
\label{fig:messages_decimation_tanner}
|
|
\end{figure}
|
|
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
\section{Numerical results}
|
|
\label{sec:warm_start_bpgd}
|
|
|
|
% Intro
|
|
|
|
\content{Some info on used code (what it is, why it was chosen)}
|
|
\content{Some info on simulation setup (Stim, circuit-level noise,
|
|
standard circuit-based depolarizing noise model, etc.)}
|
|
\content{All datapoints generated with at least 100 error frames}
|
|
|
|
%%%%%%%%%%%%%%%%
|
|
\subsection{Belief Propagation}
|
|
\label{subsec:Belief Propagation}
|
|
|
|
% Simulation setup
|
|
|
|
\content{Use min-sum}
|
|
|
|
\begin{figure}[H]
|
|
\centering
|
|
\begin{tikzpicture}
|
|
\begin{axis}[
|
|
width=\figwidth,
|
|
height=\figheight,
|
|
ymode=log,
|
|
legend style={
|
|
cells={anchor=west},
|
|
cells={align=left},
|
|
},
|
|
enlargelimits=false,
|
|
ymin=1e-5, ymax=2e-1,
|
|
grid=both,
|
|
legend pos = south east,
|
|
xtick={0.001,0.0015,...,0.004},
|
|
xticklabel style={/pgf/number format/fixed},
|
|
xticklabel style={/pgf/number format/precision=4},
|
|
scaled x ticks=false,
|
|
xlabel={Physical error rate},
|
|
ylabel={Per-round-LER},
|
|
]
|
|
|
|
\foreach \W/\col/\mark in
|
|
{3/KITred/triangle*,4/KITblue/diamond*,5/KITorange/square*} {
|
|
\edef\temp{\noexpand
|
|
\addplot+[mark=\mark, solid, mark
|
|
options={fill=\col}, \col]
|
|
table[
|
|
col sep=comma, x=physical_p,
|
|
y=LER_per_round,
|
|
]
|
|
{res/sim/WF/WindowingSyndromeMinSumDecoder/max_iter_200/pass_soft_info_False/F_1/W_\W/LERs.csv};
|
|
}
|
|
\temp
|
|
|
|
\addlegendentryexpanded{$W = \W$}
|
|
}
|
|
|
|
\addplot+[mark=*, solid, mark options={fill=black}, black]
|
|
table[
|
|
col sep=comma, x=physical_p,
|
|
y=LER_per_round,
|
|
]
|
|
{res/sim/whole/SyndromeMinSumDecoder/max_iter_200/LERs.csv};
|
|
|
|
\addlegendentry{Whole}
|
|
\end{axis}
|
|
\end{tikzpicture}
|
|
|
|
\caption{
|
|
Comparison of the decoding performance of the $\llbracket
|
|
144,12,12 \rrbracket$ \ac{bb} code under min-sum decoding
|
|
($200$ iterations) for different window sizes.
|
|
The step size was fixed to $F=1$, $12$ rounds of syndrome
|
|
extraction were performed and the noise model is
|
|
standard circuit-based depolarizing noise.
|
|
}
|
|
\end{figure}
|
|
|
|
\begin{figure}[H]
|
|
\centering
|
|
\begin{tikzpicture}
|
|
\begin{axis}[
|
|
width=\figwidth,
|
|
height=\figheight,
|
|
ymode=log,
|
|
legend style={
|
|
cells={anchor=west},
|
|
cells={align=left},
|
|
},
|
|
enlargelimits=false,
|
|
ymin=1e-5, ymax=2e-1,
|
|
grid=both,
|
|
legend pos = south east,
|
|
xtick={0.001,0.0015,...,0.004},
|
|
xticklabel style={/pgf/number format/fixed},
|
|
xticklabel style={/pgf/number format/precision=4},
|
|
scaled x ticks=false,
|
|
xlabel={Physical error rate},
|
|
ylabel={Per-round-LER},
|
|
extra description/.code={
|
|
\node[rotate=90, anchor=south]
|
|
at ([xshift=10mm]current axis.east)
|
|
{Warm s. (---), Cold s. (- - -)};
|
|
},
|
|
]
|
|
|
|
\foreach \W/\col/\mark in
|
|
{3/KITred/triangle,4/KITblue/diamond,5/KITorange/square} {
|
|
\edef\temp{\noexpand
|
|
\addplot+[
|
|
mark=\mark, densely dashed, mark options={fill=\col},
|
|
\col, forget plot
|
|
]
|
|
table[
|
|
col sep=comma, x=physical_p,
|
|
y=LER_per_round,
|
|
]
|
|
{res/sim/WF/WindowingSyndromeMinSumDecoder/max_iter_200/pass_soft_info_False/F_1/W_\W/LERs.csv};
|
|
}
|
|
\temp
|
|
}
|
|
|
|
\foreach \W/\col/\mark in
|
|
{3/KITred/triangle*,4/KITblue/diamond*,5/KITorange/square*} {
|
|
\edef\temp{\noexpand
|
|
\addplot+[mark=\mark, solid, mark
|
|
options={fill=\col}, \col]
|
|
table[
|
|
col sep=comma, x=physical_p,
|
|
y=LER_per_round,
|
|
]
|
|
{res/sim/WF/WindowingSyndromeMinSumDecoder/max_iter_200/pass_soft_info_True/F_1/W_\W/LERs.csv};
|
|
}
|
|
\temp
|
|
|
|
\addlegendentryexpanded{$W = \W$}
|
|
}
|
|
|
|
\addplot+[mark=*, solid, mark options={fill=black}, black]
|
|
table[
|
|
col sep=comma, x=physical_p,
|
|
y=LER_per_round,
|
|
]
|
|
{res/sim/whole/SyndromeMinSumDecoder/max_iter_200/LERs.csv};
|
|
|
|
\addlegendentry{Whole}
|
|
\end{axis}
|
|
\end{tikzpicture}
|
|
|
|
\caption{
|
|
Comparison of the decoding performance of cold and warm-start
|
|
decoding under the $\llbracket 144,12,12 \rrbracket$ \ac{bb}
|
|
code for different window sizes.
|
|
Decoding was performed using the min-sum algorithm ($200$
|
|
iterations).
|
|
The step size was fixed to $F=1$, $12$ rounds of syndrome
|
|
extraction were performed and the noise model is
|
|
standard circuit-based depolarizing noise.
|
|
}
|
|
\end{figure}
|
|
|
|
\begin{figure}[H]
|
|
\centering
|
|
\begin{tikzpicture}
|
|
\begin{axis}[
|
|
width=\figwidth,
|
|
height=\figheight,
|
|
ymode=log,
|
|
legend style={
|
|
cells={anchor=west},
|
|
cells={align=left},
|
|
},
|
|
enlargelimits=false,
|
|
ymin=1e-5, ymax=2e-1,
|
|
grid=both,
|
|
legend pos = south east,
|
|
xtick={0.001,0.0015,...,0.004},
|
|
xticklabel style={/pgf/number format/fixed},
|
|
xticklabel style={/pgf/number format/precision=4},
|
|
scaled x ticks=false,
|
|
xlabel={Physical error rate},
|
|
ylabel={Per-round-LER},
|
|
extra description/.code={
|
|
\node[rotate=90, anchor=south]
|
|
at ([xshift=10mm]current axis.east)
|
|
{Warm s. (---), Cold s. (- - -)};
|
|
},
|
|
]
|
|
|
|
\foreach \F/\col/\mark in
|
|
{3/KITred/triangle,2/KITblue/diamond,1/KITorange/square} {
|
|
\edef\temp{\noexpand
|
|
\addplot+[
|
|
mark=\mark, densely dashed, mark options={fill=\col},
|
|
\col, forget plot
|
|
]
|
|
table[
|
|
col sep=comma, x=physical_p,
|
|
y=LER_per_round,
|
|
]
|
|
{res/sim/WF/WindowingSyndromeMinSumDecoder/max_iter_200/pass_soft_info_False/F_\F/W_5/LERs.csv};
|
|
}
|
|
\temp
|
|
}
|
|
|
|
\foreach \F/\col/\mark in
|
|
{3/KITred/triangle*,2/KITblue/diamond*,1/KITorange/square*} {
|
|
\edef\temp{\noexpand
|
|
\addplot+[mark=\mark, solid, mark
|
|
options={fill=\col}, \col]
|
|
table[
|
|
col sep=comma, x=physical_p,
|
|
y=LER_per_round,
|
|
]
|
|
{res/sim/WF/WindowingSyndromeMinSumDecoder/max_iter_200/pass_soft_info_True/F_\F/W_5/LERs.csv};
|
|
}
|
|
\temp
|
|
|
|
\addlegendentryexpanded{$F = \F$}
|
|
}
|
|
\end{axis}
|
|
\end{tikzpicture}
|
|
|
|
\caption{
|
|
Comparison of the decoding performance of cold and warm-start
|
|
decoding under the $\llbracket 144,12,12 \rrbracket$ \ac{bb}
|
|
code for different step sizes.
|
|
Decoding was performed using the min-sum algorithm ($200$
|
|
iterations).
|
|
The window size was fixed to $W=5$, $12$ rounds of syndrome
|
|
extraction were performed and the noise model is
|
|
standard circuit-based depolarizing noise.
|
|
}
|
|
\end{figure}
|
|
|
|
\begin{figure}[H]
|
|
\centering
|
|
\begin{subfigure}{0.48\textwidth}
|
|
\centering
|
|
\hspace*{-6mm}
|
|
\begin{tikzpicture}
|
|
\begin{axis}[
|
|
width=8cm,
|
|
height=6cm,
|
|
ymode=log,
|
|
% xmode=log,
|
|
legend style={
|
|
cells={anchor=west},
|
|
cells={align=left},
|
|
},
|
|
enlargelimits=false,
|
|
ymin=1e-3, ymax=1e-1,
|
|
grid=both,
|
|
legend pos = north east,
|
|
xtick={32,512,1024,2048,4096},
|
|
% xtick={0.001,0.0015,...,0.004},
|
|
xticklabels =
|
|
{$32$,$512$,$1{,}024$,,$2{,}048$,,$3{,}072$,,$4{,}096$},
|
|
xtick={32, 512, 1024, 1536, 2048, 2560, 3072, 3584, 4096},
|
|
xticklabel style={/pgf/number format/fixed},
|
|
xticklabel style={/pgf/number format/precision=4},
|
|
x tick label style={rotate=45, anchor=north east,
|
|
inner sep=1mm},
|
|
scaled x ticks=false,
|
|
xlabel={Number of BP iterations},
|
|
ylabel={Per-round-LER},
|
|
% extra description/.code={
|
|
% \node[rotate=90, anchor=south]
|
|
% at ([xshift=10mm]current axis.east)
|
|
% {Warm s. (---), Cold s. (- - -)};
|
|
% },
|
|
]
|
|
|
|
\foreach \W/\col/\mark in
|
|
{3/KITred/triangle,4/KITblue/diamond,5/KITorange/square} {
|
|
\edef\temp{\noexpand
|
|
\addplot+[mark=\mark, densely dashed,
|
|
forget plot, \col]
|
|
table[
|
|
col sep=comma, x=max_iter,
|
|
y=LER_per_round,
|
|
]
|
|
{res/sim/max_iter/WindowingSyndromeMinSumDecoder/p_0.0025/pass_soft_info_False/F_1/W_\W/LERs.csv};
|
|
}
|
|
\temp
|
|
}
|
|
|
|
\foreach \W/\col/\mark in
|
|
{3/KITred/triangle*,4/KITblue/diamond*,5/KITorange/square*} {
|
|
\edef\temp{\noexpand
|
|
\addplot+[mark=\mark, solid, mark
|
|
options={fill=\col}, \col]
|
|
table[
|
|
col sep=comma, x=max_iter,
|
|
y=LER_per_round,
|
|
]
|
|
{res/sim/max_iter/WindowingSyndromeMinSumDecoder/p_0.0025/pass_soft_info_True/F_1/W_\W/LERs.csv};
|
|
}
|
|
\temp
|
|
|
|
\addlegendentryexpanded{$W = \W$}
|
|
}
|
|
\end{axis}
|
|
\end{tikzpicture}
|
|
|
|
\caption{Comparison of window sizes for $F=1$.}
|
|
\end{subfigure}%
|
|
\hfill%
|
|
\begin{subfigure}{0.48\textwidth}
|
|
\centering
|
|
\begin{tikzpicture}
|
|
\begin{axis}[
|
|
width=8cm,
|
|
height=6cm,
|
|
ymode=log,
|
|
% xmode=log,
|
|
legend style={
|
|
cells={anchor=west},
|
|
cells={align=left},
|
|
},
|
|
enlargelimits=false,
|
|
ymin=1e-3, ymax=1e-1,
|
|
grid=both,
|
|
legend pos = north east,
|
|
xtick={32,512,1024,2048,4096},
|
|
% xtick={0.001,0.0015,...,0.004},
|
|
xticklabels =
|
|
{$32$, $512$,$1{,}024$,,$2{,}048$,,$3{,}072$,,$4{,}096$},
|
|
xtick={32, 512, 1024, 1536, 2048, 2560, 3072, 3584, 4096},
|
|
xticklabel style={/pgf/number format/fixed},
|
|
xticklabel style={/pgf/number format/precision=4},
|
|
x tick label style={rotate=45, anchor=north east,
|
|
inner sep=1mm},
|
|
scaled x ticks=false,
|
|
xlabel={Number of BP iterations},
|
|
yticklabels={\empty},
|
|
% ylabel={Per-round-LER},
|
|
extra description/.code={
|
|
\node[rotate=90, anchor=south]
|
|
at ([xshift=10mm]current axis.east)
|
|
{Warm s. (---), Cold s. (- - -)};
|
|
},
|
|
]
|
|
|
|
\foreach \F/\col/\mark in
|
|
{3/KITred/triangle,2/KITblue/diamond,1/KITorange/square} {
|
|
\edef\temp{\noexpand
|
|
\addplot+[mark=\mark, densely dashed,
|
|
forget plot, \col]
|
|
table[
|
|
col sep=comma, x=max_iter,
|
|
y=LER_per_round,
|
|
]
|
|
{res/sim/max_iter/WindowingSyndromeMinSumDecoder/p_0.0025/pass_soft_info_False/F_\F/W_5/LERs.csv};
|
|
}
|
|
\temp
|
|
}
|
|
|
|
\foreach \F/\col/\mark in
|
|
{3/KITred/triangle*,2/KITblue/diamond*,1/KITorange/square*} {
|
|
\edef\temp{\noexpand
|
|
\addplot+[mark=\mark, solid, mark
|
|
options={fill=\col}, \col]
|
|
table[
|
|
col sep=comma, x=max_iter,
|
|
y=LER_per_round,
|
|
]
|
|
{res/sim/max_iter/WindowingSyndromeMinSumDecoder/p_0.0025/pass_soft_info_True/F_\F/W_5/LERs.csv};
|
|
}
|
|
\temp
|
|
|
|
\addlegendentryexpanded{$F = \F$}
|
|
}
|
|
\end{axis}
|
|
\end{tikzpicture}
|
|
|
|
\caption{Comparison of step sizes for $W=5$.}
|
|
\end{subfigure}
|
|
|
|
\caption{
|
|
Comparison of cold and warm-start sliding-window
|
|
min-sum decoding for the $\llbracket 144, 12, 12 \rrbracket$
|
|
\ac{bb} code
|
|
under circuit-level noise.
|
|
$12$ rounds of syndrome extraction were performed and
|
|
standard circuit-based depolarizing noise was chosen as the
|
|
noise model.
|
|
The physical error probabilty was fixed to $0.0025$.
|
|
}
|
|
\end{figure}
|
|
|
|
%%%%%%%%%%%%%%%%
|
|
\subsection{Belief Propagation with Guided Decimation}
|
|
\label{subsec:Belief Propagation with Guided Decimation}
|
|
|
|
\begin{figure}[H]
|
|
\centering
|
|
\hspace*{-6mm}
|
|
\begin{subfigure}{0.5\textwidth}
|
|
\centering
|
|
\begin{tikzpicture}
|
|
\begin{axis}[
|
|
width=8cm,
|
|
height=6cm,
|
|
ymode=log,
|
|
legend style={
|
|
cells={anchor=west},
|
|
cells={align=left},
|
|
},
|
|
enlargelimits=false,
|
|
ymin=1e-5, ymax=2e-1,
|
|
grid=both,
|
|
legend pos = south east,
|
|
xtick={0.001,0.0015,...,0.004},
|
|
xticklabel style={/pgf/number format/fixed},
|
|
xticklabel style={/pgf/number format/precision=4},
|
|
x tick label style={rotate=45, anchor=north east,
|
|
inner sep=1mm},
|
|
scaled x ticks=false,
|
|
xlabel={Physical error rate},
|
|
ylabel={Per-round-LER},
|
|
% extra description/.code={
|
|
% \node[rotate=90, anchor=south]
|
|
% at ([xshift=10mm]current axis.east)
|
|
% {Warm s. (---), Cold s. (- - -)};
|
|
% },
|
|
]
|
|
|
|
\foreach \W/\col/\mark in
|
|
{3/KITred/triangle,4/KITblue/diamond,5/KITorange/square} {
|
|
\edef\temp{\noexpand
|
|
\addplot+[
|
|
mark=\mark, densely dashed, mark
|
|
options={fill=\col},
|
|
\col, forget plot
|
|
]
|
|
table[
|
|
col sep=comma, x=physical_p,
|
|
y=LER_per_round,
|
|
]
|
|
{res/sim/WF/WindowingSyndromeSpaGdDecoder/max_iter_5000/pass_soft_info_False/F_1/W_\W/LERs.csv};
|
|
}
|
|
\temp
|
|
}
|
|
|
|
\foreach \W/\col/\mark in
|
|
{3/KITred/triangle*,4/KITblue/diamond*,5/KITorange/square*} {
|
|
\edef\temp{\noexpand
|
|
\addplot+[mark=\mark, solid, mark
|
|
options={fill=\col}, \col]
|
|
table[
|
|
col sep=comma, x=physical_p,
|
|
y=LER_per_round,
|
|
]
|
|
{res/sim/WF/WindowingSyndromeSpaGdDecoderPassDecimation/max_iter_5000/pass_soft_info_True/F_1/W_\W/LERs.csv};
|
|
}
|
|
\temp
|
|
|
|
\addlegendentryexpanded{$W = \W$}
|
|
}
|
|
\end{axis}
|
|
\end{tikzpicture}
|
|
|
|
\caption{Comparison of window sizes for $F=1$.}
|
|
\end{subfigure}%
|
|
\hfill%
|
|
\begin{subfigure}{0.5\textwidth}
|
|
\centering
|
|
\begin{tikzpicture}
|
|
\begin{axis}[
|
|
width=8cm,
|
|
height=6cm,
|
|
ymode=log,
|
|
legend style={
|
|
cells={anchor=west},
|
|
cells={align=left},
|
|
},
|
|
enlargelimits=false,
|
|
ymin=1e-5, ymax=2e-1,
|
|
grid=both,
|
|
legend pos = south east,
|
|
xtick={0.001,0.0015,0.002,...,0.004},
|
|
xticklabel style={/pgf/number format/fixed},
|
|
xticklabel style={/pgf/number format/precision=4},
|
|
x tick label style={rotate=45, anchor=north east,
|
|
inner sep=1mm},
|
|
scaled x ticks=false,
|
|
xlabel={Physical error rate},
|
|
yticklabels={\empty},
|
|
% ylabel={Per-round-LER},
|
|
extra description/.code={
|
|
\node[rotate=90, anchor=south]
|
|
at ([xshift=10mm]current axis.east)
|
|
{Warm s. (---), Cold s. (- - -)};
|
|
},
|
|
]
|
|
|
|
\foreach \F/\col/\mark in
|
|
{3/KITred/triangle,2/KITblue/diamond,1/KITorange/square} {
|
|
\edef\temp{\noexpand
|
|
\addplot+[
|
|
mark=\mark, densely dashed, mark
|
|
options={fill=\col},
|
|
\col, forget plot
|
|
]
|
|
table[
|
|
col sep=comma, x=physical_p,
|
|
y=LER_per_round,
|
|
]
|
|
{res/sim/WF/WindowingSyndromeSpaGdDecoder/max_iter_5000/pass_soft_info_False/F_\F/W_5/LERs.csv};
|
|
}
|
|
\temp
|
|
}
|
|
|
|
\foreach \F/\col/\mark in
|
|
{3/KITred/triangle*,2/KITblue/diamond*,1/KITorange/square*} {
|
|
\edef\temp{\noexpand
|
|
\addplot+[mark=\mark, solid, mark
|
|
options={fill=\col}, \col]
|
|
table[
|
|
col sep=comma, x=physical_p,
|
|
y=LER_per_round,
|
|
]
|
|
{res/sim/WF/WindowingSyndromeSpaGdDecoderPassDecimation/max_iter_5000/pass_soft_info_True/F_\F/W_5/LERs.csv};
|
|
}
|
|
\temp
|
|
|
|
\addlegendentryexpanded{$F = \F$}
|
|
}
|
|
\end{axis}
|
|
\end{tikzpicture}
|
|
|
|
\caption{Comparison of step sizes for $W=5$.}
|
|
\end{subfigure}
|
|
|
|
\caption{
|
|
Comparison of the decoding performance of cold and warm-start
|
|
decoding under the $\llbracket 144,12,12 \rrbracket$ \ac{bb}.
|
|
Decoding was performed using the \ac{bpgd} algorithm with
|
|
$T=1$ and no limit on the number of outer iterations.
|
|
The information used for the warm-start intialization
|
|
included both the messages on the Tanner graph and decimation
|
|
information.
|
|
$12$ rounds of syndrome extraction were performed and
|
|
standard circuit-based depolarizing noise was chosen as the
|
|
noise model.
|
|
}
|
|
\end{figure}
|
|
|
|
\begin{figure}[H]
|
|
\centering
|
|
\hspace*{-6mm}
|
|
\begin{subfigure}{0.48\textwidth}
|
|
\centering
|
|
\begin{tikzpicture}
|
|
\begin{axis}[
|
|
width=8cm,
|
|
height=6cm,
|
|
ymode=log,
|
|
% xmode=log,
|
|
legend style={
|
|
cells={anchor=west},
|
|
cells={align=left},
|
|
},
|
|
enlargelimits=false,
|
|
ymin=1e-3, ymax=1e-1,
|
|
grid=both,
|
|
legend pos = south west,
|
|
xtick={32,512,1024,2048,4096},
|
|
% xtick={0.001,0.0015,...,0.004},
|
|
xticklabels =
|
|
{$32$,$512$,$1{,}024$,,$2{,}048$,,$3{,}072$,,$4{,}096$},
|
|
xtick={32, 512, 1024, 1536, 2048, 2560, 3072, 3584, 4096},
|
|
xticklabel style={/pgf/number format/fixed},
|
|
xticklabel style={/pgf/number format/precision=4},
|
|
x tick label style={rotate=45, anchor=north east,
|
|
inner sep=1mm},
|
|
scaled x ticks=false,
|
|
xlabel={Number of BP iterations},
|
|
ylabel={Per-round-LER},
|
|
% extra description/.code={
|
|
% \node[rotate=90, anchor=south]
|
|
% at ([xshift=10mm]current axis.east)
|
|
% {Warm s. (---), Cold s. (- - -)};
|
|
% },
|
|
]
|
|
|
|
\foreach \W/\col/\mark in
|
|
{3/KITred/triangle,4/KITblue/diamond,5/KITorange/square} {
|
|
\edef\temp{\noexpand
|
|
\addplot+[mark=\mark, densely dashed,
|
|
forget plot, \col]
|
|
table[
|
|
col sep=comma, x=max_iter,
|
|
y=LER_per_round,
|
|
]
|
|
{res/sim/max_iter/WindowingSyndromeSpaGdDecoderPassDecimation/p_0.0025/pass_soft_info_False/F_1/W_\W/LERs.csv};
|
|
}
|
|
\temp
|
|
}
|
|
|
|
\foreach \W/\col/\mark in
|
|
{3/KITred/triangle*,4/KITblue/diamond*,5/KITorange/square*} {
|
|
\edef\temp{\noexpand
|
|
\addplot+[mark=\mark, solid, mark
|
|
options={fill=\col}, \col]
|
|
table[
|
|
col sep=comma, x=max_iter,
|
|
y=LER_per_round,
|
|
]
|
|
{res/sim/max_iter/WindowingSyndromeSpaGdDecoderPassDecimation/p_0.0025/pass_soft_info_True/F_1/W_\W/LERs.csv};
|
|
}
|
|
\temp
|
|
|
|
\addlegendentryexpanded{$W = \W$}
|
|
}
|
|
\end{axis}
|
|
\end{tikzpicture}
|
|
|
|
\caption{Comparison of window sizes for $F=1$.}
|
|
\end{subfigure}%
|
|
\hfill%
|
|
\begin{subfigure}{0.48\textwidth}
|
|
\centering
|
|
\begin{tikzpicture}
|
|
\begin{axis}[
|
|
width=8cm,
|
|
height=6cm,
|
|
ymode=log,
|
|
% xmode=log,
|
|
legend style={
|
|
cells={anchor=west},
|
|
cells={align=left},
|
|
},
|
|
enlargelimits=false,
|
|
ymin=1e-3, ymax=1e-1,
|
|
grid=both,
|
|
legend pos = south west,
|
|
xtick={32,512,1024,2048,4096},
|
|
% xtick={0.001,0.0015,...,0.004},
|
|
xticklabels =
|
|
{$32$,$512$,$1{,}024$,,$2{,}048$,,$3{,}072$,,$4{,}096$},
|
|
xtick={32, 512, 1024, 1536, 2048, 2560, 3072, 3584, 4096},
|
|
xticklabel style={/pgf/number format/fixed},
|
|
xticklabel style={/pgf/number format/precision=4},
|
|
x tick label style={rotate=45, anchor=north east,
|
|
inner sep=1mm},
|
|
scaled x ticks=false,
|
|
xlabel={Number of BP iterations},
|
|
% ylabel={Per-round-LER},
|
|
yticklabels={\empty},
|
|
extra description/.code={
|
|
\node[rotate=90, anchor=south]
|
|
at ([xshift=10mm]current axis.east)
|
|
{Warm s. (---), Cold s. (- - -)};
|
|
},
|
|
]
|
|
|
|
\foreach \F/\col/\mark in
|
|
{3/KITred/triangle,2/KITblue/diamond,1/KITorange/square} {
|
|
\edef\temp{\noexpand
|
|
\addplot+[mark=\mark, densely dashed,
|
|
forget plot, \col]
|
|
table[
|
|
col sep=comma, x=max_iter,
|
|
y=LER_per_round,
|
|
]
|
|
{res/sim/max_iter/WindowingSyndromeSpaGdDecoderPassDecimation/p_0.0025/pass_soft_info_False/F_\F/W_5/LERs.csv};
|
|
}
|
|
\temp
|
|
}
|
|
|
|
\foreach \F/\col/\mark in
|
|
{3/KITred/triangle*,2/KITblue/diamond*,1/KITorange/square*} {
|
|
\edef\temp{\noexpand
|
|
\addplot+[mark=\mark, solid, mark
|
|
options={fill=\col}, \col]
|
|
table[
|
|
col sep=comma, x=max_iter,
|
|
y=LER_per_round,
|
|
]
|
|
{res/sim/max_iter/WindowingSyndromeSpaGdDecoderPassDecimation/p_0.0025/pass_soft_info_True/F_\F/W_5/LERs.csv};
|
|
}
|
|
\temp
|
|
|
|
\addlegendentryexpanded{$F = \F$}
|
|
}
|
|
\end{axis}
|
|
\end{tikzpicture}
|
|
|
|
\caption{
|
|
Comparison of step sizes for $W=5$.
|
|
}
|
|
\end{subfigure}
|
|
|
|
\caption{
|
|
Comparison of the decoding performance of cold and warm-start
|
|
decoding for the $\llbracket 144,12,12 \rrbracket$ \ac{bb}
|
|
under circuit-level noise.
|
|
Decoding was performed using the \ac{bpgd} algorithm with
|
|
$T=1$.
|
|
The number of iterations refers to the outer \ac{bpgd}
|
|
iterations, i.e., the number of decimations.
|
|
The information used for the warm-start intialization
|
|
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.
|
|
The physical error probabilty was fixed to $0.0025$.
|
|
}
|
|
\end{figure}
|
|
|
|
\begin{figure}[H]
|
|
\centering
|
|
\hspace*{-6mm}
|
|
\begin{subfigure}{0.5\textwidth}
|
|
\centering
|
|
\begin{tikzpicture}
|
|
\begin{axis}[
|
|
width=8cm,
|
|
height=6cm,
|
|
ymode=log,
|
|
legend style={
|
|
cells={anchor=west},
|
|
cells={align=left},
|
|
},
|
|
enlargelimits=false,
|
|
ymin=1e-5, ymax=2e-1,
|
|
grid=both,
|
|
legend pos = south east,
|
|
xtick={0.001,0.0015,...,0.004},
|
|
xticklabel style={/pgf/number format/fixed},
|
|
xticklabel style={/pgf/number format/precision=4},
|
|
x tick label style={rotate=45, anchor=north east,
|
|
inner sep=1mm},
|
|
scaled x ticks=false,
|
|
xlabel={Physical error rate},
|
|
ylabel={Per-round-LER},
|
|
% extra description/.code={
|
|
% \node[rotate=90, anchor=south]
|
|
% at ([xshift=10mm]current axis.east)
|
|
% {Warm s. (---), Cold s. (- - -)};
|
|
% },
|
|
]
|
|
|
|
\foreach \W/\col/\mark in
|
|
{3/KITred/triangle,4/KITblue/diamond,5/KITorange/square} {
|
|
\edef\temp{\noexpand
|
|
\addplot+[
|
|
mark=\mark, densely dashed, mark
|
|
options={fill=\col},
|
|
\col, forget plot
|
|
]
|
|
table[
|
|
col sep=comma, x=physical_p,
|
|
y=LER_per_round,
|
|
]
|
|
{res/sim/WF/WindowingSyndromeSpaGdDecoder/max_iter_5000/pass_soft_info_False/F_1/W_\W/LERs.csv};
|
|
}
|
|
\temp
|
|
}
|
|
|
|
\foreach \W/\col/\mark in
|
|
{3/KITred/triangle*,4/KITblue/diamond*,5/KITorange/square*} {
|
|
\edef\temp{\noexpand
|
|
\addplot+[mark=\mark, solid, mark
|
|
options={fill=\col}, \col]
|
|
table[
|
|
col sep=comma, x=physical_p,
|
|
y=LER_per_round,
|
|
]
|
|
{res/sim/WF/WindowingSyndromeSpaGdDecoder/max_iter_5000/pass_soft_info_True/F_1/W_\W/LERs.csv};
|
|
}
|
|
\temp
|
|
|
|
\addlegendentryexpanded{$W = \W$}
|
|
}
|
|
\end{axis}
|
|
\end{tikzpicture}
|
|
|
|
\caption{Comparison of window sizes for $F=1$.}
|
|
\end{subfigure}%
|
|
\hfill%
|
|
\begin{subfigure}{0.5\textwidth}
|
|
\centering
|
|
\begin{tikzpicture}
|
|
\begin{axis}[
|
|
width=8cm,
|
|
height=6cm,
|
|
ymode=log,
|
|
legend style={
|
|
cells={anchor=west},
|
|
cells={align=left},
|
|
},
|
|
enlargelimits=false,
|
|
ymin=1e-5, ymax=2e-1,
|
|
grid=both,
|
|
legend pos = south east,
|
|
xtick={0.001,0.0015,0.002,...,0.004},
|
|
xticklabel style={/pgf/number format/fixed},
|
|
xticklabel style={/pgf/number format/precision=4},
|
|
x tick label style={rotate=45, anchor=north east,
|
|
inner sep=1mm},
|
|
scaled x ticks=false,
|
|
xlabel={Physical error rate},
|
|
yticklabels={\empty},
|
|
% ylabel={Per-round-LER},
|
|
extra description/.code={
|
|
\node[rotate=90, anchor=south]
|
|
at ([xshift=10mm]current axis.east)
|
|
{Warm s. (---), Cold s. (- - -)};
|
|
},
|
|
]
|
|
|
|
\foreach \F/\col/\mark in
|
|
{3/KITred/triangle,2/KITblue/diamond,1/KITorange/square} {
|
|
\edef\temp{\noexpand
|
|
\addplot+[
|
|
mark=\mark, densely dashed, mark
|
|
options={fill=\col},
|
|
\col, forget plot
|
|
]
|
|
table[
|
|
col sep=comma, x=physical_p,
|
|
y=LER_per_round,
|
|
]
|
|
{res/sim/WF/WindowingSyndromeSpaGdDecoder/max_iter_5000/pass_soft_info_False/F_\F/W_5/LERs.csv};
|
|
}
|
|
\temp
|
|
}
|
|
|
|
\foreach \F/\col/\mark in
|
|
{3/KITred/triangle*,2/KITblue/diamond*,1/KITorange/square*} {
|
|
\edef\temp{\noexpand
|
|
\addplot+[mark=\mark, solid, mark
|
|
options={fill=\col}, \col]
|
|
table[
|
|
col sep=comma, x=physical_p,
|
|
y=LER_per_round,
|
|
]
|
|
{res/sim/WF/WindowingSyndromeSpaGdDecoder/max_iter_5000/pass_soft_info_True/F_\F/W_5/LERs.csv};
|
|
}
|
|
\temp
|
|
|
|
\addlegendentryexpanded{$F = \F$}
|
|
}
|
|
\end{axis}
|
|
\end{tikzpicture}
|
|
|
|
\caption{Comparison of step sizes for $W=5$.}
|
|
\end{subfigure}
|
|
|
|
\caption{
|
|
Comparison of the decoding performance of cold and warm-start
|
|
decoding for the $\llbracket 144,12,12 \rrbracket$ \ac{bb}
|
|
under circuit-level noise.
|
|
Decoding was performed using the \ac{bpgd} algorithm with
|
|
$T=1$ and no limit on the number of outer iterations.
|
|
The information used for the warm-start intialization
|
|
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.
|
|
}
|
|
\end{figure}
|
|
|
|
\begin{figure}[H]
|
|
\centering
|
|
\hspace*{-6mm}
|
|
\begin{subfigure}{0.48\textwidth}
|
|
\centering
|
|
\begin{tikzpicture}
|
|
\begin{axis}[
|
|
width=8cm,
|
|
height=6cm,
|
|
ymode=log,
|
|
% xmode=log,
|
|
legend style={
|
|
cells={anchor=west},
|
|
cells={align=left},
|
|
},
|
|
enlargelimits=false,
|
|
ymin=1e-3, ymax=1e-1,
|
|
grid=both,
|
|
legend pos = north east,
|
|
xtick={32,512,1024,2048,4096},
|
|
% xtick={0.001,0.0015,...,0.004},
|
|
xticklabels =
|
|
{$32$,$512$,$1{,}024$,,$2{,}048$,,$3{,}072$,,$4{,}096$},
|
|
xtick={32, 512, 1024, 1536, 2048, 2560, 3072, 3584, 4096},
|
|
xticklabel style={/pgf/number format/fixed},
|
|
xticklabel style={/pgf/number format/precision=4},
|
|
x tick label style={rotate=45, anchor=north east,
|
|
inner sep=1mm},
|
|
scaled x ticks=false,
|
|
xlabel={Number of BP iterations},
|
|
ylabel={Per-round-LER},
|
|
% extra description/.code={
|
|
% \node[rotate=90, anchor=south]
|
|
% at ([xshift=10mm]current axis.east)
|
|
% {Warm s. (---), Cold s. (- - -)};
|
|
% },
|
|
]
|
|
|
|
\foreach \W/\col/\mark in
|
|
{3/KITred/triangle,4/KITblue/diamond,5/KITorange/square} {
|
|
\edef\temp{\noexpand
|
|
\addplot+[mark=\mark, densely dashed,
|
|
forget plot, \col]
|
|
table[
|
|
col sep=comma, x=max_iter,
|
|
y=LER_per_round,
|
|
]
|
|
{res/sim/max_iter/WindowingSyndromeSpaGdDecoder/p_0.0025/pass_soft_info_False/F_1/W_\W/LERs.csv};
|
|
}
|
|
\temp
|
|
}
|
|
|
|
\foreach \W/\col/\mark in
|
|
{3/KITred/triangle*,4/KITblue/diamond*,5/KITorange/square*} {
|
|
\edef\temp{\noexpand
|
|
\addplot+[mark=\mark, solid, mark
|
|
options={fill=\col}, \col]
|
|
table[
|
|
col sep=comma, x=max_iter,
|
|
y=LER_per_round,
|
|
]
|
|
{res/sim/max_iter/WindowingSyndromeSpaGdDecoder/p_0.0025/pass_soft_info_True/F_1/W_\W/LERs.csv};
|
|
}
|
|
\temp
|
|
|
|
\addlegendentryexpanded{$W = \W$}
|
|
}
|
|
\end{axis}
|
|
\end{tikzpicture}
|
|
|
|
\caption{Comparison of window sizes for $F=1$.}
|
|
\end{subfigure}%
|
|
\hfill%
|
|
\begin{subfigure}{0.48\textwidth}
|
|
\centering
|
|
\begin{tikzpicture}
|
|
\begin{axis}[
|
|
width=8cm,
|
|
height=6cm,
|
|
ymode=log,
|
|
% xmode=log,
|
|
legend style={
|
|
cells={anchor=west},
|
|
cells={align=left},
|
|
},
|
|
enlargelimits=false,
|
|
ymin=1e-3, ymax=1e-1,
|
|
grid=both,
|
|
legend pos = north east,
|
|
xtick={32,512,1024,2048,4096},
|
|
% xtick={0.001,0.0015,...,0.004},
|
|
xticklabels =
|
|
{$32$,$512$,$1{,}024$,,$2{,}048$,,$3{,}072$,,$4{,}096$},
|
|
xtick={32, 512, 1024, 1536, 2048, 2560, 3072, 3584, 4096},
|
|
xticklabel style={/pgf/number format/fixed},
|
|
xticklabel style={/pgf/number format/precision=4},
|
|
x tick label style={rotate=45, anchor=north east,
|
|
inner sep=1mm},
|
|
scaled x ticks=false,
|
|
xlabel={Number of BP iterations},
|
|
% ylabel={Per-round-LER},
|
|
yticklabels={\empty},
|
|
extra description/.code={
|
|
\node[rotate=90, anchor=south]
|
|
at ([xshift=10mm]current axis.east)
|
|
{Warm s. (---), Cold s. (- - -)};
|
|
},
|
|
]
|
|
|
|
\foreach \F/\col/\mark in
|
|
{3/KITred/triangle,2/KITblue/diamond,1/KITorange/square} {
|
|
\edef\temp{\noexpand
|
|
\addplot+[mark=\mark, densely dashed,
|
|
forget plot, \col]
|
|
table[
|
|
col sep=comma, x=max_iter,
|
|
y=LER_per_round,
|
|
]
|
|
{res/sim/max_iter/WindowingSyndromeSpaGdDecoder/p_0.0025/pass_soft_info_False/F_\F/W_5/LERs.csv};
|
|
}
|
|
\temp
|
|
}
|
|
|
|
\foreach \F/\col/\mark in
|
|
{3/KITred/triangle*,2/KITblue/diamond*,1/KITorange/square*} {
|
|
\edef\temp{\noexpand
|
|
\addplot+[mark=\mark, solid, mark
|
|
options={fill=\col}, \col]
|
|
table[
|
|
col sep=comma, x=max_iter,
|
|
y=LER_per_round,
|
|
]
|
|
{res/sim/max_iter/WindowingSyndromeSpaGdDecoder/p_0.0025/pass_soft_info_True/F_\F/W_5/LERs.csv};
|
|
}
|
|
\temp
|
|
|
|
\addlegendentryexpanded{$F = \F$}
|
|
}
|
|
\end{axis}
|
|
\end{tikzpicture}
|
|
|
|
\caption{
|
|
Comparison of step sizes for $W=5$.
|
|
}
|
|
\end{subfigure}
|
|
|
|
\caption{
|
|
Comparison of the decoding performance of cold and warm-start
|
|
decoding for the $\llbracket 144,12,12 \rrbracket$ \ac{bb}
|
|
under circuit-level noise.
|
|
Decoding was performed using the \ac{bpgd} algorithm with
|
|
$T=1$.
|
|
The number of iterations refers to the outer \ac{bpgd}
|
|
iterations, i.e., the number of decimations.
|
|
The information used for the warm-start intialization
|
|
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.
|
|
The physical error probabilty was fixed to $0.0025$.
|
|
}
|
|
\end{figure}
|
|
|
|
|