The OpenNET Project / Index page

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

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

16.10.2024 10:41

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

  • При объявлении переменных и функций разрешено указание атрибутов "noescape", "address_space(N)", "external_only" и "unmangled" при помощи ключевого слова "__attribute__".
  • Добавлена поддержка использования шаблонов при объявлении векторов и массивов.
  • Обеспечен вывод сообщений об ошибках при использовании несовместимых типов при объявлении переменных.
  • Улучшена генерация кода для циклов foreach. Повышена эффективность генерации кода на основе наборов инструкций AVX2 и AVX512.
  • Обеспечена упреждающая компиляция стандартной библиотеки (stdlib), выполняемая на стадии сборки ISPC, а не при компиляции проектов. Изменение позволило сократить время сборки на 5-60%, в зависимости от размера собираемого кода.
  • Добавлены новые сборочные цели: xe2hpg-x16 и xe2hpg-x32 для GPU Intel Xe2 Battlemage, xe2lpg-x16 и xe2lpg-x32 для GPU Intel X Xe2 Lunar Lake. Также добавлены определения arrowlake, lunarlake и graniterapids для CPU Intel ArrowLake, LunarLake и GraniteRapids.
  • Объявлены устаревшими сборочные цели avx512knl-x16, gen9-x8 и gen9-x16.
  • В стандартную библиотеку для данных с типами float и double добавлены атомарные операции сложения, вычитания, поиска минимума и максимума.
  • Добавлена опция командной строки "-ffunction-sections" для генерации каждой функции в отдельной секции.
  • Предоставлена возможность сборки ISPC в двух режимах "slim" и "composite" (по умолчанию). Второй режим отличается интеграцией библиотек stdlib и binutils в единый исполняемый файл, вместо их поставки в виде отдельных файлов.


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


Обсуждение (13) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.6, Аноним (6), 11:07, 16/10/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    на гитхабе раздают версию 1.24, а не 1.25
     
     
  • 2.8, Аноним (6), 11:12, 16/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    это в меню под плашкой "загрузка", а по первой ссылке уже лежит 1.25
     

  • 1.7, Аноним (7), 11:09, 16/10/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Вот после таких поделок и появляется софт который работает только на Интел. Короче мало кому такое необходимо.
     
     
  • 2.9, anonymmmeer (?), 11:30, 16/10/2024 [^] [^^] [^^^] [ответить]  
  • +3 +/
    не зачем распыляться, когда есть софт только для CUDA.
    А если что, то качаешь этот CUDA с гита и доделываешь под своё железо ))
     
  • 2.12, Аноним (12), 11:43, 16/10/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    https://www.clearlinux.org
     

  • 1.10, Аноним (10), 11:38, 16/10/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > предназначенный для сборки кода на языке Си
    > Код проекта написан на языке С++

    Штош, это не удивительно.
    Скорее даже предсказуемо.

     
     
  • 2.11, Golangdev (?), 11:42, 16/10/2024 [^] [^^] [^^^] [ответить]  
  • –2 +/
    шёл 2024 год

    сишники всё ныли что их смешивают с плюсами ?)

     
     
  • 3.14, Аноним (-), 11:45, 16/10/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    always has been (c)
    Но тут скорее интереснее то, что "на СИ можно писать скол угодно сложные программы! бла-бла!"
    А потом "ну... для нас ГЦЦ написан на плюсах, ну да и ллвм тоже.. пуук-среньк"
     
  • 2.18, X512 (?), 12:27, 16/10/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Сколь-нибудь серьёзных оптимизирующих компиляторов Си написанных на Си больше не существует. Тот же GCC уже давно перешёл на C++.
     
     
  • 3.21, Аноним (21), 14:23, 16/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Деградация - обычное дело.
     
     
  • 4.22, Аноним (-), 14:29, 16/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Деградация - обычное дело.

    В смысле? СИ был дегроидным прямо с появления "стандарта".
    Тут скорее "стадия принятия" и осознания того, что из "овна и палок" не получится построить надежный софт.
    Коим должен быть компилятор.

     

  • 1.17, bOOster (ok), 11:56, 16/10/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Я ничего в новости не понял. Перевод чтоль корявый?
    "позволяющими добиться параллельного выполнения нескольких экземпляров одной программы с разными наборами входных данных."
    А набор ядер в 128 штук, например, не позволяют этого чтоли выполнить?
     
  • 1.19, Аноним (19), 14:06, 16/10/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Интел ещё что-то развивает? Я думал их со дня на день купить Qualcomm
     
     
  • 2.20, Советский инженер (ok), 14:12, 16/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    цену набивают
     

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



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

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