Материалы по тегу: gcc

05.07.2021 [15:37], Андрей Галадей

Intel Xeon Sapphire Rapids получат инструкции AVX-512 FP16

Разработчики из компании Intel готовят патчи для ПО с поддержкой будущих процессоров Xeon семейства Sapphire Rapids, которые, как теперь выяснилось, будут включать инструкции AVX-512 FP16. Соответствующая документация была выложена в публичный доступ в самом конце июня. А вслед за этим появились патчи для GCC и LLVM, на которые обратил внимание ресурс Phoronix.

Поддержка FP16-вычислений с помощью AVX-512 будет актуальна, в первую очередь, для приложений машинного обучения. При этом не следует путать их с BF16 (Bfloat16), которая появилась ещё в семействе Cooper Lake в прошлом году. Для GCC Intel подготовила набор из 62 патчей для поддержки всех новых функций AVX512 FP16, а также автоматической векторизации _Float16 и связаных задач. Для LLVM добавлены патчи, «знакомящие» Clang с новым форматом и инструкциями.

Судя по всему, полноценная поддержка появится только в GCC 12, то есть, как теперь понятно, ближе к релизу самих процессоров в первой половине 2022 года. И очередные релизы крупных дистрибутивов её не получат. Что касается Clang, то есть все шансы, что поддержка будет добавлена уже в LLVM 13 — релиз намечен на осень.

Постоянный URL: http://servernews.ru/1043516
22.03.2021 [22:16], Андрей Галадей

В Ubuntu 21.04 повысится производительность приложений

В Ubuntu 21.04 планируется включить оптимизацию во время линковки (Link-Time Optimization, LTO) по умолчанию для сборки пакетов основного репозитория (main), что должно повысить общую производительность ПО. Подобное уже сделано в Fedora и openSUSE, а в Canonical планы относительно включения LTO обсуждались ещё в январе этого года.

LTO будет использоваться для архитектур x86_64 (AMD64), ARM64, PPC64EL и s390x при сборке с помощью GCC. Это, вероятно, последнее крупное изменение, которое стоит ждать в Ubuntu 21.04, так как кодовая база уже заморожена, а до релиза осталось всего несколько недель.

wikipedia.org

wikipedia.org

Естественно, такая оптимизация может и негативно сказаться на работе или даже сборке приложений, поэтому для части ПО она вручную отключена. На этой неделе состоится очередная глобальная пересборка пакетов, и разработчики попытаются или исправить ошибки, или отключить поддержку LTO примерно в 80 проблемных пакетах.

Постоянный URL: http://servernews.ru/1035431
05.12.2020 [00:07], Андрей Галадей

AMD выпустила компилятор AOCC 2.3, но опять опаздывает с добавлением полноценной поддержки Zen 3 в GCC и LLVM

Компания AMD сообщила о добавлении официальной поддержки процессоров Ryzen 5000 на архитектуре Zen 3 в компилятор GCC. Как обычно, произошло это с некоторым опозданием. Хорошим тоном считается подготовка ПО для разработчиков примерно за полгода до выхода чипов на рынок. Например, Intel ещё в июле добавила подддержку Alder Lake и Sapphire Rapids в GCC. Это гарантирует, что к моменту начала продаж компиляторы будут поддерживать новое «железо».

Phoronix сообщает, что для GCC выпущен первый патч, который добавляет поддержку Zen 3 с новой опцией -march=znver3. При этом других изменений там пока нет, а все специализированные оптимизации, касающиеся, например, планировщика, остаются прежними, как и для Zen 2. Позднее, как ожидается, для znver3 будет произведена более точная настройка под новую микроархитектуру.

picsart.com

picsart.com

Ожидается, что полная поддержка будет реализована в GCC 11 или в GCC 12. В любом случае, это означает, что стабильный компилятор GCC не сможет в полной мере использовать преимущества микроархитектуры Zen 3 до 2021 года. На данный момент поддержка znver3 касается только корректной работы на процессорах Zen 2. Это очень похоже на базовую поддержку znver3 в LLVM.

Впрочем, в скором времени AMD выпустит свой официальный патч для LLVM/Clang. Помимо этого, компания выпустила AOCC 2.3 в качестве своего базового компилятора на основе LLVM 11.0 с добавлением различных патчей AMD Zen. Здесь ситуация аналогична — AOCC 2.3 по-прежнему ориентирован на Zen 2, но содержит базовую поддержку Zen 3.

