Commit Graph

33 Commits

Author SHA1 Message Date
Slesarew
5a720829fa
feat: support no_std (#143)
* feat: support no_std

`metal` feature supports `no_std` in configuration `default-features = false, features = ["metal"]`.
Float calculation is done via `micromath` crate.

All previously available functionality remains under default `std` feature.

Some tweaking of `python` and `wasm` features was done to compile tests.

* feat: get rid of floats (#2)

* feat: remove conversion to f64, fix features

* chore: uncomment symbols_required checker, fmt

* revert: add cdylib target for python support

* fix: generalize crate type

---------

Co-authored-by: varovainen <99664267+varovainen@users.noreply.github.com>
2023-02-02 18:07:41 -08:00
Christopher Berner
95b6b5ae91 Make serde support optional 2020-08-30 09:39:39 -07: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
Luca Bruno
e61e1eb2d4 coded: consume symbol bytes
This allows Symbol bytes to be directly consumed by encoder and decoder,
avoiding some extra allocations.
2019-03-30 15:57:56 -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
91fa69a130 Gate some public functions with "benchmarking" feature 2019-03-23 14:42:19 -07:00
Christopher Berner
f288654525 Update to 2018 edition 2019-03-22 18:25:07 -07:00
Christopher Berner
f85d6c5075 Remove excess clone()'ing
Improves performance by 15%
2019-02-12 23:04:30 -08:00
Christopher Berner
16949d72b4 Refactor SIMD ops for Symbol to allow reuse 2019-02-07 18:38:51 -08:00
Christopher Berner
1c7e3dbb17 Fix various compiler warnings 2019-02-07 17:47:26 -08:00
Christopher Berner
6c056b827b Implement Symbol mul_scalar with AVX2
Improves perf by ~10x
2019-02-06 22:45:14 -08:00
Christopher Berner
9811566293 Add AVX2 implementation for Symbol FMA
Speeds up FMA by ~10x, and makes encoding/decoding ~35% faster
2019-02-06 22:45:14 -08:00
Christopher Berner
afaa92a65c Remove TODOs that don't actually seem important 2019-02-06 08:35:43 -08:00
Christopher Berner
5e7c9776a0 Add AVX2 implementation of Symbol +=
Improves performance of += by 27%
2019-02-05 23:12:28 -08:00
Christopher Berner
fd4576694f Optimize Symbol FMA
Improves performance ~11%
2019-02-04 22:53:10 -08:00
Christopher Berner
4d8405aa2a Precompute Octet multiplication table 2019-02-04 22:44:38 -08:00
Christopher Berner
208dff0152 Vectorize += for Symbols
This makes += ~8x faster, and encoding/decoding benchmarks ~15% faster
2019-02-04 18:42:58 -08:00
Christopher Berner
dfb700cdc4 Optimize repair packet generation and repair decoding
This improves repair performance by ~8%. Also, remove Symbol ops
that aren't needed
2019-02-03 23:19:09 -08:00
Christopher Berner
2b97474588 Optimize Symbol * scalar multiplication 2019-02-03 22:58:37 -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
ece0c54244 Optimize fma_rows() to avoid multiplying by 1 2019-02-03 19:28:32 -08:00
Christopher Berner
4c084c03ef Make Symbol division test pass deterministically 2019-02-03 14:53:59 -08:00
Christopher Berner
3b30d29373 Make multiplicative_inverse test pass deterministically 2019-01-31 14:37:37 -08:00
Christopher Berner
3c41b0b17f Implement FMA for Octet
Improves benchmark performance by ~7%
2019-01-29 19:07:16 -08:00
Christopher Berner
ec0a817bc7 Use get_unchecked() in Symbol FMA
Improves performance by ~10% on benchmarks
2019-01-29 18:56:26 -08:00
Christopher Berner
7cbf0dc485 Add FMA for Symbols 2019-01-29 18:20:36 -08:00
Christopher Berner
9c597ee6da Optimize Symbol::mul_scalar 2019-01-28 23:14:17 -08:00
Christopher Berner
3deb34f613 Refactor Symbol to use Octet 2019-01-28 23:08:22 -08:00
Christopher Berner
58522a74d1 Optimize matrix vector multiply 2019-01-28 22:38:02 -08:00
Christopher Berner
912330cd45 Refactor to use Symbol 2019-01-26 21:49:08 -08:00
Christopher Berner
ad44e2991b Implement octet matrix operations 2019-01-26 19:16:07 -08:00
Christopher Berner
8773208cc1 Implement basic arithmetic on symbols 2019-01-24 18:50:46 -08:00