mirror of
https://github.com/status-im/leopard.git
synced 2025-02-17 16:37:17 +00:00
Optimize decoder IFFT
This commit is contained in:
parent
c7f0085948
commit
b2ad9403fe
@ -31,13 +31,16 @@
|
||||
/*
|
||||
TODO:
|
||||
|
||||
+ Look into 12-bit fields as a performance optimization
|
||||
Short-term:
|
||||
+ FF8 decoder needs DIT FFT optimization
|
||||
+ Port DIT FFT code to FF16
|
||||
+ Unroll first/final butterflies to avoid extra copies/xors in encoder
|
||||
+ Skip a lot of the initial FWHT() layers that are just operating on zeroes
|
||||
+ For the actual FFT(), I should be unrolling the bottom two layers
|
||||
and performing them in a specialized function that does 2 <=> 2 and
|
||||
then 1<=>1, 1<=>1 operations in local registers/cache
|
||||
+ Multithreading
|
||||
|
||||
Mid-term:
|
||||
+ Look into 12-bit fields as a performance optimization
|
||||
|
||||
Long-term:
|
||||
+ Evaluate the error locator polynomial based on fast polynomial interpolations in O(k log^2 k)
|
||||
+ Look into getting EncodeL working so we can support larger recovery sets
|
||||
+ Implement the decoder algorithm from {3} based on the Forney algorithm
|
||||
|
@ -1544,7 +1544,7 @@ void ReedSolomonDecode(
|
||||
IFFT_DIT(
|
||||
buffer_bytes,
|
||||
nullptr,
|
||||
n,
|
||||
m + original_count,
|
||||
work,
|
||||
nullptr,
|
||||
n,
|
||||
|
@ -42,8 +42,8 @@ using namespace std;
|
||||
struct TestParameters
|
||||
{
|
||||
#ifdef LEO_HAS_FF16
|
||||
unsigned original_count = 1000; // under 65536
|
||||
unsigned recovery_count = 200; // under 65536 - original_count
|
||||
unsigned original_count = 100; // under 65536
|
||||
unsigned recovery_count = 20; // under 65536 - original_count
|
||||
#else
|
||||
unsigned original_count = 128; // under 65536
|
||||
unsigned recovery_count = 128; // under 65536 - original_count
|
||||
|
Loading…
x
Reference in New Issue
Block a user