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.
|
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}
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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