3.2.4.3.2. LDPC Decoder parameters¶
3.2.4.3.2.1. --dec-h-path
¶
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.
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. |