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

07.05.2021 [16:33], Андрей Галадей

Red Hat нанимает инженеров для развития LLVM

Компания Red Hat не только продолжает активно вкладываться в GCC и наборы инструментов GNU, но также наращивает команду разработчиков компилятора LLVM, сообщает Phoronix. Под её крылом трудится Том Стеллард (Tom Stellard) вместе с другими инженерами LLVM. Но теперь группу расширяют.

developers.redhat.com

developers.redhat.com

Сообщается, что компания хочет нанять ещё минимум двух специалистов по LLVM. По словам Стелларда, планируется нанять главного инженера-программиста для разработки функций и решения других задач поддержки пользователей в подпроектах LLVM, а также в самом LLVM и Clang. Также требуется специалист в области компоновщиков для работы над BFD и LLD.

При этом пока неясно, как именно будет далее развиваться стек компиляторов в Red Hat. В частности, в Fedora 35 позволят собирать больше пакетов с помощью Clang, а не GCC.

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

В Fedora 35 может появиться больше пакетов, собранных с помощью LLVM

Релиз Fedora 34 должен выйти на этой неделе, но разработчики уже активно работают над Fedora 35, внося новые предложения. Так, например, сейчас в Fedora основным системным компилятором выступает GCC. Исключением может быть лишь тот случай, когда исходный проект поддерживает только LLVM/Clang. Однако в будущем возможен переход на LLVM там, где это целесообразно, в рамках всего дистрибутива.

В Red Hat предложили пересмотреть политику использования компиляторов для Fedora 35 — при создании пакета у сопровождающего его разработчика будет выбор между GCC и LLVM. При этом GCC останется в качестве системного компилятора по умолчанию, и большинство пакетов, вероятно, продолжат использовать именно его. Однако будет возможность собирать проекты и с помощью LLVM, причём даже те, которые официально поддерживают только GCC.

Среди пакетов, которые могут затронуть эти изменения, есть Firefox и некоторые другие. При этом пока что комитет по разработке и управлению Fedora ещё не оценил это изменение, потому решение пока что находится в «подвешенном» состоянии. Похожий подход используется в Intel Clear Linux, где для каждого конкретного пакета выбирается тот компилятор, который позволит получить лучшую производительность.

Постоянный URL: http://servernews.ru/1038222
15.04.2021 [13:35], Андрей Галадей

Выпущен LLVM 12.0 с поддержкой Alder Lake и Sapphire Rapids, а также с начальной поддержкой AMD Zen 3

Вчера вечером состоялся релиз обновления набора компиляторов LLVM 12, выход которого несколько задержался из-за ошибок. Главным нововведением стала поддержка грядущих процессоров Intel Alder Lake и Sapphire Rapids, а также базовая поддержка AMD Zen 3 и дальнейшее улучшение работы с POWER.

Помимо этого, продолжена работа над поддержкой C++ 20. Стек Clang 12 также получил улучшения для Windows на ARM64, оптимизации ядра OpenCL, поддержку инструкций AVXVNNI и других, а также ряд других улучшений. Из небольших изменений отмечается снижение потребления памяти.

Все исходники, как обычно, доступны на GitHub. Отметим, что в новой версии обещали появление более тонкой оптимизации собираемого кода с учётом наличия того или иного типового набора общих инструкций x86-64.

Постоянный URL: http://servernews.ru/1037426
02.03.2021 [15:39], Андрей Галадей

Codeplay и ряд НИИ работают над расширением использования компилятора LLVM SYCL для Nvidia A100

Национальный энергетический научно-исследовательский вычислительный центр (NERSC), Национальная лаборатория им. Лоуренса в Беркли (LBNL) и вычислительный центр Argonne Leadership Computing Facility (ALCF) совместно с Codeplay Software работают над расширением возможностей компилятора LLVM SYCL GPU для ускорителей NVIDIA A100.

aesin.org.uk

aesin.org.uk

Эта программа должна помочь разработчикам создавать высокопроизводительные приложения, которые можно переносить между архитектурами различных типов. Отметим, что британская компания Codeplay уже давно занимается разработкой компиляторов и инструментов для различных аппаратных архитектур. В числе её проектов — компиляторы SYCL, а также другие решения для платформы NVIDIA V100

SYCL — это открытый стандарт, поддерживаемый Khronos Group. Впервые его показали в 2014 году. Это открытый кроссплатформенный уровень абстракции, который позволяет писать код для гетерогенных процессоров. SYCL будет поддерживаться на грядущем экзафлопсном суперкомпьютере Aurora Министерства энергетики США.

Постоянный URL: http://servernews.ru/1033839
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
02.09.2020 [22:58], Илья Коваль

Компиляторы могут остаться без поддержки Intel MMX

Набор SIMD-инструкций Intel MMX, представленный в 1997 году, является откровенно устаревшим и уже давно вытеснен различными версиями SSE и AVX. Тем не менее, в средствах разработки они всё ещё формально поддерживаются. Правда, в силу редкости использования, их имплементация страдает от багов. Поэтому неудивительно, что их в очередной раз предложили выкинуть из популярного набора компиляторов LLVM.

