2 ms·
> the instructions are entirely useless I mostly agree, but for me the frequency scaling is almost irrelevant. Here’s a link, expand “Other settings” and you’l
by Const-me 6y ago
> the instructions are entirely useless
I mostly agree, but for me the frequency scaling is almost irrelevant. Here’s a link, expand “Other settings” and you’ll see: https://store.steampowered.com/hwsurvey https://store.steampowered.com/hwsurvey
If you implement AVX2, the code will run on 76% of PCs. When you want good performance, such optimization is a good use of limited resources.
AVX512 is only at 0.42%. That’s why it’s useless to implement AVX512 except for servers where you have full control over hardware. And with current state of Intel, not necessarily a good idea even for servers, it’s quite possible in a couple of years you’ll want to switch to AMD.
- killerstorm 6y agoEh? Compilers can generate two versions of code -- AVX and non-AVX - and dynamically choose depending on CPU capabilities. It was this way for ages.
- Const-me 6y ago> Compilers can generate two versions of code From what? Automatic vectorization is very limited, it’s only good for pure vertical algorithms. > and dynamically choose depending on CPU capabilities Only Intel compiler does that, the rest of them don’t. Sometimes I ship multiple versions of binaries. Other times I do runtime dispatch myself, it’s only couple lines of code, __cpuid() then cache some function pointers, or abstract class pointers. It’s even possible to compile these implementations from the same C++ source, using templates, macros, and/or something else.