AMD Zen 4: GNU Compiler Collection mit Tuning für Ryzen und Epyc
Prozessoren der Serien AMD Ryzen und AMD Epyc auf Basis der Zen-4-Mikroarchitektur können mit dem Release der kommenden GNU Compiler Collection (GCC) in der neuen Version 13 von diversen Optimierungen Gebrauch machen, welche unter anderem die Befehlssatzerweiterung AVX-512 und die Zen-4-Befehlssatzarchitektur betreffen.
Compiler-Optimierungen für Zen 4
Wie der Compiler-Ingenieur Jan Hubička des in Nürnberg beheimateten Softwareunternehmens SUSE mitgeteilt hat, habe er im Vorfeld der Veröffentlichung der kommenden stabilen GNU Compiler Collection 13 einige zusätzliche Optimierungen für AMDs Zen-4-Architektur vorgenommen. Diese lassen sich beim Kompilieren von Prozessoren der Serien Ryzen 7000 (Test) und Epyc 9004 („Genoa“) nutzen.
Am Montag reichte der Entwickler einen Patch für GCC 13.1 mit den nachfolgenden Optimierungen ein:
- new tunes for avx512 scater instructions.
- In micro benchmarks these seems consistent loss compared to open-coded coe
- disable use of gather for zen4
- While these are win for a micro benchmarks (based on TSVC), enabling gather is a loss for parest. So for now it seems safe to keep it off.
- disable pass to avoid FMA chains for znver4 since fmadd was optimized and does not seem to cause regressions.
Entwickler kompensiert Herstellersupport
Seit Dezember 2022 hatte der langjährige Entwickler der GNU Compiler Collection verschiedene Zen-4-Tuning-Patches für GCC 13 veröffentlicht, um den eher einfachen Zen-4-Compiler-Support, den AMD im Oktober beigesteuert hatte und der im Wesentlichen die bereits bekannten Zen-3-Optimierungen übernahm sowie die neuen Befehlssatzarchitektur (ISA) von Zen 4 ermöglichte, zu kompensieren.
GCC 13(.1) erscheint im März/April
Die GNU Compiler Collection 13, die als GCC 13.1 ihr Debüt in der stabilen Version feiern wird, soll zwischen März und April dieses Jahres erscheinen.
Bis zu diesem Zeitpunkt möchte der Entwickler aber auch AMDs weitere Optimierungen für Zen 4 einfließen lassen und die Architektur in dieser Hinsicht deutlich beschleunigen.
- One interesting improvement is reducation of FMA cost. I also updated costs of AVX256 loads/stores based on latencies (not throughput which is twice of avx256).
- Overall AVX512 vectorization seems to improve noticeably some of TSVC benchmarks but since internally 512 vectors are split to 256 vectors it is somewhat risky and does not win in SPEC scores (mostly by regressing benchmarks with loop that have small trip count like x264 and exchange).
- So for now I am going to set AVX256_OPTIMAL tune but I am still playing with it. We improved since ZNVER1 on choosing vectorization size and also have vectorized prologues/epilogues so it may be possible to make avx512 small win overall.
Jan Hubička, Compiler-Ingenieur, SUSE
Bereits in den vergangenen Wochen hat der Compiler-Ingenieur mehrfach kleinere Tuning-Patches für Zen 4 in GCC 13 einfließen lassen, wie die auf Linux und Open Source spezialisierte Website Phoronix berichtet hatte.