By: Charlie Burnes (charlie.burnes.delete@this.no-spam.com), May 21, 2022 10:11 pm
Room: Moderated Discussions
> Nothing about vector instructions implies an object-oriented approach. ... But for an abstraction it is an artificial limitation that is entirely
> unnecessary. I suppose it also indicates a cultural divide, you either prefer C or C++ and I happen to fall on the C side of that divide.
> Guess I will continue to use my way instead of the highway. ;)
Very funny!!
If the choice is your way or the Highway, what is your way?
The main thing I’m struggling with is I can’t write my code in a way that is SIMD width agnostic. I would like to write it using 512-bit vectors and have some way to automatically make it run on machines with 256-bit and 128-bit vectors. That does not seem to be possible with Highway, as far as I can determine. There is a way to force Highway to use 128-bit vectors, but that is not intended to provide the same performance as AVX-512 vectors. Do you (or anyone else) have any suggestions for what to do when the code can not be SIMD width agnostic? I really do not want to write separate versions for 512-bit, 256-bit and 128-bit SIMD CPUs. The 128-bit version would be for Web Assembly and NEON, not an Intel instruction set.
> unnecessary. I suppose it also indicates a cultural divide, you either prefer C or C++ and I happen to fall on the C side of that divide.
> Guess I will continue to use my way instead of the highway. ;)
Very funny!!
If the choice is your way or the Highway, what is your way?
The main thing I’m struggling with is I can’t write my code in a way that is SIMD width agnostic. I would like to write it using 512-bit vectors and have some way to automatically make it run on machines with 256-bit and 128-bit vectors. That does not seem to be possible with Highway, as far as I can determine. There is a way to force Highway to use 128-bit vectors, but that is not intended to provide the same performance as AVX-512 vectors. Do you (or anyone else) have any suggestions for what to do when the code can not be SIMD width agnostic? I really do not want to write separate versions for 512-bit, 256-bit and 128-bit SIMD CPUs. The 128-bit version would be for Web Assembly and NEON, not an Intel instruction set.