Settings

Theme

The state of SIMD in Rust in 2026

shnatsel.github.io

38 points by verdagon · 8 comments

Reader

1 thread
Archit3ch

Hot take: there is no portable SIMD.

You can either have performance (=write manual ASM for each platform), or portability, but not both.

What so-called "portable SIMD" libraries give you is "portable auto-vectorization". "Portable performance" is a global property of the algorithm. Relying on auto-vectorization will result in e.g. sub-optimal register spills in practice. The microbenchmarks will look great, though. ;)

  • Sharlin

    Getting 2x or 4x performance in your inner loops using a reasonable SIMD library is infinitely better than theoretically getting 8x performance with hand-coded nonportable intrinsics, because the latter is never going to happen in most programs, so the actual point of comparison is scalar code, or autovectorized code at best.

  • louthy

    > there is no portable SIMD

    Except in languages with a JIT compiler

    • Tanjreeve

      Starts to get a bit philosophical on what constitutes "portable" but JIT compilers would emit an opcode based off of whatever the frontend/IR is saying to do surely?

  • IshKebab

    It's a continuum. Some things basically all SIMD implementations support. Want to add 2 4xf32 vectors together? That's pretty easy to do portably.

    But yeah to be fair if you are at that point, you probably want to go fully non-portable anyway. Especially with AI.

    Has anyone even figured out how to do vector stuff (SVE/RVV) without assembly?

  • Scene_Cast2

    What about numpy, numba, and torch.compile?

Keyboard Shortcuts

j
Next item
k
Previous item
o / Enter
Open selected item
?
Show this help
Esc
Close modal / clear selection