Выпуск компилятора ISPC 1.26, развиваемого Intel для языка Си с расширениями SPMD

Новости мира unix. Хотите узнать секрет вечного счастья? Откройте страницу 246.
Ответить
acolyte
Аватара пользователя
Сообщения: 3808
Зарегистрирован: 20.08.2022

#

Выпуск компилятора ISPC 1.26, развиваемого Intel для языка Си с расширениями SPMD
Дата публикации:Sat, 08 Feb 2025 11:08:37 +0300




Компания Intel опубликовала компилятор ISPC 1.26 (Implicit SPMD Program Compiler), предназначенный для сборки кода на языке Си с расширениями параллельного программирования SPMD (Single Program, Multiple Data), позволяющими добиться параллельного выполнения нескольких экземпляров одной программы с разными наборами входных данных. Код проекта написан на языке С++ и распространяется под лицензией BSD. Поддерживается работа в Linux, Windows, macOS и FreeBSD.



Си-программы с расширениями SPMD компилируются для выполнения на вычислительных блоках SIMD, предоставляемых CPU и GPU, что позволяет задействовать механизмы векторизации SIMD без низкоуровневых оптимизаций и явного применения в коде SIMD-инструкций. Для написания распараллеливаемых функций используется привычный синтаксис и идиомы языка Си - SPMD-функции напрямую взаимодействуют с функциями и структурами, написанными на C/C++. Для отладки программ могут применяться существующие отладчики.





В качестве бэкенда для генерации кода и оптимизации в ISPC используется инфраструктура LLVM. Поддерживаются векторные инструкции x86 (SSE2, SSE4, AVX, AVX2, AVX512) и ARM (NEON), а также вынос вычислений на сторону GPU (Intel Gen9 и Xe). На архитектурах с векторными блоками SSE, обрабатывающими по 4 элемента за раз, применение ISPC даёт возможность добиться ускорения выполнения программы в 3 или более раз, а на архитектурах с векторными блоками AVX, обрабатывающими по 8 элементов за раз, ускорение может достигать 5-6 раз. При этом помимо размера векторного блока, масштабирование также обеспечивается за счёт выполнения на разных процессорных ядрах.



Основные новшества, добавленные в версии ISPC 1.26:
  • Улучшена поддержка архитектуры ARM:

    Изменено поведение флага "--arch=arm", который теперь связан с архитектурой ARMv8 (32-bit), а не
    ARMv7 (для ARMv8 в 64-разрядном режиме как и раньше следует использовать флаг "--arch=aarch64").
    Прекращена поддержка процессоров ARMv7 Cortex-a9 и Cortex-a15.
    Добавлена поддержка процессоров Cortex-a55, Cortex-a78, Cortex-a510, Cortex-a520, а также новых ARM-процессоров Apple.
    Добавлены новые сборочные цели: neon-i16x16 и neon-i8x32.
    Добавлена поддержка операций на базе векторных инструкций ARM SDOT и UDOT.
    Проведена оптимизация, производительность для ARMv8 в среднем увеличилась на 13%.
Добавлен новый вид сборочных целей - "generic", позволивший оптимизировать внутреннюю архитектуру компилятора и упростить добавление новых сборочных целей. Идея в том, чтобы поддерживать базовые цели для специфичных аппаратных возможностей, поверх которых легко можно создавать цели с частными оптимизациями. На использование generic-целей переведена поддержка архитектуры ARM.

В генераторе кода проведена корректировка развёртывания циклов и функций для сокращения размера результирующего кода в режиме оптимизации "-O1". Улучшена генерация кода для встроенных функций count_leading_zeros и count_trailing_zeros, а также при возвращении структур из функций и при сохранении или загрузки данных с типами int8/int16.

Расширена поддержка встроенных функций (intrinsics) LLVM, активируемая при указании флага "--enable-llvm-intrinsics".

Инструментарий LLVM обновлён до версии 18.1.8 с патчами. Добавлен макрос для определения используемой в ISPC версии LLVM.

Разрешено применение атрибута "__attribute__((deprecated))" к функциям для вывода предупреждения при вызове функции.

Удалена сборочная цель avx512knl-x16 (KNL).

Добавлена опция "--darwin-version-min" для указания минимально поддерживаемой версии целевой платформы для macOS и iOS.







Новость позаимствована с opennet.ru
Ссылка на оригинал: https://www.opennet.ru/opennews/art.shtml?num=62692

Жизнь за Нер'зула!

Ответить