Module engine

Source
Expand description

Low-level building blocks for Reed-Solomon encoding/decoding.

This is an advanced module which is not needed for simple usage or basic usage.

This module is relevant if you want to

  • use rate module and need an Engine to use with it.
  • create your own Engine.
  • understand/benchmark/test at low level.

§Engines

An Engine is an implementation of basic low-level algorithms needed for Reed-Solomon encoding/decoding.

  • Naive
    • Simple reference implementation.
  • NoSimd
    • Basic optimized engine without SIMD so that it works on all CPUs.
  • Avx2
    • Optimized engine that takes advantage of the x86(-64) AVX2 SIMD instructions.
  • Ssse3
    • Optimized engine that takes advantage of the x86(-64) SSSE3 SIMD instructions.
  • [Neon]
    • Optimized engine that takes advantage of the AArch64 Neon SIMD instructions.
  • DefaultEngine
    • Default engine which is used when no specific engine is given.
    • Automatically selects best engine at runtime.

Modules§

tables
Lookup-tables used by Engine:s.
utils
A collection of utility functions and helpers to facilitate the implementation of the Engine trait.

Structs§

Avx2
Optimized Engine using AVX2 instructions.
DefaultEngine
Engine that at runtime selects the best Engine.
Naive
Simple reference implementation of Engine.
NoSimd
Optimized Engine without SIMD.
ShardsRefMut
Mutable reference to a shard array.
Ssse3
Optimized Engine using SSSE3 instructions.

Constants§

CANTOR_BASIS
TODO
GF_BITS
Size of Galois field element GfElement in bits.
GF_MODULUS
GF_ORDER - 1
GF_ORDER
Galois field order, i.e. number of elements.
GF_POLYNOMIAL
Galois field polynomial.

Traits§

Engine
Trait for compute-intensive low-level algorithms needed for Reed-Solomon encoding/decoding.

Type Aliases§

GfElement
Galois field element.