Commit Graph

49 Commits

Author SHA1 Message Date
Christopher Berner
792b68638d Add memory approximation for first phase stats struct 2020-01-19 11:08:40 -08:00
Christopher Berner
01fcca7364 Accurately report column index memory usage 2020-01-19 11:08:40 -08:00
Christopher Berner
b60387a132 Remove unaccessed columns from X
Reduces memory usage by ~10%
2020-01-19 11:08:40 -08:00
Christopher Berner
f95998b0ff Add approximate memory analysis 2020-01-19 11:08:40 -08:00
Christopher Berner
bf1291253b Remove unnecessary counting of values greater than one 2020-01-19 11:08:40 -08:00
Christopher Berner
49448be936 Remove unnecessary support for non-binary values in binary matrices 2020-01-19 11:08:40 -08:00
Christopher Berner
5d57d3751e Separate binary and octet matrix classes 2020-01-19 11:08:40 -08:00
Christopher Berner
dbb0a7f7d3 Remove unnecessary normalization 2020-01-19 11:08:40 -08:00
Christopher Berner
ffee5f0d59 Remove special HDPC handling in selection helper 2020-01-19 11:08:40 -08:00
Christopher Berner
3bf4e1dfda Document usage of Errata 2 2020-01-19 11:08:40 -08:00
Christopher Berner
7ad2d331dd Remove dense row support from sparse matrix 2020-01-19 11:08:40 -08:00
Christopher Berner
7f3477d3de Separate HDPC rows from A matrix in PI solver
The HDPC rows are only non-binary values, so store them separately
to allow for more optimizations in the future.
2020-01-19 11:08:40 -08:00
Christopher Berner
b1f0f920c5 Document errata for RFC6330 2020-01-19 11:08:40 -08:00
Christopher Berner
f6fbcf072e Defer operations on symbols
This makes the algorithm more cache friendly, by first performing all
the calculations on the constraint matrix, and then applying the
operations to the Symbols

Improves performance on very large symbol counts (50k) by ~10%
2020-01-19 11:08:40 -08:00
Cem Karan
4a68f2529d feat: Derived serde::{Serialize, Deserialize} on all public types.
This should make it possible to use serde to serialize and deserialize
encoders/decoders while they are in use.  This is makes it possible to
ship them between processes as needed.
2020-01-09 19:34:21 -08:00
Christopher Berner
647e937c54 Optimize col index handling 2020-01-06 18:27:02 -08:00
Christopher Berner
13b1d0200f Remove unnecessary Symbol cloning 2020-01-06 18:27:02 -08:00
Christopher Berner
63208df2b5 Improve dense row handling in sparse matrix
* support resize()
* use logical col indices
2020-01-06 18:27:02 -08:00
Christopher Berner
55d42fdee2 Reuse scratch memory for graph 2020-01-06 18:27:02 -08:00
Christopher Berner
2bad8466fa Optimize HDPC row storage in sparse matrix 2020-01-06 18:27:02 -08:00
Christopher Berner
7eb6542865 Fix many Clippy warnings and errors 2019-12-23 12:04:05 -08:00
Christopher Berner
c8fd9bcbff Format code with rustfmt and add format check 2019-12-23 12:04:05 -08:00
Christopher Berner
a87f009979 Add additional assertions to codec 2019-04-14 16:51:38 -07:00
Christopher Berner
b2399469b2 Fix decoding crash
Fixes an issue in column swapping logic, where non-zeros might be
swapped into the V matrix instead of zeros
2019-04-13 16:30:25 -07:00
Christopher Berner
8286361f24 Optimize get_col_iter() 2019-04-11 17:51:18 -07:00
Christopher Berner
5eb972c21f Extract constant from loop 2019-04-09 21:30:25 -07:00
Christopher Berner
44f529214c Optimize row selection when r=1 2019-04-08 19:08:09 -07:00
Christopher Berner
6e18062b03 Rename freeze_columns() 2019-04-07 21:02:53 -07:00
Christopher Berner
fbd59bf982 Add fast path to column swapping for sparse 2019-04-07 20:09:51 -07:00
Christopher Berner
58550e3dd3 Ensure that optimize introduce previously is safe
Commit that introduce this: 59e88ad7581c2f7352e1054b40629e8cb7a9c572
2019-04-07 19:59:17 -07:00
Christopher Berner
6e4f8ecf32 Make stats resizing more sparse friendly 2019-04-07 18:53:59 -07:00
Christopher Berner
59e88ad758 Optimize to fifth PI phase for sparse 2019-04-07 17:55:51 -07:00
Christopher Berner
0d531de69e Further optimize PI solver for sparse matrices 2019-04-07 17:33:58 -07:00
Christopher Berner
f063d3114d Optimize sparse matrix density storage with more hinting 2019-04-07 16:18:29 -07:00
Christopher Berner
21e2133f7f Optimize PI decoder to be more sparse friendly 2019-04-06 23:15:32 -07:00
Christopher Berner
b3b6ab0fe9 Add TODOs noting places that may need to be optimized for sparse 2019-04-06 21:02:30 -07:00
Christopher Berner
7906ec47fb Optimize first phase selection helper resize()
Because we always zero out all following rows in the leading column,
the work it was doing was unnecessary
2019-04-06 20:51:33 -07:00
Christopher Berner
d12a2485bf Optimize column swapping in SparseOctetMatrix 2019-04-06 19:56:32 -07:00
Christopher Berner
5817ec9765 Refactor OctetMatrix into a trait 2019-04-05 21:18:25 -07:00
Christopher Berner
1cb16e4636 Refactor OctetMatrix interface to make it easier to sparsify 2019-04-05 20:13:00 -07:00
Luca Bruno
9fe45d6d76 decoder: avoid zero-symbols casts
This replaces zero-symbols casts with statically checked "Into" type
conversions.
2019-03-30 15:57:56 -07:00
Luca Bruno
38df97cce1 raptorq: rustfmt whole project 2019-03-28 21:57:30 -07:00
Christopher Berner
919b4a0f5b Reduce row swaps
Improves performance by ~1%
2019-03-23 13:29:00 -07:00
Christopher Berner
1431ace8bf Make test more robust and resolve TODO 2019-03-23 13:12:08 -07:00
Christopher Berner
dad38875a8 Replace petgraph with custom connected components code
Improves performance by ~20%
2019-03-23 12:22:27 -07:00
Christopher Berner
f288654525 Update to 2018 edition 2019-03-22 18:25:07 -07:00
Christopher Berner
2d92876aa4 Remove Octet::static_init() and use const fn instead 2019-03-21 23:24:53 -07:00
Christopher Berner
a8347df59d Switch to runtime SIMD detection 2019-03-21 21:50:21 -07:00
Christopher Berner
ca552aaa55 Move PI solver to separate file 2019-02-18 17:02:54 -08:00