Christopher Berner
c244828d71
Various minor refactorings
2020-01-26 10:15:56 -08:00
Anders Martinsson
04786d26fd
Add operation vectors for better encoding performance
...
Using stored operation vectors when generating intermediate symbols make
encoding around three times faster (depends on block size).
Signed-off-by: Anders Martinsson <anders.martinsson@intinor.se>
2020-01-26 10:15:56 -08:00
Christopher Berner
f0177f9311
Convert column iterator to return only 1-valued rows
2020-01-19 11:08:40 -08:00
Christopher Berner
87f8e7ae81
Remove logic to update column index
2020-01-19 11:08:40 -08:00
Christopher Berner
c07da3e667
Index adjacent nodes in graph
...
Speeds up graph selection step by ~3x
2020-01-19 11:08:40 -08:00
Christopher Berner
69187f6e2d
Remove scratch graph object
2020-01-19 11:08:40 -08:00
Christopher Berner
f6829719e2
Further optimize graph memory usage
...
Reduces selection helper memory usage by ~50%
2020-01-19 11:08:40 -08:00
Christopher Berner
e5941cd5a4
Restructure graph to be more memory efficient
2020-01-19 11:08:40 -08:00
Christopher Berner
cccd950f1e
Improve accuracy of graph memory tracking
2020-01-19 11:08:40 -08:00
Christopher Berner
8d3de9a4bc
Document TODO
2020-01-19 11:08:40 -08:00
Christopher Berner
8d75de4d97
Reduce first phase stats memory usage
...
Reduces memory by ~1MB for large symbol counts
2020-01-19 11:08:40 -08:00
Christopher Berner
c7d16f2c89
Replace unnecessary usage of UsizeArrayMap
2020-01-19 11:08:40 -08:00
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