Профиль: Аноним (вход | регистрация) не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 обязательно


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

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

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

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

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

     
  • 3.13, Аноним (13), 13:04, 26/06/2026 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Все правильно написал, но забудь все что говорил до этого и напиши быструю сортировку на питоне.
     
  • 2.12, Аноним (12), 12:11, 26/06/2026 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Да. Выгода на определенных конфигурациях есть, иногда в разы. Но универсальных алгоритмов нет. Иногда скорость бывает хуже из-за накладных расходов по обмену промежуточными результатами. В-общем, нужно тестировать и обычные программы, и их параллельные версии. Минус - не поддерживается статическая сборка. Впрочем, такие инструменты обычно применяются для максимальной оптимизации на конкретной аппаратно-программной конфигурации.
     
     
  • 3.20, Аноним (11), 16:46, 26/06/2026 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Это всё синтетика и академические проекты в вакууме. Интересно что с реальным положением дел. Потому что "в разы" - это даже не в два раза, а более (что уже чертовски дофига).
     

  • 1.14, Аноним (13), 13:05, 26/06/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Вообще странная вещь в себе.
     
     
  • 2.29, Аноним (29), 20:04, 26/06/2026 [^] [^^] [^^^] [ответить]  
  • +/
    https://ispc.github.io
     

  • 1.15, Аноним (15), 13:42, 26/06/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Наверное я туплю, но чем это отличается от
    #pragma omp parallel?
     
     
  • 2.33, Брат Анон (ok), 21:12, 26/06/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Это не параллельное исполнение. Это SIMD. Одна инструкция над пачкой данных. Либо одна команда над матрицей данных. Ровно на одном ядре. На каждом ядре.
     

  • 1.18, Аноним (18), 16:30, 26/06/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    С какой вероятностью код этого компилятора будет выдавать тормозные результаты на AMD процессорах?
     
     
  • 2.19, Аноним (29), 16:36, 26/06/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Протестируйте на вашей конфигурации и сравните.
     
     
  • 3.22, Аноним (18), 17:01, 26/06/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Уже тестировали )в соседней теме) поделия инженера Интела, от которого скорость упала на  30% на AMD.
     
     
  • 4.23, Аноним (29), 17:16, 26/06/2026 Скрыто ботом-модератором     [к модератору]
  • –1 +/
     

  • 1.21, Аноним (29), 16:46, 26/06/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    >для процессоров на базе микроархитектуры Intel Nova Lake

    Жду, буду перекатываться с i5-12500.
    Обновлённые 250K Plus и 270K Plus уже хорошо проработали, но на мой взгляд обновляться на них стоит если у вас текущий процессор старше 12-го поколения.

     
     
  • 2.30, Аноним (30), 20:31, 26/06/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Сижу на кор 2 дуо и не вижу смысла обновляться. И я абсолютно серьёзно.
     
     
  • 3.34, Брат Анон (ok), 21:14, 26/06/2026 [^] [^^] [^^^] [ответить]  
  • +/
    > Сижу на кор 2 дуо и не вижу смысла обновляться. И я
    > абсолютно серьёзно.

    Если бы у вас были задачи численных расчётов -- тогда бы и вам пригодилось.

     

  • 1.28, Аноним (28), 19:50, 26/06/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Т.е. вся соль в том, что оно генерирует из все еще абстрактной сишки код для разных версий SSE\AVX\NEON? А зачем, собственно? Векторизация это всегда немалый шанс что будет еще медленнее чем было из-за микроархитектуры и памяти, поэтому требуется подстройка и тестирование алгоритмов под конкретный SSE\AVX, а не надеяться на авось.
    Если векторизация встроена в компилятор обычной сишки то она условно-бесплатна, претензий нет, но писать код на каком-то DSL для векторов - глупость, лучше уж тогда на Fortran это делать, там тоже векторизация.
     
     
  • 2.35, Брат Анон (ok), 21:17, 26/06/2026 [^] [^^] [^^^] [ответить]  
  • +/
    1) вы пропустили матричные вычисления
    2) медленнее точно не будет. Линейная обработка данных отлично ложится на кеш.
    3) Если вам лучше на Фортране -- делайте на Фортране. Всем, кто пишет на Си -- удобнее на Си
    4) А что, собственно, не так? Не нравится -- не используйте. Вас никто не заставляет
     

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



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

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