3.2.4.3.2. LDPC Decoder parameters

3.2.4.3.2.1. --dec-h-path Required

Type:file
Rights:read only
Examples:--dec-h-path conf/dec/LDPC/AR4JA_4096_8192.qc --dec-h-path conf/dec/LDPC/MACKAY_504_1008.alist

Give the path to the \(H\) parity matrix. Support the AList and the QC formats.

This argument is not required if the encoder type --enc-type is LDPC_DVBS2.

3.2.4.3.2.2. --dec-type, -D

Type:text
Allowed values:BIT_FLIPPING BP_PEELING BP_FLOODING BP_HORIZONTAL_LAYERED BP_VERTICAL_LAYERED CHASE ML
Default:BP_FLOODING
Examples:--dec-type BP_HORIZONTAL_LAYERED

Select the algorithm you want to decode the codeword.

Description of the allowed values:

Value Description
BIT_FLIPPING Select the BF category of algorithms.
BP_PEELING Select the BP-P algorithm from [Spi01].
BP_FLOODING Select the BP-F algorithm from [MN95].
BP_HORIZONTAL_LAYERED Select the BP-HL algorithm from [YPNA01].
BP_VERTICAL_LAYERED Select the BP-VL algorithm from [ZF02].
CHASE See the common --dec-type, -D parameter.
ML See the common --dec-type, -D parameter.

3.2.4.3.2.3. --dec-implem

Type:text
Allowed values:STD GALA WBF SPA LSPA AMS MS NMS OMS
Default:SPA
Examples:--dec-implem AMS

Select the implementation of the algorithm to decode.

Description of the allowed values:

Value Description
STD Select the STD implementation.
GALA Select the GALA algorithm [RL09].
WBF Select the WBF algorithm [WNY+10].
SPA Select the SPA update rules [MN95].
LSPA Select the LSPA update rules [MN95].
AMS Select the AMS update rule.
MS Select the MS update rule [FMI99].
NMS Select the NMS update rule [CF02].
OMS Select the OMS update rule [CF02].

Table 3.2 shows the different decoder types and their corresponding available implementations.

Table 3.2 LDPC decoder types and available implementations.
Decoder STD GALA WBF SPA LSPA AMS MS NMS OMS
BF     \(\checkmark\)            
BP-P \(\checkmark\)                
BP-F   \(\checkmark\)   \(\checkmark^{**+}\) \(\checkmark^{**}\) \(\checkmark^{**}\) \(\checkmark^{**}\) \(\checkmark^{**}\) \(\checkmark^{**}\)
BP-HL       \(\checkmark^{**}\) \(\checkmark^{**}\) \(\checkmark^{**}\) \(\checkmark^{*}\) \(\checkmark^{*}\) \(\checkmark^{*}\)
BP-VL       \(\checkmark^{**}\) \(\checkmark^{**}\) \(\checkmark^{**}\) \(\checkmark^{**}\) \(\checkmark^{**}\) \(\checkmark^{**}\)

\(^{*}/^{**}\): compatible with the --dec-simd INTER parameter.

\(^{**}\): require the C++ compiler to support the dynamic memory allocation for over-aligned data, see the P0035R4 paper. This feature is a part of the C++17 standard (working on the C++ GNU compiler version 8.1.0). When compiling with the GNU compiler in C++11 mode, the -faligned-new option enables specifically the required feature.

\(^{+}\): compatible with the --dec-simd INTRA parameter.

3.2.4.3.2.4. --dec-simd

Type:text
Allowed values:INTER
Examples:--dec-simd INTER

Select the SIMD strategy you want to use. Table 3.2 shows the decoders and implementations that support SIMD.

Description of the allowed values:

Value Description
INTRA Select the intra-frame strategy.
INTER Select the inter-frame strategy.

Note

In the intra-frame strategy, SIMD units process several LLRs in parallel within a single frame decoding. In the inter-frame strategy, SIMD units decodes several independent frames in parallel in order to saturate the SIMD unit. This approach improves the throughput of the decoder but requires to load several frames before starting to decode, increasing both the decoding latency and the decoder memory footprint.

Note

When the inter-frame SIMD strategy is set, the simulator will run with the right number of frames depending on the SIMD length. This number of frames can be manually set with the --src-fra, -F parameter. Be aware that running the simulator with the --src-fra, -F parameter set to 1 and the --dec-simd parameter set to INTER will completely be counterproductive and will lead to no throughput improvements.

3.2.4.3.2.5. --dec-h-reorder

Type:text
Allowed values:ASC DSC NONE
Default:NONE
Examples:--dec-h-reorder ASC

Specify the order of execution of the CNs in the decoding process depending on their degree. The degree of a CN is the number of VNs that are connected to it.

Description of the allowed values:

