3 ms·
> the much bigger problem with SIMD is that it is really hard to program for since vector sizes keep getting bigger This can be fixed with an abstraction layer
by janwas 4y ago
> the much bigger problem with SIMD is that it is really hard to program for since vector sizes keep getting bigger
This can be fixed with an abstraction layer such as github.com/google/highway (disclosure: I am the main author). The programming model is variable-length vectors and we can map that both to SSE4/AVX2/AVX-512 and SVE/RVV.
It seems to me that the actual pain (of large numbers of unique instructions in the ISA) is pushed to the CPU decoder, binutils, and abstraction layer.
> doesn't look good at all for big-little designs which seem to be the future
Why not? It's not clear to me why OSes shouldn't provide a "don't migrate me while I'm checking CPU capabilities and then running this SIMD/vector kernel".
> very few applications use it [AVX-512] because it requires optimization for a very small portion of the market.
Maybe so (though increasing), but the cost is also low - we literally just pay with binary size and compile time (for the extra codepath).