Тем не менее, такая ситуация возникает не впервые — в своё время задержались улучшения LLVM для AMD Zen 2. Задержка с добавлением патчей приводит к тому, что они не успевают попасть в стабильные версии наборов компиляторов и, как следствие, в ближайшие мажорные версии основных дистрибутивов.

Постоянный URL: http://servernews.ru/1027076
03.11.2020 [17:40], Илья Коваль

GCC 11 и LLVM 12 позволят учитывать микроархитектурные различия x86-64

Два популярных открытых средства разработки, GCC 11 и LLVM Clang 12, получили возможность более тонкой оптимизации собираемого кода с учётом наличия того или иного типового набора общих инструкций x86-64. Это не отменяет возможность оптимизации под конкретные поколения процессоров, но позволяет легче задавать системные требования не только для отдельных программ, но и, например, для крупных проектов, которые могут работать на разных CPU.

LLVM принимает новые опции через параметр -march=, а GCC — через опцию --with-arch_64=. Список ключей, которые соответствуют наборам инструкций, одинаков:

  • x86-64: CMOV, CMPXCHG8B, FPU, FXSR, MMX, FXSR, SCE, SSE, SSE2
  • x86-64-v2: CMPXCHG16B, LAHF-SAHF, POPCNT, SSE3, SSE4.1, SSE4.2, SSSE3
  • x86-64-v3: AVX, AVX2, BMI1, BMI2, F16C, FMA, LZCNT, MOVBE, XSAVE
  • x86-64-v4: AVX512F, AVX512BW, AVX512CD, AVX512DQ, AVX512VL
Фото: Jeh/Wikipedia

Фото: Jeh/Wikipedia

Первый уровень является наиболее общим и универсальным вариантом для всех 64-бит процессоров x86. x86-64-v2 близок по набору дополнительных инструкций к архитектуре Nehalem, а x86-64-v3 — к Haswell. А вот x86-64-v4 из-за требования AVX-512 на текущий момент фактически ограничен достаточно современными процессорами Intel. В дальнейшем число наборов будет наверняка расширено, так как в v4, к примеру, не попали инструкции AVX-VNNI (в текущем виде это пока что полный эквивалент AVX512-VNNI).

Стандартизация наборов проведена при участии Red Hat, которая уже давно хочет повысить минимальные системные требования, чтобы более полно использовать возможности современных процессоров, а не собирать код под наиболее общий вариант x86-64, который включает CPU 15-летней давности. Новый инструментарий GCC и LLVM поможет компании в осуществлении задуманного. Этот шаг, очевидно, повлияет и на других игроков в индустрии.

Постоянный URL: http://servernews.ru/1024493
01.09.2020 [22:55], Илья Коваль

LLVM 12 вслед за GCC 11 внедряет поддержку грядущей серверной платформы Intel Sapphire Rapids

Без поддержки со стороны ПО и особенно средств для его разработки, толку от любого аппаратного обеспечения мало. Поэтому вендоры стараются заранее добавить поддержку новых платформ в популярные проекты. В первую очередь, в наборы компиляторов. Причём сделать это надо заранее, до выхода очередного мажорного релиза. Из патчей для них также можно почерпнуть информацию об особенностях ещё не вышедших платформ.

Конкретно с Sapphire Rapids подготовка к выходу выглядит несколько преждевременной, так как эти чипы появятся только в 2021 году или, если говорить точнее, до конца 2021 года. Мы уже знаем, что они получат поддержку PCIe 5.0 и DDR5, но гораздо интереснее то, какие инструкции они получат. Впрочем, тут пока ничего неожиданного нет — статус самого крупного и значимого нововведения после появления AVX-512 всё ещё числится за набором Intel AMX, который создан специально для матричных операций. Они расширят возможности работы с машинными обучением, дополнив поддержку bfloat16 и VNNI.

Фото: PCWatch Japan

Фото: PCWatch Japan