Value Description
ASC Reorder from the smallest CNs degree to the biggest CNs degree.
DSC Reorder from the biggest CNs degree to the smallest CNs degree.
NONE Do not change the order.

3.2.4.3.2.6. --dec-ite, -i

Type:integer
Default:10
Examples:--dec-ite 30

Set the maximal number of iterations in the LDPC decoder.

Note

By default, in order to speedup the decoding time, the decoder can stop the decoding process if all the parity check equations are verified (also called the syndrome detection). In that case the decoder can perform less decoding iterations than the given number. To force the decoder to make all the iterations, use the --dec-no-synd parameter.

3.2.4.3.2.7. --dec-min

Type:text
Allowed values:MIN MINL MINS
Default:MINL
Examples:--dec-min MIN

Define the \(\min^*\) operator approximation used in the AMS update rule.

Description of the allowed values:

Value Description
MINS \(\min^*(a,b) = \min(a,b) + \log(1 + \exp(-(a + b))) - \log(1 + \exp(-|a - b|))\).
MINL \(\min^*(a,b) \approx \min(a,b) + corr(a + b) - corr(|a + b|)\) with \(corr(x) = \begin{cases} 0 & \text{if } x >= 2.625\\ -0.375 x + 0.6825 & \text{if } x < 1.0 \\ -0.1875 x + 0.5 & \text{else} \end{cases}\).
MIN \(\min^*(a,b) \approx \min(a,b)\).

MINS for Min Star is the exact \(\min^*\) operator. MINL for Min Linear is a linear approximation of the \(\min^*\) function. MIN for Min is the simplest approximation with only a \(\min\) function.

3.2.4.3.2.8. --dec-norm

Type:real number
Default:1.0
Examples:--dec-norm 0.75

Set the normalization factor used in the NMS update rule.

3.2.4.3.2.9. --dec-off

Type:real number
Default:0.0
Examples:--dec-off 0.25

Set the offset used in the OMS update rule.

3.2.4.3.2.10. --dec-mwbf

Type:real number
Default:0.0
Examples:--dec-mwbf 1.0

Give the factor used in the modified WBF algorithm. Set to 0 for basic WBF algorithm.

3.2.4.3.2.11. --dec-synd-depth

Type:integer
Default:1
Examples:--dec-synd-depth 2

Set the number of iterations to process before enabling the syndrome detection. In some cases, it can help to avoid false positive detections.

3.2.4.3.2.12. --dec-no-synd

Disable the syndrome detection, all the LDPC decoding iterations will be performed.

3.2.4.3.2.13. References

[CF02](1, 2) J. Chen and M. P. C. Fossorier. Density evolution for two improved bp-based decoding algorithms of ldpc codes. IEEE Communications Letters (COMML), 6(5):208–210, May 2002. doi:10.1109/4234.1001666.
[FMI99]M. P. C. Fossorier, M. Mihaljevic, and H. Imai. Reduced complexity iterative decoding of low-density parity check codes based on belief propagation. IEEE Transactions on Communications (TCOM), 47(5):673–680, May 1999. doi:10.1109/26.768759.
[MN95](1, 2, 3) D. J. C. MacKay and R. M. Neal. Good codes based on very sparse matrices. In IMA International Conference on Cryptography and Coding (IMA-CCC), 100–111. UK, December 1995. Springer. doi:10.1007/3-540-60693-9_13.
[RL09]W. Ryan and S. Lin. Channel codes: classical and modern. Cambridge University Press, September 2009. ISBN 978-0-511-64182-4. URL: http://www.cambridge.org/9780521848688.
[Spi01]M.G. Luby ; M. Mitzenmacher ; M.A. Shokrollahi ; D.A. Spielman. Efficient erasure correcting codes. IEEE Transactions on Information Theory (TIT), 47(2):569 – 584, February 2001. doi:10.1109/18.910575.
[WNY+10]T. Wadayama, K. Nakamura, M. Yagita, Y. Funahashi, S. Usami, and I. Takumi. Gradient descent bit flipping algorithms for decoding ldpc codes. IEEE Transactions on Communications (TCOM), 58(6):1610–1614, June 2010. doi:10.1109/TCOMM.2010.06.090046.
[YPNA01]E. Yeo, P. Pakzad, B. Nikolic, and V. Anantharam. High throughput low-density parity-check decoder architectures. In Global Communications Conference (GLOBECOM), volume 5, 3019–3024 vol.5. IEEE, 2001. doi:10.1109/GLOCOM.2001.965981.
[ZF02]J. Zhang and M. Fossorier. Shuffled belief propagation decoding. In Asilomar Conference on Signals, Systems, and Computers (ACSSC), volume 1, 8–15 vol.1. IEEE, November 2002. doi:10.1109/ACSSC.2002.1197141.