-
Notifications
You must be signed in to change notification settings - Fork 52
Add SVE2 support in xsimd as a fundable project. #314
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
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,10 @@ | ||
| #### Overview | ||
| xsimd is a C++ header-only library that abstracts SIMD (vectorization) intrinsics behind a single, generic API. The same code - `xsimd::batch<float>` - compiles to optimal machine code on x86 SSE/AVX, ARM NEON, RISC-V, and WebAssembly, with no runtime overhead. When an intrinsic is missing on a given target, xsimd falls back gracefully rather than failing or leaving the developer to write platform-specific branches. This is why projects like Mozilla Firefox, Apache Arrow, and Pythran have adopted it as their vectorization layer. | ||
|
|
||
| Writing SIMD intrinsics by hand is notoriously painful. Each architecture exposes different types, different naming conventions, and different gotchas — alignment rules, predicate registers, lane-width surprises, compiler bugs. Targeting two architectures means two separate, opaque, hard-to-test code paths. xsimd eliminates that cost entirely. | ||
|
|
||
| ARM is now a first-class server architecture. AWS Graviton4 — broadly deployed today across EC2 instance families — ships with SVE2, ARM's latest vector ISA. Google and Microsoft have both announced their own ARM-based server chips (Axion and Cobalt 200 respectively), signalling an industry-wide shift. SVE2 brings a materially richer instruction set than NEON, and xsimd currently cannot exploit it — falling back to SVE and NEON on hardware that is capable of significantly more. | ||
|
|
||
| We propose to implement a complete xsimd::sve2 backend — all arithmetic, mathematical, and reduction operations . The work will be fully tested, documented, and merged upstream into the public repository under the existing BSD 3-Clause license. | ||
|
|
||
| ##### Are you interested in this project? Either entirely or partially, contact us for more information on how to help us fund it | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. And towards the end 👀 @SylvainCorlay Funding this development will directly enhance the cutting-edge data processing workflow using Arrow and Velox, paving the way for the future of ARM computing!
Member
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Ok I can add those parts @AntoinePrv
Member
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @AntoinePrv Can you please check PR #316. Thanks |
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,9 @@ | ||
| import useDocusaurusContext from '@docusaurus/useDocusaurusContext'; | ||
| import GetAQuotePage from '@site/src/components/fundable/GetAQuotePage'; | ||
|
|
||
| export default function FundablePage() { | ||
| const { siteConfig } = useDocusaurusContext(); | ||
| return ( | ||
| <GetAQuotePage/> | ||
| ); | ||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,9 @@ | ||
| import useDocusaurusContext from '@docusaurus/useDocusaurusContext'; | ||
| import LargeProjectCardPage from '@site/src/components/fundable/LargeProjectCardPage'; | ||
|
|
||
| export default function FundablePage() { | ||
| const { siteConfig } = useDocusaurusContext(); | ||
| return ( | ||
| <LargeProjectCardPage/> | ||
| ); | ||
| } |
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sorry I'm late to the party.
Wanted to add:
This is why projects like Mozilla Firefox, Apache Arrow, Meta Velox, KDE Krita, and Pythran have adopted it as their vectorization layer.