El jueves, cuando se lanzaron los procesadores AMD EPYC Genoa de 4.ª generación, AMD también publicó AOCC 4.0 como la versión más nueva del compilador AMD Optimizing C/C++. Lo estuve poniendo a prueba el último día y continúa mostrando el impacto positivo en el rendimiento de la optimización adecuada del compilador.
La versión AMD Optimizing C/C++ Compiler 4.0 presenta de manera más notable soporte y optimizaciones iniciales de Zen 4″znver4″. El registro de cambios público simplemente lo llama”soporte y optimizaciones de procesadores AMD Family 19h (arquitectura central AMD”Zen4″)”. No queda claro a partir de eso el alcance de las optimizaciones de Zen 4 en esta etapa, particularmente con AOCC siendo un código cerrado aguas abajo de LLVM/Clang.
Además de que AOCC 4.0 tiene Compatibilidad y optimizaciones de Zen 4, hay mejoras de compatibilidad con OpenMP 4.5 para Fortran, mejoras de depuración/diagnóstico, ajuste de AMD Math Library 4.0, compatibilidad con vector y variantes de biblioteca más rápidas de AMD Math Library, y variantes mejoradas de varios escalares/vector/transformaciones de bucle Más detalles sobre AOCC 4.0 a través de developer.amd.com.
Sin Zen pendiente 4 (znver4) parches para LLVM ascendente.
AOCC 4.0 se deriva de las fuentes LLVM/Clang 14.0.6 ascendentes. LLVM 15 se lanzó a principios de septiembre, mientras que AOCC aún no se ha vuelto a basar en ese último lanzamiento de características de medio año. Para algunas evaluaciones comparativas preliminares, ejecuté algunos puntos de referencia de comparación en Zen 4 entre AOCC 4.0 y LLVM Clang 14.0 empaquetados en Ubuntu Linux.
Debido a que el servidor Titanite es mi único EPYC 9004 plataforma de prueba de la serie por ahora y que estoy ocupado realizando otros puntos de referencia, para probar AOCC 4.0 he estado ejecutando puntos de referencia en el AMD Ryzen 9 7950X. AOCC 4.0 es compatible con todos los productos Ryzen/Threadripper/EPYC y aún conserva la compatibilidad con generaciones anteriores de procesadores Zen.
Durante las pruebas, todos los CFLAGS/CXXFLAGS se mantuvieron igual pero solo se reconstruyeron todo el software bajo prueba con AMD AOCC 4.0 o LLVM Clang 14.0 upstream.
Como LLVM/Clang Git y GCC Git upstream recogen más optimizaciones para Zen 4, por supuesto ejecutaré una mucho más grande y comparación más amplia del compilador en Zen 4, además de ejecutarse en los procesadores de la serie EPYC 9004 más relevantes.
Al igual que con las versiones anteriores de AOCC para Zen 1/2/3, AOCC 4.0 con Zen 4 ayuda a exprimir más rendimiento más allá de lo que se encuentra actualmente en los compiladores de código abierto ascendentes:
LLVM Clang 14 estaba creando el software con AVX-512 y otras extensiones nuevas habilitadas, por lo que para esta evaluación comparativa de AOCC vs. Clang está mirando el impacto de los ajustes/optimizaciones de AMD y no de las diferencias de ISA.
AOCC 4.0 parece un buen equipo rt por ayudar a maximizar el rendimiento del procesador Zen 4 en el lado del compilador.
AOCC 4.0 mostró algunas mejoras agradables además del excelente rendimiento de AMD Ryzen 9 7950X Linux:
Hay ganancias de rendimiento pequeñas a generosas posibles al usar AOCC 4.0 sobre el compilador LLVM Clang 14 ascendente en el que se basa. Con suerte, GCC pronto verá la tabla de costos ajustados para Zen 4 para su habilitación inicial de Znver4 y luego seguirá esperando la habilitación de LLVM/Clang znver4 ascendente y cualquier ajuste allí.
Larga historia En resumen, AOCC 4.0 se ve muy bien al menos en mis pruebas iniciales realizadas en el AMD Ryzen 9 7950X. Además de la ruta AOCC como un compilador centrado en AMD optimizado, sigo esperando, y presiono, que AMD garantice que los compiladores de fuente abierta GCC y LLVM/Clang ascendentes reciban un soporte oportuno y honorable. AMD está marcando absolutamente todos los requisitos con su ejecución de hardware en este momento, mientras que en el lado del software de código abierto/Linux todavía muestran espacio para mejorar, especialmente si quieren igualar las tradiciones y el nivel de soporte que disfrutan los clientes de Intel Linux durante mucho tiempo para la calidad del soporte upstream de código abierto en el lanzamiento. AMD, por su parte, ha estado mejorando en el lado del software y sus contrataciones continuas (después de la ola inicial de éxitos de EPYC en el centro de datos que permitieron una mayor inversión) ciertamente están trabajando para apuntar el barco en esa dirección.
Además, personalmente sigo estando un poco perplejo por qué AMD espera hasta el lanzamiento posterior de EPYC antes de publicar AOCC 4.0 en lugar de atacar inicialmente cuando la serie Ryzen 7000 debutó por primera vez. Una ejecución anterior podría haber llevado a una mejor experiencia para cualquier escritorio/estación de trabajo de desarrollador y para aquellos que pueden estar usando la serie Ryzen 7000 como una evaluación/un trampolín para comenzar a preparar sus propias bases de código de software para Zen 4 con eventuales servidores EPYC. También fue así con Zen 3 en espera de Milán antes de publicar AOCC 3.0 con una brecha de varios meses que los escritorios de desarrolladores de Ryzen, aquellos que ejecutan distribuciones de Linux basadas en código fuente, desarrolladores de compiladores de código abierto más tiempo para perfilar las diferencias en el código generado, y otros podrían haber ayudado a”patear los neumáticos”en el nuevo AOCC antes de la disponibilidad de EPYC. ¿Por qué no enviarlo antes como AOCC”beta”para las pruebas de Ryzen? Me imagino que esto también se reduce a los recursos de ingeniería y necesitan todo el tiempo que puedan para trabajar en las optimizaciones del compilador.
Estén atentos para obtener más puntos de referencia de AOCC 4.0 de EPYC Genoa y una comparación de compiladores más grande que incluye Clang-15/GCC-13/etc en Zen 4 como soporte para todos estos compiladores ve mejoras. Teniendo en cuenta los puntos de referencia AMD EPYC 9654 y 9554 Genoa de ayer, será bastante divertido ver cuánto más rápido en general es ese gran conjunto de puntos de referencia cuando se aprovecha AOCC 4.0 sobre GCC 12 como se usa para el compilador del sistema en todos esos procesadores probados.