AMD Zen 4 AVX-512 Performance Analysis On The Ryzen 9 7950X
While much of AMD's briefings for the Ryzen 7000 desktop series were focused on gaming and other consumer workloads, one of the most exciting aspects for me with the Ryzen 7000 series is AMD now supporting AVX-512. But rather going for a 512-bit FPU data path and the possibility of reduced clock frequencies and power/thermal concerns, they employed a 256-bit "double pumping" strategy. When getting the AMD Ryzen 9 7950X in the lab, exploring the AMD Zen 4 AVX-512 performance was one of the areas I was most excited to evaluate. From the benchmarks about to be shown, AMD's initial AVX-512 implementation is promising and has me all the more excited for finding it on AMD EPYC "Genoa" processors.
AMD's Zen 4 line-up including the Ryzen 7000 series desktop processors support AVX-512 out-of-the-box. The AVX-512 extensions supported by Zen 4 as confirmed via the /proc/cpuinfo output on the Ryzen 9 7950X include: avx512f, avx512dq, avx512ifma, avx512cd, avx512bw, avx512vl, avx512_bf16, avx512vbmi, avx512_vbmi2, avx512_vnni, avx512_bitalg, and avx512_vpopcntdq. So, yes, AVX-512 VNNI, BF16, and the other usual suspects.
At least for the AMD motherboard I was using with its current pre-release BIOS, there isn't any option for disabling AVX-512 from the motherboard BIOS. But in wanting to compare the impact of AVX-512 on the Ryzen 9 7950X, it was still easy enough to carry out under Linux. Booting the Linux kernel with "clearcpuid=304" as a kernel option will clear it so AVX-512 support isn't used by the kernel nor is it then reported to /proc/cpuinfo. In turn any applications querying /proc/cpuinfo for the presence of AVX-512 will find it not available. But applications poking at the CPU for AVX-512 directly will still find it available. So to cover those test cases, I built a variety of benchmarks first with the AVX-512 extensions enabled and then another go-around with the benchmarks with AVX-512 support explicitly disabled as a compiler flag.
So with the combination of clearcpuid=304 and altering the CFLAGS/CXXFLAGS to (not) include AVX-512 support, it's possible to see the difference AVX-512 makes without any hardware swapping or other changes from the AMD Ryzen 9 7950X at stock speeds. From there I carried out a wide variety of benchmarks for workloads/software able to make use of AVX-512 while monitoring the performance, the peak CPU frequency, the CPU power consumption reported by RAPL, the performance-per-Watt, and the CPU core temperature reported by the k10temp driver.
None of the AVX-512 extensions being shown on the Ryzen 9 7950X thanks to the clearcpuid trick. But software still poking the CPU directly will be able to make use of AVX-512, so the open-source software benchmarks were also built with the AVX-512 extensions removed.
In my main AMD Ryzen 9 7900X / 7950X Linux review are benchmarks of the CPUs against the Ryzen 3000/5000 series and Intel competition if wanting to see what the AVX-512 with Zen 4 means overall compared to prior generations and the Intel competition.