В прошлом месяце с помощью тестов AMD EPYC 7773X Linux и Milan-X в облаке Azure я продемонстрировал впечатляющие возможности новых процессоров AMD Milan-X с 768 МБ памяти. Кэш L3 на сокет (кэш 1,5 ГБ на сервер 2P!) для различных рабочих нагрузок. Все эти начальные тесты, как обычно, проводились с использованием системного компилятора GCC по умолчанию для всех протестированных процессоров AMD/Intel. Конечно, также существует компилятор AMD Optimizing C/C++ (AOCC) как нисходящий поток LLVM/Clang с различными патчами оптимизации Zen. Если вас интересует влияние AOCC на Milan-X, вот несколько тестов производительности EPYC 7773X 2P в AOCC, GCC и LLVM Clang.
С выходом Ubuntu 22.04 LTS на следующей неделе, и это будет следующий крупный выпуск корпоративного Linux, который остается операционной системой, используемой для этих перспективных тестов. Ubuntu 22.04 LTS по умолчанию использует ядро Linux 5.15 LTS, а на стороне компилятора по умолчанию использует GCC 11.2, а также имеет недавно выпущенный LLVM Clang 14.0 в своем архиве в качестве пакета «clang» по умолчанию. GCC 11.2, выпущенный в прошлом году, содержит все исправления Zen 3 в GCC, в отличие от компилятора GCC 9, используемого в Ubuntu 20.04 LTS, а также множество других улучшений C/C++ и других улучшений компилятора в целом. GCC 12 увидит свой стабильный выпуск в ближайшие недели, но, очевидно, недоступен для Ubuntu 22.04 LTS, но станет компилятором по умолчанию в Ubuntu 22.10 в октябре.
Итак с упором на Ubuntu 22.04 LTS его компиляторы по умолчанию GCC 11.2 и LLVM/Clang 14.0 были проверенными компиляторами на этом фронте в этом тесте Milan-X. Что касается AOCC, AMD AOCC 3.2 остается последним выпуском компилятора от декабря прошлого года и основан на исходной версии LLVM/Clang 13.0. Еще во время брифинга для СМИ Milan-X я спросил, есть ли у AMD какие-либо планы по обновленному компилятору одновременно с запуском Milan-X, но они этого не сделали. Фактически, было упомянуто, что у них, скорее всего, не будет нового выпуска AOCC до процессоров следующего поколения (Zen 4). Это немного удивительно, учитывая, что процессоры Zen 4 дебютируют только в конце года, а LLVM/Clang 14.0 уже выпущен так же стабильно, как и последнее полугодовое обновление компилятора. В LLVM/Clang 14.0 есть основа BOLT, много работы над Flang для лучшей поддержки Fortran и просто много улучшений в целом. Так что это немного удивительно, если они не планируют, по крайней мере, перебазировать AOCC 3 в промежутке времени, но в противном случае это просто приведет к массовому выпуску компилятора AOCC 4.0 (AOCC 4.0, предполагая, что их практика управления версиями верна), когда следующий-поставляются процессоры поколения. Хотя это и не связано с Milan-X, но в качестве общего примечания, в отличие от практики Intel по получению поддержки компилятором для новых целей ЦП задолго до запуска, до сих пор нет поддержки исходного потока Zen 4 [znver4] ни в GCC, ни в LLVM/Clang..
Итак, при сегодняшнем тестировании компилятора на AMD EPYC 7773X 2P мы оцениваем производительность GCC 11.2 и LLVM Clang 14.0 из архива Ubuntu 22.04″Jammy Jellyfish”в сравнении с компилятором AMD AOCC 3.2. как его последний релиз там. Во всех тестах для CFLAGS/CXXFLAGS было установлено значение «-O3-march=native-flto» для тестов с открытым исходным кодом, построенных на этой конфигурации сервера Milan-X 2P с использованием эталонной серверной платформы AMD Daytona.
Во время тестирования не было внесено никаких других изменений, кроме замены базового компилятора, используемого для создания тестов/тестируемого программного обеспечения.