Opening another ticket since this is a separate discussion from #47 and might be more controversial:
The more I look into the upcoming std::simd, the more I wonder if faster should not become a thinner "SIMD-friendly iteration" library that neatly plugs into std::simd and is really good at handling variable slices, zipping, ... instead of providing a blanket implementation over std::arch.
Right now it seems that many common intrinsics and operations faster provides on packed types are or might be implemented in std::simd (compare coresimd/ppsv).
At the same time, for things that won't be in std::simd (and will be more platform specific), faster will have a hard time providing a consistent performance story anyway.
By that reasoning I see a certain appeal primarily focusing on a more consistent cross-platform experience with a much lighter code base (e.g., imagine faster without arch/ and intrin/ and using mostly std::simd instead of vektor).
Faster could also integrate std::arch specific functions and types, but rather as extensions and helpers (e.g., for striding) for special use cases, instead of using them as internal fundamentals.
Opening another ticket since this is a separate discussion from #47 and might be more controversial:
The more I look into the upcoming
std::simd, the more I wonder iffastershould not become a thinner "SIMD-friendly iteration" library that neatly plugs intostd::simdand is really good at handling variable slices, zipping, ... instead of providing a blanket implementation overstd::arch.Right now it seems that many common intrinsics and operations faster provides on packed types are or might be implemented in
std::simd(compare coresimd/ppsv).At the same time, for things that won't be in
std::simd(and will be more platform specific), faster will have a hard time providing a consistent performance story anyway.By that reasoning I see a certain appeal primarily focusing on a more consistent cross-platform experience with a much lighter code base (e.g., imagine faster without
arch/andintrin/and using mostlystd::simdinstead ofvektor).Faster could also integrate
std::archspecific functions and types, but rather as extensions and helpers (e.g., for striding) for special use cases, instead of using them as internal fundamentals.