Add whole decoding line to max_iter plot

This commit is contained in:
2026-05-02 11:22:25 +02:00
parent 152e784546
commit 7e18985b86
5 changed files with 125 additions and 21 deletions

View File

@@ -1167,7 +1167,13 @@ reimplementation in Rust to achieve higher simulation speeds due to
the compiled nature of the language.
We reimplemented both the window splitting and the decoders themselves.
% Simulation setup
% Global experimental setup
% - Code
% - # SE rounds
% - Noise model
% - Per-round LER as figure of merit
% - Detector definition
% - # simulated error frames
We chose to carry out our simulations on \ac{bb} codes, as they have
recently emerged as particularly promising candidates for practical
@@ -1194,13 +1200,60 @@ generated by simulating at least $200$ logical error events.
\subsection{Belief Propagation}
\label{subsec:Belief Propagation}
% Intro
% Local experimental setup
% - BP variant
We begin our investigation by using \ac{bp} with no further
We began our investigation by using \ac{bp} with no further
modifications as the inner decoder.
We chose the min-sum variant of \ac{bp} due to its low computational complexity.
% Whole decoding as a lower bound on the error rate
% [Thread] Get impression for max gain
% - More global = better -> Compare windowed vs. whole
% [Description] Figure 4.8
% - Parameters
% - # BP iterations
% - W,F
% - Physical error rates
% - Windowed (cold start) vs whole decoding
% - (?) Semilog y axis
% - Figure description
% - TODO:
% [Interpretation] Figure 4.8
% - Larger window -> better, because more global decoding
% - Diminishing returns as the window becomes larger
% - As expected, whole works best
% [Thread] First comparison with warm start
% - Compare performance of warm start to cold start
% [Description] Figure 4.9
% - Parameters
% - # BP iterations
% - W,F
% - Physical error rates
% - Warm vs cold start
% - Figure description
% - TODO:
% [Interpretation] Figure 4.9
% - Generally better performance with warm start, as expected
% - It is surprising that warm start performs better than whole
% [Thread] Warm start is better than whole due to more effective iterations
% [Description] Figure 4.10
% - Parameters
% - # BP iterations
% - W,F
% - Physical error rates
% - Warm vs cold start
% - Figure description
% - TODO:
% [Interpretation] Figure 4.10
% -
We initially wanted to gain an impression for the performance gain we could
expect from a modification to the sliding-window decoding procedure.
@@ -1529,6 +1582,15 @@ though the process is less global.
\addlegendentryexpanded{$W = \W$}
}
\addplot+[mark=*, solid, mark options={fill=black}, black]
table[
col sep=comma, x=max_iter,
y=LER_per_round,
]
{res/sim/max_iter/SyndromeMinSumDecoder/p_0.0025/LERs.csv};
\addlegendentry{Whole}
\end{axis}
\end{tikzpicture}

View File

@@ -129,6 +129,24 @@ sp="/-\|"
# done
# done
# Copy whole BP over max iter. results
echo -e "\rCopying whole over max_iter simulation results..."
echo -n ' '
for decoder in "SyndromeMinSumDecoder"; do
for p in 0.001 0.0025 0.004; do
SRC_PATH="${BASE_PATH}+rust_exp=max_iter_bp,decoder.class_name=${decoder},simulation.phy_err_rate=${p}/"
LATEST_RESULTS_DIR=$(ls -t ${SRC_PATH} | head -1)
SRC_FILE="${SRC_PATH}/${LATEST_RESULTS_DIR}/LERs.csv"
DEST_DIR="res/sim/max_iter/${decoder}/p_${p}/"
mkdir -p ${DEST_DIR}
DEST_FILE="${DEST_DIR}/LERs.csv"
cp ${SRC_FILE} ${DEST_FILE}
post_process_LERs ${DEST_FILE}
printf "\b${sp:i++%${#sp}:1}"
done
done
# # Copy BPGD decimation passing
#
# echo -e "\rCopying BPGD param exploration results..."
@@ -151,20 +169,20 @@ sp="/-\|"
# Copy BPGD with decimation info passing over max iter. results
echo -e "\rCopying BPGD over max. iter. results..."
echo -n ' '
for pass_soft_info in "True" "False"; do
for F in 1 2 3; do
for W in 3 4 5; do
SRC_PATH="${BASE_PATH}+rust_exp=max_iter_bpgd_pass_channel,decoder.class_name=WindowingSyndromeSpaGdDecoder,decoder.pass_soft_info=${pass_soft_info},simulation.phy_err_rate=0.0025,system.F=${F},system.W=${W}/"
LATEST_RESULTS_DIR=$(ls -t ${SRC_PATH} | head -1)
SRC_FILE="${SRC_PATH}/${LATEST_RESULTS_DIR}/LERs.csv"
DEST_DIR="res/sim/max_iter/WindowingSyndromeSpaGdDecoderPassDecimation/p_0.0025/pass_soft_info_${pass_soft_info}/F_${F}/W_${W}"
mkdir -p ${DEST_DIR}
DEST_FILE="${DEST_DIR}/LERs.csv"
cp ${SRC_FILE} ${DEST_FILE}
post_process_LERs ${DEST_FILE}
printf "\b${sp:i++%${#sp}:1}"
done
done
done
# echo -e "\rCopying BPGD over max. iter. results..."
# echo -n ' '
# for pass_soft_info in "True" "False"; do
# for F in 1 2 3; do
# for W in 3 4 5; do
# SRC_PATH="${BASE_PATH}+rust_exp=max_iter_bpgd_pass_channel,decoder.class_name=WindowingSyndromeSpaGdDecoder,decoder.pass_soft_info=${pass_soft_info},simulation.phy_err_rate=0.0025,system.F=${F},system.W=${W}/"
# LATEST_RESULTS_DIR=$(ls -t ${SRC_PATH} | head -1)
# SRC_FILE="${SRC_PATH}/${LATEST_RESULTS_DIR}/LERs.csv"
# DEST_DIR="res/sim/max_iter/WindowingSyndromeSpaGdDecoderPassDecimation/p_0.0025/pass_soft_info_${pass_soft_info}/F_${F}/W_${W}"
# mkdir -p ${DEST_DIR}
# DEST_FILE="${DEST_DIR}/LERs.csv"
# cp ${SRC_FILE} ${DEST_FILE}
# post_process_LERs ${DEST_FILE}
# printf "\b${sp:i++%${#sp}:1}"
# done
# done
# done