В обсуждении, начатом в листах рассылки, предлагается переписать и заменить интринсики для MMX на новые, использующие уже имеющиеся для SSE или, лучше, SSE2. Текущие требуют некоторый внимательности от разработчика, так как при некорректном использовании программа будет не падать, а выдавать некорректные результаты. В дальнейшем предлагается исключить MMX из представления LLVM IR.

Единственный способ использования этих инструкций и сопутствующих регистров, если это по какой-то причине действительно нужно — использование ассемблерных вставок непосредственно в коде. Любопытно, что, судя по всему, даже физически отдельных регистров для x87/MMX в современных процессорах уже нет — они делят «кремний» с регистрами для маскирования AVX-512, так как вероятность высокой нагрузки со стороны обоих типов инструкций одновременно крайне маловероятна.

Отказ от MMX, естественно, повысит минимальные требования LLVM. Однако сейчас трудно найти работающую x86-систему, в которой нет поддержки SSE2 или хотя бы SSE. Это перекликается с активизировавшимися призывами отказаться от поддержки старых CPU вообще, 32-битных и без современных инструкций. В частности, Fedora и RHEL уже движутся в этом направлении.

Постоянный URL: http://servernews.ru/1019749
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
13.04.2020 [21:33], Александр Коляскин

В Linux 5.7 кардинально упростили сборку ядра с помощью LLVM

С прошлого года стало возможным собрать основную ветку ядра x86_64 Linux с помощью компилятора Clang из набора LLVM. Теперь же в обновленной системе Kbuild для ядра Linux 5.7 этот процесс стал значительно проще — достаточно присвоить переменной LLVM значение 1 и для компиляции ядра будет задействован Clang и все утилиты LLVM вместо традиционных GCC и Binutils.

Параметр LLVM=1 может быть передан из командной строки или как переменная окружения.

Единственное исключение заключается в том, что ассемблер из состава LLVM не будет использоваться по умолчанию, так как в ядре все ещё есть некоторые проблемы с его поддержкой. Тем не менее, обновленный Kbuild для Linux 5.7 также включает переменную LLVM_IAS=1 для задействования интегрированного ассемблера, который пока всё ещё считается экспериментальным. В любом случае новые параметры позволяют очень легко перейти к использованию стека компиляторов на основе LLVM для сборки ядра.

Вышедшая недавно десятая версия LLVM получила массу обновлений — экосистема вокруг LLVM расширяется, а популярность проекта только растёт. Конечно, вряд ли мы в ближайшее время увидим полный «переезд» и отказ от GCC. Впрочем, другая открытая ОС, FreeBSD уже сделала шаг в этом направлении: из дерева исходных кодов удалены GCC и сопутствующие утилиты, а для сборки для платформ, которые не готовы к Clang, придётся использовать уже внешний инструментарий.

Постоянный URL: http://servernews.ru/1008322
24.03.2020 [20:49], Владимир Фетисов

Релиз LLVM и Clang 10: поддержка новых CPU и масса других улучшений

Выпуск десятой версии LLVM затянулся почти на месяц. Однако сегодня, наконец, релиз LLVM 10.0.0 стал доступен вместе с подпроектами, такими как компилятор С/С++ Clang и компоновщик LLDB. Компилятор Clang 10 доступен с улучшенной поддержкой С++ 20 и другими улучшениями. 

Исходный можно на странице разработчиков в GitHub, а бинарные сборки станут доступны в ближайшее время.

LLVM 10 является наиболее актуальной на данный момент версией чрезвычайно популярного стека компиляторов с открытым исходным кодом, который охватывает многие архитектуры, устройства и операционные системы. В LLVM 10.0 появилось много новых функций, в том числе улучшенная поддержка архитектуры AMD Zen 2 и процессоров Intel Tiger Lake, проведена работа на AVX-512, добавлены опции для включения защиты от последних багов в CPU, включена поддержка процессоров ARM Neoverse N1 и E1, IBM z15, Octeon+ и ядер ARM Cortex-A65(AE). Кроме того, появились новые оптимизации для IBM POWER, RISC-V, ARMv8.1-M.

Использование многоуровневого промежуточного представления MLIR (Multi-Level Intermediate Representation) от Google, популярность которого с момента запуска в прошлом году существенно возросла, позволит ускорить оптимизацию ПО для машинного обучения, за счёт чего LLVM сможет стать важным элементом многих ИИ-систем. Кроме того, созданный разработчиками NVIDIA компилятор языка Fortran, известный под именем Flang, также стал частью проекта LLVM 10.

Не так давно стало известно о том, что Facebook планирует нанять новых разработчиков, специализирующихся на компиляторах, поскольку компания продолжает уделять внимание LLVM и его подпроектам, намереваясь также увеличить свой вклад в развитие языка программирования Swift на базе LLVM. Ведутся и другие перспективные разработки в рамках экосистемы LLVM — например, HPVM

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