Add whole decoding line to max_iter plot
This commit is contained in:
@@ -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}
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
Reference in New Issue
Block a user