Материалы по тегу: компиляторы

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
29.08.2020 [20:41], Илья Коваль

Ещё капельку: Microsoft занимается оптимизацией Linux для серверных ARM

Microsoft является платиновым членом Linux Foundation, в её облаке Azure доминирует Linux и, в целом, уже пора перестать удивляться работе корпорации с этой ОС. Но она всё равно порой преподносит сюрпризы. На конференции Linux Plumbers Conference 2020 разработчики компании рассказали об экспериментах по оптимизации сборки ядра Linux.

Любопытно, что эта работа выполняется по внутреннему запросу, а оптимизация делается для повышения производительности Linux на ARM-процессорах Marvell ThunderX2. Это особенно интересно в свете резко изменившихся планов Marvel относительно будущих ThunderX3: компания займётся достаточно глубокой оптимизацией CPU под нужды конкретных заказчиков и не будет выпускать «общие» версии. Теперь она ориентирована в первую очередь на гиперскейлеров, к которым относится и Microsoft.

Так вот, разработчики Microsoft изучают использование LTO (Link Time Optimization) вместе с PGO (Profile-guided optimization) для ускорения работы ядра. Обе техники не являются чем-то новым сами по себе, однако LTO лишь относительно недавно стала применяться для сборки ядра Linux и других пакетов в некоторых дистрибутивах, что было связано с незрелостью её поддержки в популярных открытых наборах компиляторов GCC и LLVM. А вот применение PGO для ядра всё ещё довольно редко. Интересно, что Microsoft активно использует LTO и PGO в Windows — PGO даёт улучшение производительности на 5% – 20 %.

LTO позволяет компилятору перед компоновкой «окинуть взглядом» весь проект целиком, а не только отдельные объекты во время компиляции, и сделать оптимизацию. PGO же ещё подразумевает множественные тестовые запуски итоговых бинарных файлов и отслеживание их поведения с целью дальнейшей оптимизации на основе собранной статистики. Обе техники заметно повышают требования компиляторов к ресурсам (особенно памяти) и увеличивают время сборки, порой весьма существенно.

На той же конференции разработчики Google поделились своим опытом оптимизации сборки ядра. В частности, продукты под брендом Pixel с 2018 года получают ядра с LTO. А сейчас корпорация изучает работу AutoFDO — ещё одной техники, которая собирает данные о работе от perf-подсистемы ядра и аппаратных счётчиков CPU. Собранные профили «скармливаются» компилятору. Таким образом для x86-64 удалось на 12% сократить число используемых циклов CPU. На других платформах результат тоже положительный, но уже не такой заметный.

Постоянный URL: http://servernews.ru/1019418
02.06.2020 [13:42], Андрей Крупин

Опубликовано руководство по программированию на платформе «Эльбрус»

Компания МЦСТ (Московский центр SPARC-технологий) разместила в отрытом доступе руководство по эффективному программированию на платформе «Эльбрус».

Руководство предназначено для разработчиков, занимающихся созданием, портированием и оптимизацией приложений для вычислительной платформы «Эльбрус» с использованием языков программирования C и C++.

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

Руководство распространяется по лицензии Creative Commons BY 4.0 и представлено в форматах PDF и HTML. Скачать документ можно по ссылке mcst.ru/elbrus_prog.

Постоянный URL: http://servernews.ru/1012445
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
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
14.01.2020 [20:15], Алексей Степин

Компилятор AOMP для GPU AMD неожиданно получил сборки для IBM POWER

AMD внесла неожиданный вклад в развитие открытого программного обеспечения, продемонстрировав интерес к архитектурам, отличным от x86-64. 

Теперь компилятор AOMP, являющийся частью инициативы AMD Radeon Open Compute 3.0, доступен и для 64-бит процессоров IBM PowerPC. 

AOMP базируется на LLVM Clang, в котором поддержка PowerPC реализована уже давно, но всё же это заметный вклад с учётом того, какие надежды энтузиасты данной платформы возлагают на процессоры IBM POWER9, POWER10 и другие чипы, разрабатываемые на базе набора инструкций Power ISA.

Пока ускорение вычислений на этой платформе практически полностью принадлежит NVIDIA с её ускорителями Tesla V100 и T4, но появление AOMP прокладывает путь и для ускорителей AMD.

AOMP обеспечивает поддержку API OpenMP, открытого стандарта для распараллеливания программ на различных языках, таких, как C, C++ и Fortran. Стоит отметить, что в версии 0.7-6 реализована поддержка MI100. Это новый ускоритель семейства Radeon Instinct, который должен будет увидеть свет в этом году. Его основой станет новый процессор Arcturus, наследник Vega в сегменте профессиональных ускорителей AMD Radeon.

