2 ms·
I'm not sure cross-platform SIMD vector data types are practical, at least not ones that don't force you to understand the implementation details on every micro
by jandrewrogers 6y ago
I'm not sure cross-platform SIMD vector data types are practical, at least not ones that don't force you to understand the implementation details on every microarchitecture you target.
If you actually care about performance, and presumably anyone that wants to use SIMD vector types does, you need to fit the higher-level data structures to the nuances of the microarchitecture you are targeting. Compilers don't do optimization at that level, you have to write the code yourself. Thin wrappers on compiler intrinsics is actually the right level of abstraction if you want to exploit those capabilities.
Similarly, how code is parallelized is completely dependent on what you are trying to do, the software architecture, and the silicon microarchitecture; there is no way to usefully standardize it outside of use cases so narrow they probably don't belong in C++. Parallelization in practice happens at a higher level of abstraction than the programming language.
And FWIW, I use many of these new C++ language features in real software every day because they provide immediate and compelling value. I am not an academic.