Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Future use of core::simd and moving to SIMD-based vectorized implementations #264

Open
brycx opened this issue Dec 27, 2021 · 0 comments
Open
Labels
help wanted Extra attention is needed investigation Investigation task

Comments

@brycx
Copy link
Member

brycx commented Dec 27, 2021

Portable SIMD has landed in nightly Rust core::simd[1]. We should investigate if using SIMD in Orion is a viable option. For example, ChaCha20 can be vectorized[2], which could provide quite substantial performance benefits.

What needs to be figured out:

  • What is, if there is any, the timeline for stabilization of core::simd and potentially std::simd (?)
  • Will the portable SIMD API require use of unsafe code if utilized within Orion?
  • What other primitives could benefit from vectorization? BLAKE2 is a candidate as well IIRC
  • If simd would require std for some unknown reason, do we want to consider providing vectorized implementations for safe-api only?
  • Will the portable SIMD offered by Rust be portable enough in the sense that we'd be able to remove the current portable non-vectorized implementations?
  • Would the portable SIMD be usable on all platforms we test on currently, including the non-std targets? What would the impact on WASM support be here?

[1]: Most of the work seems to happen over here https://github.com/rust-lang/portable-simd
[2]: https://eprint.iacr.org/2013/759.pdf

@brycx brycx added help wanted Extra attention is needed investigation Investigation task labels Dec 27, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
help wanted Extra attention is needed investigation Investigation task
Projects
None yet
Development

No branches or pull requests

1 participant