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 обязательно


Обсуждение (42) 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
     
     
  • 3.43, Аноним (43), 22:19, 16/10/2024 [^] [^^] [^^^] [ответить]  
  • –3 +/
    > под плашкой

    плашка-то с какой резьбой?

     

  • 1.7, Аноним (7), 11:09, 16/10/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Вот после таких поделок и появляется софт который работает только на Интел. Короче мало кому такое необходимо.
     
     
  • 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 [^] [^^] [^^^] [ответить]  
  • +/
    шёл 2024 год

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

     
     
  • 3.14, Аноним (-), 11:45, 16/10/2024 [^] [^^] [^^^] [ответить]  
  • +2 +/
    always has been (c)
    Но тут скорее интереснее то, что "на СИ можно писать скол угодно сложные программы! бла-бла!"
    А потом "ну... для нас ГЦЦ написан на плюсах, ну да и ллвм тоже.. пуук-среньк"
     
     
  • 4.28, Аноним (28), 20:38, 16/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    GCC начали переписывать с Си на С++ только в 2008г. До этого он был на чистом Си. А делать это начали из-за контейнеров в С++, с которыми сильно проще строить AST
     
     
  • 5.36, Аноним (36), 21:00, 16/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > GCC начали переписывать с Си на С++ только когда понадобились современные оптимизации и человеко-читаемый вывод ошибок, как в шланге. До этого он был на чистом Си.

    Пофиксил, не благодари.


     
     
  • 6.42, Аноним (42), 22:03, 16/10/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > человеко-читаемый вывод ошибок
    > С++

    Взаимоисключающие вещи.

     
  • 5.54, Аноним (-), 18:05, 17/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > только в 2008г
    > только

    me: cмотрю на календарь...
    Ну, как сказать. Учитывая что первый нормальный стандарт на с++ появился в 2003, как исправление с++98, то это еще быстро произошло.

     
  • 2.18, X512 (?), 12:27, 16/10/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Сколь-нибудь серьёзных оптимизирующих компиляторов Си написанных на Си больше не существует. Тот же GCC уже давно перешёл на C++.
     

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

  • 1.23, Аноним (23), 16:00, 16/10/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    ISPC - это проект ресёрчера Matt Pharr, который в Интел давно не работает. А дальнейшее сопровождение ISPC возложено, как это водится, на русских программистов. Почему ISPC объективно не нужен для CUDA объясняется в его блоге: https://pharr.org/matt/blog/2018/04/18/ispc-origins Блог вообще очень увлекательный, явтор с иронией и сарказмом рассказывает как Интел десятилетями создавал монополию на мировую технологическую платформу, не понимая что люди собственно хотят на его платформе делать.
     
  • 1.24, Аноним (-), 16:25, 16/10/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    >C/C++

    Это оскорбительно. Смешивать в одной аббревиатуре чистый и божественный Си, вместе с ужасным Си плюс-плюс. Линуксоиды никогда так не делайте!

     
     
  • 2.25, Аноним (25), 16:59, 16/10/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Откуда хейт плюсов? Великий Страуструп сделал лучшее: соединил две прекраснейшие вещи, Си и ООП. Не даром почти всё крутое написано на C++: игры, винда
     
     
  • 3.26, Аноним (42), 18:47, 16/10/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    ООПЭ переоценено и в частности в плюсах кривое (инклуды приватных объектов встраиваются в хидер и включаются в месте использования этого класса, что кроме своей неуместности, замедляет конпеляцию), медленное (виртуальные функции) и неудобное (нет утиной типизации).
     
     
  • 4.27, Аноним (25), 19:18, 16/10/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    И при этом что Винда (идеальная ОС), что большинство игр - на C++.
     
     
  • 5.29, Аноним (28), 20:41, 16/10/2024 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Как эту идеальную ос запустить на stm32 или на ардуино?
     
     
  • 6.32, Аноним (6), 20:46, 16/10/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    недавно было сообщение, что её запустили на intel 4004
     
     
  • 7.33, Аноним (28), 20:47, 16/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Это был линукс на мипсе через эмуляцию 4004, а не винда
     
  • 6.38, Аноним (25), 21:30, 16/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    А зачем запускать идеальную ОС на неидеальных (то есть не x86-64) процессорах? Впрочем, Винда NT вполне портируема - винда на армы есть, а когда была и на DEC Alpha. Просто смысл использовать не лучшие камни?
     
  • 6.46, Ivan7 (ok), 01:28, 17/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    На STM32 операционная система не нужна. Не благодари.
     
  • 5.37, Аноним (42), 21:28, 16/10/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Большинство игр на юнити.
     
     
  • 6.40, Аноним (25), 21:35, 16/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    А AAA-игр? А Unreal Engine игр? Индюшатники и на Питоне игры пишут.
     
     
  • 7.41, Аноним (42), 21:46, 16/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Да по сути всё равно на чём бездуховные ААА обмылки делать - основная работа приходится на видеокарту, а там dx/vk/ogl. Обновлять состояние объектов игрового мира игрового мира рациональнее на вычислительных шейдерах, чем на cpu.
     
  • 4.31, Аноним (28), 20:44, 16/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > хидер

    /ˈhed.ɚ/

     
     
  • 5.50, Аноним (50), 09:09, 17/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Через четверть века произносить, возможно, будут через настоящую "е", а не это ваше "э".
     
  • 3.30, Аноним (6), 20:43, 16/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Плюсы у С++ это классы? (Си с классами)
     
     
  • 4.44, Bottle (?), 23:42, 16/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Плюсы у C++ это constexpr, шаблоны, ieee-754 float с C++20, когда-нибудь и модули вместо хедеров.
     
     
  • 5.45, Аноним (42), 00:31, 17/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    В С23 constexpr тоже есть.
     
     
  • 6.47, Ivan7 (ok), 01:30, 17/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Нужны шаблоны и ООП из С++, правда в доработанном виде. А вот исключения не нужны.
     
  • 6.51, Bottle (?), 13:32, 17/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    После десятка лет присутствия в C++. Поезд ушёл, к тому же, очень далеко.
     
     
  • 7.52, Аноним (42), 16:36, 17/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Лучше б этот паровозик под мост ушёл. Постоянно ошибки компиляции в нужных библиотеках. Так достало. Вот известная библа, onnxruntime например, прямо сейчас не билдится. Ошибки видите ли в коде. В релизной ветке. Свежим шлангом.
     
  • 3.48, Аноним (48), 07:28, 17/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    А это и не хейт вовсе. Просто это разные языки, разделившиеся и развивающиеся параллельными курсами уже более трёх десятилетий. Философия и методология разработки принципиально отличаются.

    Когда смешивают в одну кучу — это либо банальная демонстрация безграмотности и отсутствия опыта разработки на обоих языках в актуальном их виде, либо унылые попытки в троллинг.

    > Великий Страуструп сделал лучшее…

    То что он попытался сделать называется аббревиатурой из трёх букв: EEE. «Embrace, Extend and Extinguish».

     
     
  • 4.53, Аноним (-), 18:01, 17/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Просто это разные языки, разделившиеся и развивающиеся параллельными курсами уже более трёх десятилетий.

    Но до этого, в момент создания, это был "си с классами", даже был надмножеством языка.
    И как результат он впитал в себя все недостатки сишки и это легаси тянут уже те самые 30+ лет.

     
     
  • 5.55, Копираст (-), 19:27, 17/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >Но до этого, в момент создания, это был "си с классами"

    И чо?

    >даже был надмножеством языка.

    Строго говоря, "Си с классами" со дня своего появления, уже был уже отдельным языком. Строго говоря, C++ никогда не был надмножеством языка Си. Байки про "надмножество" и "подмножетсво" обычно распространяли Си плюс-плюсники поражённые ООП головного мозга.

    >он впитал в себя все недостатки сишки и это легаси тянут уже те самые 30+ лет.

    Тупая и жирная ложь.

     
     
  • 6.56, Аноним (-), 23:14, 17/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Строго говоря - нет В статье A History of C 1979 8722 1991 за авторством ... большой текст свёрнут, показать
     

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



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

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