| ▲ | the__alchemist 13 hours ago | ||||||||||||||||||||||||||||||||||||||||||||||
Of interest, I've written my own core::simd mimic so I don't have to make all my libs and programs use nightly. It started as me just making my Quaternion and Vec lib (lin-alg) have their own SoA SIMD variants (Vec3x16 etc), but I ended up implementing and publicly exposing f32x16 etc. Will remove those once core::simd is stable. Downside: These are x86 only; no ARM support. I also added packing and unpacking helpers that assist with handling final lane 0 values etc. But there is still some subtly, as the article pointed out, compared to using Rayon or non-SIMD CPU code related to packing and unpacking. E.g. you should try to keep things in their SIMD form throughout the whole pipeline, how you pair them with non-SIMD values (Like you might pair [T; 8] with f32x8 etc) etc. | |||||||||||||||||||||||||||||||||||||||||||||||
| ▲ | ____tom____ 13 hours ago | parent [-] | ||||||||||||||||||||||||||||||||||||||||||||||
I'm not a rust programmer. Can't you just make a local copy of the existing package and use that? Did you need to re-implement? | |||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||