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
ratemodule and need anEngineto 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
AArch64Neon SIMD instructions.
- Optimized engine that takes advantage of the
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
Enginetrait.
Structs§
- Avx2
- Optimized
Engineusing AVX2 instructions. - Default
Engine Enginethat at runtime selects the best Engine.- Naive
- Simple reference implementation of
Engine. - NoSimd
- Optimized
Enginewithout SIMD. - Shards
RefMut - Mutable reference to a shard array.
- Ssse3
- Optimized
Engineusing SSSE3 instructions.
Constants§
- CANTOR_
BASIS - Cantor basis used by the additive FFT over GF(2^16).
- GF_BITS
- Size of Galois field element
GfElementin bits. - GF_
MODULUS GF_ORDER - 1- GF_
ORDER - Galois field order, i.e. number of elements.
- GF_
POLYNOMIAL - Galois field polynomial.
- SHARD_
CHUNK_ BYTES - Byte width of a shard chunk.
Traits§
- Engine
- Trait for compute-intensive low-level algorithms needed for Reed-Solomon encoding/decoding.
Type Aliases§
- GfElement
- Galois field element.