Intel опубликовал компилятор ISPC 1.24, реализующий модель распараллеливания SPMD

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

#

Intel опубликовал компилятор ISPC 1.24, реализующий модель распараллеливания SPMD
Дата публикации:Mon, 27 May 2024 20:59:37 +0300




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



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





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




Основные новшества, добавленные в версии ISPC 1.24:
  • Добавлена поддержка нетипизированных параметров в шаблонах функций. В качестве параметров шаблона теперь можно использовать унифицированные целые и перечисляемые значения (с признаком "uniform").

    Добавлены dot-функции для знаковых и беззнаковых типов int8 и int16, в которых используются инструкции AVX-VNNI и AVX512-VNN.
    Добавлены определения макросов, определяющих ограничения размерности чисел.
    Добавлены новые целевые платформы: avx2vnni-i32x4, avx2vnni-i32x8, avx2vnni-i32x16 c поддержкой инструкции AVX-VNNI, и avx512icl-x4, avx512icl-x8, avx512icl-x16, avx512icl-x32, avx512icl-x64 c поддержкой инструкции AVX512-VNNI.
    Решены проблемы с использованием лишних векторных инструкций при генерации кода для GPU.
    Флаг командной строки "--pic" приведён к соответствию флагу "-fpic" в Clang и GCC, а флаг "--PIC" - к соответствию "-fPIC".


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

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

Ответить