Что может означать столь явный интерес AMD к платформе POWER? Возможно, один из планируемых к запуску новых суперкомпьютеров будет базироваться именно на этой архитектуре и компания заранее стремится обеспечить себе возможность конкуренции с ускорителями NVIDIA. Но пока это лишь предположение.

Постоянный URL: http://servernews.ru/1001415
18.12.2019 [15:00], Алексей Степин

Fortran-компилятор NVIDIA Flang вольётся в LLVM 10

Компилятор языка Fortran, созданный NVIDIA, и известный сейчас под именем Flang, был принят в семью проекта LLVM ещё весной этого года.

Сейчас же стало известно о том, что Flang окончательно попадёт в основное дерево LLVM с десятым релизом, который состоится в конце февраля 2020 года. Таким образом, LLVM получит качественную поддержку «большой тройки» HPC-языков: C, C++ и Fortran.

Как сообщают зарубежные источники, Flang, ранее известный под именем f18, станет частью LLVM вовремя — то есть, до момента заморозки, которая запланирована на середину января следующего года. Дебаты по поводу окончательного названия компилятора завершились, и имя Flang принято официально, по аналогии с Clang для языков C/C++/Objective-C.

Наличие Flang в составе LLVM позволит эффективно использовать весь массив накопленного ПО на Fortran

Наличие Flang в составе LLVM позволит эффективно использовать весь массив накопленного ПО на Fortran

17 декабря в рассылке LLVM-Dev была опубликована информация о том, что в настоящее время проект Flang готовится к присоединению к моно-репозиторию LLVM. При этом разработчики планируют сохранить всю историю версий Flang — она лишь будет приведена в соответствие со стандартами LLVM. В десятой ветви LLVM Flang будет присутствовать с самого начала, пока же его исходные коды доступны в репозитории flang-compiler/f18 на GitHub.

NVIDIA Flang быстрее GCC, но медленнее PGI

NVIDIA Flang быстрее реализации Fortran в GCC8, но медленнее PGI

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

Постоянный URL: http://servernews.ru/1000014
21.10.2019 [19:08], Андрей Галадей

Улучшения LLVM Clang для AMD Zen 2 задерживаются

Ещё в феврале для компилятора LLVM Clang 9.0 была заявлена начальная поддержка AMD Zen 2. Однако в релиз они до сих пор не попали, в то время как ряд оптимизаций znver2 уже появились в GCC 9.2. 

Как ожидается, планировщик и другие изменения именно для Zen 2 будут добавлены уже в LLVM Clang 10.0, то есть в начале 2020 года. Для тех же, кому не хочется ждать, можно использовать AMD Optimizing C/C++ Compiler 2.0 (AOCC), который с августа поддерживает все те же возможности для znver2. 

phoronix.com

phoronix.com

Поддержка средств разработки — одна из областей, где AMD предстоит улучшить свою работу. Intel же традиционно начинает добавлять патчи для новых микроархитектур примерно за год до выхода самих чипов. Это позволяет гарантировать, что оптимизированная поддержка будет распространяться на выпущенные версии компиляторов и дистрибутивы Linux к моменту появления процессоров на рынке. 

В частности, поддержка процессоров Tiger Lake будет и в GCC 10, и в LLVM Clang 10. Об этом стало известно в конце лета, хотя сами чипы появятся только в первой половине 2020 года. К этому моменту будут готовы и финальные релизы обоих наборов компиляторов.  

Отметим, что процессоры на архитектуре Zen 2 уже несколько месяцев присутствуют на рынке и активно отбивают у Intel всё более крупную часть продаж. В ряде стран лидируют именно «красные» процессоры, причём это касается как настольных, так и серверных решений. 

Постоянный URL: http://servernews.ru/995958
15.09.2019 [20:56], Андрей Галадей

Для NVIDIA Deep Learning Accelerator выпущен компилятор с открытыми исходниками

Два года назад компания NVIDIA представила NVDLA (NVIDIA Deep Learning Accelerator) — платформу для построения ускорителей нейронных сетей с открытыми исходниками на Verilog. 

А теперь «зелёные» добавили программный компонент, который также может похвастаться открытым исходным кодом.

edivaldobrito.com.br

edivaldobrito.com.br

Речь идёт о компиляторе для NVDLA, который предназначен для максимизации производительности и эффективности запуска нейронных сетей на данной аппаратной платформе. Теперь он тоже стал открытым, получив лицензию BSD 3-Clause. Все исходники доступны на GitHub.

Отметим, что подобный шаг не является новым для бизнеса. Уже не первый год различные IT-корпорации так или иначе переходят на open source. И в этом есть логика — сочетание работы сообщества с финансированием корпораций позволяет не только повысить безопасность ПО, но и улучшить его качество в целом.

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