Возник вопрос, как известно производительность зависит от частоты процессора линейно, а вот выделение тепла квадратично. Не получится ли при использовании AVX512 в таком случае повысить энергоэффективность, про которую так парится рассказывающий?
That's a great question. The answer is - very much depends on the task and exact implementation of AVX-512 in hardware. In our case (with identical tasks across all the CPU cores) it's pretty easy to estimate the energy efficiency. Server CPUs are relatively constant in their power consumption under sustained load. So you can estimate Bytes/Joule using the GB/s numbers and reference TDP of the CPU used. When we went from AVX-2 to AVX-512 we jumped roughly from 9 GB/s to 10 GB/s in terms of speed, while the energy consumption remained more or less the same. So with those specific mnemonics/operations you are not going to get a lot more efficient when switching from AVX-2 to AVX-512. The devil is in the details. AVX-512 added not only new register sizes, but also all new kinds of operations. Some forms of compression/encryptions may not be easily expressible in AVX-2 set of operations, but can be elegantly mapped into just a couple of AVX-512. In that case you may get A LOT more energy-efficient and fast. PS: Sorry for replying in English, I don't have a Russian keypad.
Можно избавиться от split loads, если хранить в регистрах побайтно-сдвинутые haystack, а пересечение со следующей линией собрать в регистр двумя шафлами - _mm256_shuffle_epi8 и _mm256_permute. Будет раза в полтора быстрее.
Из-за того, что голос прерывался в самые неподхо м ен, по ть о ем рил ав о ень сложно.
шикарно. было очень интересно, жаль времени не хватило
Возник вопрос, как известно производительность зависит от частоты процессора линейно, а вот выделение тепла квадратично. Не получится ли при использовании AVX512 в таком случае повысить энергоэффективность, про которую так парится рассказывающий?
That's a great question. The answer is - very much depends on the task and exact implementation of AVX-512 in hardware.
In our case (with identical tasks across all the CPU cores) it's pretty easy to estimate the energy efficiency. Server CPUs are relatively constant in their power consumption under sustained load. So you can estimate Bytes/Joule using the GB/s numbers and reference TDP of the CPU used. When we went from AVX-2 to AVX-512 we jumped roughly from 9 GB/s to 10 GB/s in terms of speed, while the energy consumption remained more or less the same. So with those specific mnemonics/operations you are not going to get a lot more efficient when switching from AVX-2 to AVX-512.
The devil is in the details. AVX-512 added not only new register sizes, but also all new kinds of operations. Some forms of compression/encryptions may not be easily expressible in AVX-2 set of operations, but can be elegantly mapped into just a couple of AVX-512. In that case you may get A LOT more energy-efficient and fast.
PS: Sorry for replying in English, I don't have a Russian keypad.
Можно избавиться от split loads, если хранить в регистрах побайтно-сдвинутые haystack, а пересечение со следующей линией собрать в регистр двумя шафлами - _mm256_shuffle_epi8 и _mm256_permute. Будет раза в полтора быстрее.