If I'm understanding it correctly, they're not actually using the 512 bit (ZMM) registers, because using them can cause overall system slowdown. It seems to me they're only really useful if you're doing an AVX-512 intensive workload. And do those really exist? For something like bulk matrix multiplications, GPGPU is going to be much better, both in throughput and in operations per joule. I'm remaining to be convinced…
AVX-512, what’s useful for us
31–40 of 50 posts
Re: AVX-512, what’s useful for us
#32Earlier quoted context omitted.
That is the beauty of JIT compilers, some JVMs like Azul's already support it.
Some of the AVX512 instruction set seems very well suited for automatic JIT compilers. I'm sure Azul immediately jumped on board for the "Conflict Detection" instruction set and are auto-vectorizing tons of more loops. But other AVX512 instructions don't seem very easy for compilers to automatically apply. In particular: Scatter/Gather instructions have implications on the most-efficient way to lay out data in memory…
Re: AVX-512, what’s useful for us
#33Earlier quoted context omitted.
Couldn't you use something like GCC function multi-versioning?
AVX512 has so many more features above-and-beyond Intel's typical SIMD implementation. Feature wise, its beginning to be competitive against NVidia's PTX CUDA architecture. Like, AVX512 is a really, really good instruction set (or I guess: a really good set of instruction sets). Assuming AVX512 F, CD, VL, DQ, and BW (the expected AVX512 instructions in CannonLake): * AVX512F -- "Standard" 512-bit arithmetic already h…
Re: AVX-512, what’s useful for us
#34Earlier quoted context omitted.
Couldn't you use something like GCC function multi-versioning?
AVX512 has so many more features above-and-beyond Intel's typical SIMD implementation. Feature wise, its beginning to be competitive against NVidia's PTX CUDA architecture. Like, AVX512 is a really, really good instruction set (or I guess: a really good set of instruction sets). Assuming AVX512 F, CD, VL, DQ, and BW (the expected AVX512 instructions in CannonLake): * AVX512F -- "Standard" 512-bit arithmetic already h…
DQ - Extend AVX512 to Longs, Long Longs. (double word and quadword extension)
BW - Extend AVX512 to Bytes, Shorts. (byte and word extension)
Re: AVX-512, what’s useful for us
#35Earlier quoted context omitted.
What models don't slow down? Are you claiming the slowdown isn't actually necessary to keep the chip stable?
compare these https://en.wikichip.org/wiki/intel/xeon_silver/4116#Frequenc... https://en.wikichip.org/wiki/intel/xeon_gold/6154#Frequencie... https://en.wikichip.org/wiki/intel/xeon_platinum/8180m#Frequ... So platinum can run avx512 on 28 cores at 2.3GHz, while silver runs 12 cores at 1.4GHz
So for 512-bit wide to not slow things down on Intel's chips, you need ~30% runtime of all cores to already be in AVX.
Re: AVX-512, what’s useful for us
#36If I'm understanding it correctly, they're not actually using the 512 bit (ZMM) registers, because using them can cause overall system slowdown. It seems to me they're only really useful if you're doing an AVX-512 intensive workload. And do those really exist? For something like bulk matrix multiplications, GPGPU is going to be much better, both in throughput and in operations per joule. I'm remaining to be convinced…
However, GPUs blow it out of the water for much a lower price since we only need FP32. I think the main reason we invested time adding supports is for the Xeon Phi cards. I guess is could be worthwhile for some FP64 pipelines from a cost/performance perspective.
Re: AVX-512, what’s useful for us
#37Earlier quoted context omitted.
AVX code is known to make the CPU run way hotter than usual. Perhaps that caused throttling that made general code running at the same time, or within a short span thereafter, perform worse?
That is one theory I had but i'm not sure how to determine if CPU is throttling (on Ubuntu Linux.)
cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq
where instead of cpu0 you can write any core number, and it will give you the current frequency of that core in KHz.
Re: AVX-512, what’s useful for us
#38If I'm understanding it correctly, they're not actually using the 512 bit (ZMM) registers, because using them can cause overall system slowdown. It seems to me they're only really useful if you're doing an AVX-512 intensive workload. And do those really exist? For something like bulk matrix multiplications, GPGPU is going to be much better, both in throughput and in operations per joule. I'm remaining to be convinced…
Define significant. I write software that couldn't exist without SIMD, as do all my competitors. (Note: it could exist but wouldn't offer nearly the same level of capability, i.e. it would be a different product) By specifying the last several generations of Intel hardware I can guarantee customers can run my software (AVX1 minimum) with consumer level desktops/laptops. AVX-512 hardware support hasn't reached the ave…
Re: AVX-512, what’s useful for us
#39Earlier quoted context omitted.
That is one theory I had but i'm not sure how to determine if CPU is throttling (on Ubuntu Linux.)
You can either use lscpu, which is less accurate, or the best way is to check: cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq where instead of cpu0 you can write any core number, and it will give you the current frequency of that core in KHz.
Re: AVX-512, what’s useful for us
#40If I'm understanding it correctly, they're not actually using the 512 bit (ZMM) registers, because using them can cause overall system slowdown. It seems to me they're only really useful if you're doing an AVX-512 intensive workload. And do those really exist? For something like bulk matrix multiplications, GPGPU is going to be much better, both in throughput and in operations per joule. I'm remaining to be convinced…
Define significant. I write software that couldn't exist without SIMD, as do all my competitors. (Note: it could exist but wouldn't offer nearly the same level of capability, i.e. it would be a different product) By specifying the last several generations of Intel hardware I can guarantee customers can run my software (AVX1 minimum) with consumer level desktops/laptops. AVX-512 hardware support hasn't reached the ave…
One of the use cases I'm thinking of is font rendering, where I published a SIMD-heavy prototype a couple years ago, and it's blown out of the water by a newer GPU-based approach: http://pcwalton.github.io/blog/2017/02/14/pathfinder/