Профиль: Аноним (вход | регистрация) неRU opennet.me  
The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

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

26.06.2026 09:06 (MSK)

Компания Intel опубликовала компилятор ISPC 1.31 (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.31:

  • Добавлена экспериментальная поддержка 64-разрядной little-endian архитектуры PowerPC (ppc64le). По умолчанию осуществляется сборка для POWER ISA 2.7 (POWER8+) с расширениями VSX (Vector Scalar Extension).
  • Добавлены новые сборочные цели avx10.2nvl-x4, avx10.2nvl-x8, avx10.2nvl-x16, avx10.2nvl-x32 и avx10.2nvl-x64, реализующие поддержку расширенный наборов инструкций AVX10.2 (Advanced Vector Extensions) и APX (Advanced Performance Extensions) для процессоров на базе микроархитектуры Intel Nova Lake.
  • В диспетчеризаторе обеспечен выбор вариантов сборочных целей с поддержкой AMX (avx512spr, avx512gnr, avx10.2dmr) только при реальной поддержке расширений AMX (Advanced Matrix Extensions) в операционной системе и CPU.
  • Добавлена опция "--opt=disable-apx" для выборочного отключения отдельных возможностей x86 APX (egpr, ndd, push2pop2, ppx, ccmp, cf, nf, zu и jmpabs), которые по умолчанию включены в поддерживающих APX сборочных целях, таких как avx10.2dmr и avx10.2nvl.
  • Добавлены сбалансированный ("balanced") и агрессивный ("aggressive") режимы оптимизации математических вычислений, включаемые через опцию "--opt=fast-math" и более агрессивные по сравнению с применяемым по умолчанию режимом оптимизации.
  • В сандартную библиотеку добавлены новые математические функции: erf, erfc (функции ошибок Гаусса), expm1 (точное вычисление "exp(x)-1"), log1p ("log(1+x)"), sinh, cosh и tanh (гиперболические синус, косинус и тангенс). Повышена точность и производительность функций asin, acos, atan и log.
  • Значительно повышена производительность 32-битных операций перестановки (shuffles) для сборочной цели avx2-i32x16 и вычислений popcnt для целей avx2-i8x32, avx512skx-x32 и avx512skx-x64.
  • Инструментарий LLVM обновлён до находящейся в разработке ветки 23.


  1. Главная ссылка к новости (https://github.com/ispc/ispc/r...)
  2. OpenNews: Выпуск компилятора ISPC 1.26, развиваемого Intel для языка Си с расширениями SPMD
  3. OpenNews: Cheerp 3.0, компилятор C/C++ в JavaScript, переведён на лицензии Apache 2.0 и LLVM
  4. OpenNews: Доступен Vcc, C/C++ компилятор для Vulkan
  5. OpenNews: Linux ядро адаптировано для сборки компилятором Intel C/C++
  6. OpenNews: Intel представил nGraph, компилятор для систем машинного обучения
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/65777-ispc
Ключевые слова: ispc, compile, intel
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (9) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Девушка на час (?), 09:30, 26/06/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Кто-то в реальных проектах тестил в сравнении с gcc?
     
     
  • 2.2, Аноним (2), 10:04, 26/06/2026 [^] [^^] [^^^] [ответить]  
  • –2 +/
    BSD лицензия, зачем оно вместо gcc?
     
     
  • 3.8, Аноним (8), 10:44, 26/06/2026 [^] [^^] [^^^] [ответить]  
  • –4 +/
    Потому что лицензия свободная, а не гнутая.
     
  • 2.7, Векторный аноним (?), 10:40, 26/06/2026 [^] [^^] [^^^] [ответить]  
  • +/
    ISPC не замена gcc. Обычно используют ISPC для написания векторных кернелов, которые затем вызывают из обычного кода, компилириуемого чем угодно (gcc, clang, etc). Если сравнивать ISPC кернелы с автовекторизацией gcc/clang, то первое конечно значительно мощнее (как минимум, ты гарантировано получишь векторный код), но требует специальных навыков.

    Что касается популярности, то ISPC занимает довольно специфическую нишу между автовекторизацией (для тех, кто не осилил) и интринзиками (для тех, кто осилил). При этом при написании векторного кода ты обычно уже конкретно знаешь чего тебе надо, и написать на интринзиках не сильно сложнее, что многие и делают. Основной выигрыш как раз за счет поддержки "любой" векторной ISA из коробки.

    Если обобщать, то интрумент довольно нишевый. Но знаю несколько крутых спецов, которые перешли на ISPC с интринзиков и весьма довольны.

     
     
  • 3.11, Аноним (11), 11:48, 26/06/2026 [^] [^^] [^^^] [ответить]  
  • +/
    > ISPC не замена gcc

    А почему бы и нет

     
  • 2.12, Аноним (12), 12:11, 26/06/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Да. Выгода на определенных конфигурациях есть, иногда в разы. Но универсальных алгоритмов нет. Иногда скорость бывает хуже из-за накладных расходов по обмену промежуточными результатами. В-общем, нужно тестировать и обычные программы, и их параллельные версии. Минус - не поддерживается статическая сборка. Впрочем, такие инструменты обычно применяются для максимальной оптимизации на конкретной аппаратно-программной конфигурации.
     

  • 1.6, Пыщь (?), 10:17, 26/06/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    А как же пересвятая ржавчина? Штеуд почему не "в тренде", самые умные что ли?
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2026 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру