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. the compiled nature of the language.
We reimplemented both the window splitting and the decoders themselves. 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 We chose to carry out our simulations on \ac{bb} codes, as they have
recently emerged as particularly promising candidates for practical recently emerged as particularly promising candidates for practical
@@ -1194,13 +1200,60 @@ generated by simulating at least $200$ logical error events.
\subsection{Belief Propagation} \subsection{Belief Propagation}
\label{subsec: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. modifications as the inner decoder.
We chose the min-sum variant of \ac{bp} due to its low computational complexity. 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 We initially wanted to gain an impression for the performance gain we could
expect from a modification to the sliding-window decoding procedure. expect from a modification to the sliding-window decoding procedure.
@@ -1529,6 +1582,15 @@ though the process is less global.
\addlegendentryexpanded{$W = \W$} \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{axis}
\end{tikzpicture} \end{tikzpicture}

View File

@@ -129,6 +129,24 @@ sp="/-\|"
# done # done
# 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 # # Copy BPGD decimation passing
# #
# echo -e "\rCopying BPGD param exploration results..." # echo -e "\rCopying BPGD param exploration results..."
@@ -151,20 +169,20 @@ sp="/-\|"
# Copy BPGD with decimation info passing over max iter. results # Copy BPGD with decimation info passing over max iter. results
echo -e "\rCopying BPGD over max. iter. results..." # echo -e "\rCopying BPGD over max. iter. results..."
echo -n ' ' # echo -n ' '
for pass_soft_info in "True" "False"; do # for pass_soft_info in "True" "False"; do
for F in 1 2 3; do # for F in 1 2 3; do
for W in 3 4 5; 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}/" # 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) # LATEST_RESULTS_DIR=$(ls -t ${SRC_PATH} | head -1)
SRC_FILE="${SRC_PATH}/${LATEST_RESULTS_DIR}/LERs.csv" # 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}" # DEST_DIR="res/sim/max_iter/WindowingSyndromeSpaGdDecoderPassDecimation/p_0.0025/pass_soft_info_${pass_soft_info}/F_${F}/W_${W}"
mkdir -p ${DEST_DIR} # mkdir -p ${DEST_DIR}
DEST_FILE="${DEST_DIR}/LERs.csv" # DEST_FILE="${DEST_DIR}/LERs.csv"
cp ${SRC_FILE} ${DEST_FILE} # cp ${SRC_FILE} ${DEST_FILE}
post_process_LERs ${DEST_FILE} # post_process_LERs ${DEST_FILE}
printf "\b${sp:i++%${#sp}:1}" # printf "\b${sp:i++%${#sp}:1}"
done # done
done # 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