Clang в LLVM получит поддержку AMX-TILE, AMX-INT8 и AMX-BF16 в дополнение к ранее объявленным в GCC инструкциям AVX512F, AVX512VL, AVX512BW, AVX512DQ, AVX512CD, AVX512VNNI, AVX512BF16 и AVX512VP2INTERSECT. Кроме того, есть ряд новых инструкция, связанных с TSX, работой с кешем/регистрами/буферами, энергосбережением и трассировкой в самом CPU. Это пока не полный список всех нововведений, но большая часть из них должна быть добавлена к финальным релизам: GCC 11 должен появиться в самом начале 2021 года, а выход LLVM 12 запланирован на февраль.

Постоянный URL: http://servernews.ru/1019649
07.05.2020 [21:57], Алексей Степин

Вышел релиз GCC 10: поддержка Radeon OpenMP, Intel Cooper Lake и новых ARM-платформ

Наряду с проприетарными компиляторами в индустрии широко используется набор GCC (GNU Complier Collection), включающий в себя поддержку не только C и С++, но и таких языков, как Objective-C, Java, Fortran, Ada, Go, GAS и D. Буквально сегодня было объявлено о первом релизе GCC 10 ветки stable.

Речь идёт о версии GCC 10.1. Она вышла спустя полтора месяца после релиза другого, не менее значимого проекта LLVM 10.

Новая версия содержит ряд нововведений. В частности, поддерживается новый стандарт C++20 и содержит архитектурные оптимизации под архитектуры Intel Tiger Lake и Cooper Lake. Также внедрена поддержка ряда вариантов архитектуры ARM:

  • Cortex-A77;
  • Cortex-A76AW;
  • Cortex-A65/65AE;
  • Cortex-A34;
  • Marvell Thunder X3.

Появилась поддержка OpenMP и OpenACC для ускорителей AMD Radeon; правда, она пока ограничена архитектурами Fiji и Vega, более новая Navi ещё не поддерживается. OpenACC имеет версию 2.6 и поддерживается компиляторами C, C++ и Fortran.

Прототип Intel Tiger Lake (фото AnandTech)

Прототип Intel Tiger Lake (фото AnandTech)

Помимо x86 и ARM проект получил поддержку микроконтроллеров семейства AVR XMEGA (серии ATtiny и ATmega, полный список можно найти здесь). А вот поддержка векторных расширений PowerPC отмечена, как «устаревшая»; скорее всего, она будет окончательно удалена в GCC 11.

В GCC 10 версии также появился статический анализатор, который должен помочь в поиске проблемных мест в коде. Кроме того, в пакете содержится ряд исправлений и оптимизаций. Полный список обновлений и дополнений содержится на сайте GCC. Там же можно скачать новую версию, либо воспользоваться для скачивания одним из зеркал проекта.

Постоянный URL: http://servernews.ru/1010406
13.08.2019 [09:57], Андрей Галадей

Компиляторы осваивают Zen 2 и AMD EPYC Rome

Команда разработчиков инструментов GNU выпустила GCC 9.2 — новейшую стабильную версию своего набора компиляторов. В этой сборке предложен ряд изменений и улучшений по сравнению с GCC 9.1, выпущенной в мае. В частности, это поддержка оптимизаций для архитектуры AMD Zen 2 (znver2), которая позволяет улучшить результаты работы.

logodownload.org

logodownload.org

При этом отметим, что GCC поддерживает десятки процессорных архитектур, в том числе довольно редкие. А также позволяет работать с целым рядом языков программирования, включая ключевую для серверного рынка «большую тройку»: C, C++ и Fortran.

Стабильная версия GCC 9.2 доступна на официальном сайте gcc.gnu.org. Новую версию под номером 10 планируется выпустить в период с апреля по май следующего года. 

Помимо этого, AMD выпустила оптимизирующий компилятор AOCC 2.0 (AMD Optimizing C/C++ Compiler), построенный на базе LLVM 8 и поддерживающий всю ту же «большую тройку» языков. Он включает в себя дополнительные улучшения для 17-го семейства «красных» процессоров на базе архитектур Zen, Zen+ и Zen 2 и доступен для 32- и 64-разрядных Linux-систем. В комплекте поставляется матбиблиотека AMDLibM. Поддерживаются процессоры AMD Ryzen и EPYC, в том числе «Эпики» 7002

Наработки из AOCC со временем должны попасть и в основную ветку LLVM. Отметим, что Intel в последнее время тоже неровно дышит к LLVM, добавляя поддержку оптимизаций для текущих и будущих решений.

Постоянный URL: http://servernews.ru/992307
Система Orphus