Commit Graph

75 Commits

Author SHA1 Message Date
Christopher Berner
0644794488 Add Encoder and Decoder that can span multiple blocks 2019-02-20 20:52:44 -08:00
Christopher Berner
7c361d698e Add Object Transmission Information struct 2019-02-18 23:25:56 -08:00
Christopher Berner
ca552aaa55 Move PI solver to separate file 2019-02-18 17:02:54 -08:00
Christopher Berner
5e2c7a9077 Optimize mul_row() implementation 2019-02-18 10:48:06 -08:00
Christopher Berner
a20f894c52 Support extra repair symbols when decoding 2019-02-18 10:34:43 -08:00
Christopher Berner
fc0ae5d162 Keep histrogram to accelerate computation of "r"
Improves performance by 5%
2019-02-16 10:56:24 -08:00
Christopher Berner
35145f43c8 Reduce memory allocation for graph 2019-02-15 23:45:34 -08:00
Christopher Berner
0ccc423bfd Add specialized UsizeArrayMap 2019-02-15 23:25:40 -08:00
Christopher Berner
b5360175ee Fix initial end column in row selection stats 2019-02-15 22:48:23 -08:00
Christopher Berner
27d1e75ab9 Fix bug in row selection 2019-02-15 22:33:40 -08:00
Christopher Berner
ae26fbfe0d Refactor row selection code 2019-02-15 22:23:16 -08:00
Christopher Berner
123d5ab2c1 Optimize row selection stats tracking 2019-02-15 21:56:48 -08:00
Christopher Berner
dc5c4c9cce Replace panic!() with unreachable!() 2019-02-15 21:25:41 -08:00
Christopher Berner
c93140968e Document where HDPC rows are defined 2019-02-15 20:58:13 -08:00
Christopher Berner
34f6ba3a46 Reduce memory allocation
Improves perf by 10%
2019-02-14 21:32:09 -08:00
Christopher Berner
f61c13ec6f Replace Vec with array 2019-02-13 22:56:04 -08:00
Christopher Berner
36eca029a4 Use with_capacity when possible to create vectors
Improves perf ~3%
2019-02-13 22:41:42 -08:00
Christopher Berner
1f0a6639b4 Remove unneeded OctetMatrix methods 2019-02-13 21:35:26 -08:00
Christopher Berner
f85d6c5075 Remove excess clone()'ing
Improves performance by 15%
2019-02-12 23:04:30 -08:00
Christopher Berner
966ed6d666 Refactor first phase decoding 2019-02-12 21:18:19 -08:00
Christopher Berner
42fab82742 Prevent inlining some functions to make profiling easier 2019-02-12 21:07:05 -08:00
Christopher Berner
a7966934dd Add per phase tracking of symbol XOR and MUL ops 2019-02-12 18:08:24 -08:00
Christopher Berner
14ede8e96e Incrementally compute row selection stats for first phase
Improve performance by ~5%
2019-02-11 23:34:10 -08:00
Christopher Berner
195843fe66 Fix compiler warnings 2019-02-11 21:59:54 -08:00
Christopher Berner
5dd3a0bc18 Implement sorting by original degree 2019-02-11 18:21:52 -08:00
Christopher Berner
e84bdfbd41 Resolve ambiguity about graph construction 2019-02-11 17:59:10 -08:00
Christopher Berner
f8d8d53c52 Fix compiler warnings and add a test 2019-02-10 23:41:41 -08:00
Christopher Berner
2ebe217f52 Replace HashMap with ArrayMap
Improve performance 1-2%
2019-02-10 16:03:44 -08:00
Christopher Berner
4c8f607f3b Refactor first_phase to make profiling even easier 2019-02-10 14:15:49 -08:00
Christopher Berner
88f898d7df Refactor first_phase to make profiling easier 2019-02-10 14:03:43 -08:00
Christopher Berner
051e3c231f Replace HashMap usage in graph calculation
Improves performance by 7%
2019-02-10 13:49:57 -08:00
Christopher Berner
1e8ac28bfe Add ArrayMap class
Makes offset code easier to understand, and is more reusable as a
HashMap replacement
2019-02-10 13:44:51 -08:00
Christopher Berner
e95315dc78 Optimize submatrix multiplication
Improves performance by ~15%
2019-02-10 10:27:09 -08:00
Christopher Berner
d7b0e0bf37 Fix unused code warnings 2019-02-09 15:32:56 -08:00
Christopher Berner
c0a83d7853 Optimize first_phase_selection()
Improves performance by ~15%
2019-02-09 15:23:34 -08:00
Christopher Berner
ef4d87ba6d Refactor first decoding phase
Improves performance a couple percent
2019-02-09 14:58:32 -08:00
Christopher Berner
5b75f4c5cf Optimize submatrix multiplication
Improves performance by ~4%
2019-02-09 13:10:06 -08:00
Christopher Berner
3798090453 Optimize matrix row FMA operation
Improves performance by ~13%
2019-02-09 11:21:31 -08:00
Christopher Berner
93467a9d6e Disable decode verification steps in release build
Improves performance by ~10%
2019-02-07 22:23:50 -08:00
Christopher Berner
06002938ed Refactor decoder to use OctetMatrix 2019-02-07 21:33:48 -08:00
Christopher Berner
fa8e6cae70 Refactor decoder to use OctetMatrix for X 2019-02-07 19:19:14 -08:00
Christopher Berner
5fe8ac022d Simplify OctetMatrix::set() 2019-02-07 19:01:22 -08:00
Christopher Berner
4d8405aa2a Precompute Octet multiplication table 2019-02-04 22:44:38 -08:00
Christopher Berner
2b97474588 Optimize Symbol * scalar multiplication 2019-02-03 22:58:37 -08:00
Christopher Berner
aea5933a31 Prevent inlining of decoding phases
This makes profiling easier, since it retains the callstack, and has
essentially no performance impact
2019-02-03 21:56:44 -08:00
Christopher Berner
27d07a2d26 Avoid multiplication by zero in decoder
Also add assertion, to catch inefficient code
2019-02-03 19:52:33 -08:00
Christopher Berner
f0f68e64a1 Add tracking of Symbol add ops when decoding 2019-02-03 19:35:20 -08:00
Christopher Berner
4cb675c618 Optimize multiplication by X and fix mul op tracking 2019-02-03 19:31:20 -08:00
Christopher Berner
ece0c54244 Optimize fma_rows() to avoid multiplying by 1 2019-02-03 19:28:32 -08:00
Christopher Berner
414aacea77 Check optimized decoder efficiency in sparsity computation 2019-02-03 16:13:43 -08:00