View File

@@ -0,0 +1,8 @@
max_iter,num_trials,LER,LER_per_round,num_errors
32,10528,0.0354293313069908,0.0030015014232951387,372.99999999999915
128,68422,0.0029230364502645,0.00024391332035389457,199.99999999999764
256,100000,0.00184,0.00015346279666106355,184.0
512,100000,0.00122,0.00010172355962756452,122.0
1024,100000,0.00084,7.002696447200307e-05,84.0
2048,100000,0.00052,4.33436645435048e-05,51.99999999999999
4096,100000,0.00042,3.5006739308451884e-05,42.0
1 max_iter num_trials LER LER_per_round num_errors
2 32 10528 0.0354293313069908 0.0030015014232951387 372.99999999999915
3 128 68422 0.0029230364502645 0.00024391332035389457 199.99999999999764
4 256 100000 0.00184 0.00015346279666106355 184.0
5 512 100000 0.00122 0.00010172355962756452 122.0
6 1024 100000 0.00084 7.002696447200307e-05 84.0
7 2048 100000 0.00052 4.33436645435048e-05 51.99999999999999
8 4096 100000 0.00042 3.5006739308451884e-05 42.0

View File

@@ -0,0 +1,8 @@
max_iter,num_trials,LER,LER_per_round,num_errors
32,5264,0.3575227963525836,0.03619728900635699,1882.0
128,5264,0.1118920972644376,0.00983977212107956,588.9999999999995
256,5264,0.0818768996960486,0.007093372523371166,430.99999999999983
512,5264,0.0645896656534954,0.005548714177492475,339.9999999999998
1024,5264,0.0524316109422492,0.004477957765848362,275.9999999999998
2048,5264,0.0442629179331307,0.0037655941776483237,233.0
4096,10528,0.0361892097264437,0.0030669771276242708,380.99999999999926
1 max_iter num_trials LER LER_per_round num_errors
2 32 5264 0.3575227963525836 0.03619728900635699 1882.0
3 128 5264 0.1118920972644376 0.00983977212107956 588.9999999999995
4 256 5264 0.0818768996960486 0.007093372523371166 430.99999999999983
5 512 5264 0.0645896656534954 0.005548714177492475 339.9999999999998
6 1024 5264 0.0524316109422492 0.004477957765848362 275.9999999999998
7 2048 5264 0.0442629179331307 0.0037655941776483237 233.0
8 4096 10528 0.0361892097264437 0.0030669771276242708 380.99999999999926

View File

@@ -0,0 +1,8 @@
max_iter,num_trials,LER,LER_per_round,num_errors
32,5264,0.8651215805471124,0.15375677320993897,4554.0
128,5264,0.5987841945288754,0.0732807818579091,3152.0000000000005
256,5264,0.5184270516717325,0.05907464062706547,2729.0
512,5264,0.4591565349544073,0.04992921073125611,2417.0
1024,5264,0.4209726443768997,0.04451268995716784,2216.0
2048,5264,0.3865881458966565,0.03990837706831185,2035.0
4096,5264,0.3563829787234042,0.036054914686007855,1875.9999999999995
1 max_iter num_trials LER LER_per_round num_errors
2 32 5264 0.8651215805471124 0.15375677320993897 4554.0
3 128 5264 0.5987841945288754 0.0732807818579091 3152.0000000000005
4 256 5264 0.5184270516717325 0.05907464062706547 2729.0
5 512 5264 0.4591565349544073 0.04992921073125611 2417.0
6 1024 5264 0.4209726443768997 0.04451268995716784 2216.0
7 2048 5264 0.3865881458966565 0.03990837706831185 2035.0
8 4096 5264 0.3563829787234042 0.036054914686007855 1875.9999999999995