O engenheiro de compilador SUSE, Jan Hubicka, conseguiu alguns ajustes de destino de CPU AMD Zen 4″znver4″adicionais antes do próximo lançamento do compilador estável GCC 13.
Desde dezembro, o desenvolvedor de longa data do GNU Compiler Collection vinha lançando vários patches de ajuste Zen 4 para o GCC 13, compensando o suporte bastante básico do compilador Zen 4 fornecido pela AMD em outubro, que basicamente transportou o alvo Zen 3 e permitiu o novo Extensões ISA da CPU encontradas com o Zen 4.
Nas últimas semanas, vimos várias rodadas de ajuste do Zen 4 por Hubicka para encaixar no que será o lançamento estável do GCC 13.1. Na segunda-feira, o último patch foi mesclado:
este patch adiciona mais músicas para zen4:
-novas músicas para instruções de scater avx512. Em micro benchmarks, essas perdas parecem consistentes em comparação com coe
de código aberto-desative o uso de coleta para zen4. Embora estes sejam ganhos para os micro benchmarks (baseados no TSVC), habilitar a coleta é uma perda para o parest. Então, por enquanto, parece seguro mantê-lo desligado.
-desative o passe para evitar cadeias de FMA para znver4, pois o fmadd foi otimizado e não parece causar regressões.
Assim que o GCC 13 estiver pronto para lançamento, será interessante ver como esse ajuste do AMD Zen 4 se compara ao compilador AOCC 4.0 da AMD como um downstream do LLVM/Clang. A AMD fez o upstream de sua habilitação inicial do Zen 4 para LLVM/Clang que chegou no início de dezembro, mas até o momento não houve patches de ajuste de acompanhamento lá ainda.
Com a próxima rodada do compilador versões,-march=znver4 pode ser usado se desejar atender às instruções e otimizações do compilador para os processadores AMD Ryzen 7000 series e AMD EPYC 9004 series.