The OpenNET Project / Index page

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

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

27.05.2024 20:59

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


  1. Главная ссылка к новости (https://github.com/ispc/ispc/r...)
  2. OpenNews: Intel представил nGraph, компилятор для систем машинного обучения
  3. OpenNews: Linux ядро адаптировано для сборки компилятором Intel C/C++
  4. OpenNews: Выпущен релиз Linux версии компилятора Intel C++ Compiler 11.0
  5. OpenNews: Intel представил River Trail, расширение к JavaScript для параллельного программирования
  6. OpenNews: Опубликован стандарт параллельного программирования OpenMP 5.1
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/61253-ispc
Ключевые слова: ispc, spmd, intel
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (37) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Bottle (?), 21:39, 27/05/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    Кто-нибудь знает, почему Intel не закоммитили этот код напрямую в Clang?
     
     
  • 2.3, Аноним (3), 21:49, 27/05/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Проприетарщик же. Ещё спроси, почему mkl не опенсорс. Да-да, это та самая либа, которую искусственно замедляли на амд.
     
     
  • 3.14, Витюшка (?), 00:09, 28/05/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Можно пруфы? Очень интересно почитать
     
     
  • 4.15, Аноним (3), 00:17, 28/05/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Да вроде известная история. Интелу хорошо напихали за это, когда всплыло.
     
  • 4.20, topin89 (ok), 02:09, 28/05/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    https://www.agner.org/optimize/blog/read.php?i=49#49
     
     
  • 5.46, Аноним (46), 02:39, 29/05/2024 [^] [^^] [^^^] [ответить]  
  • +/
    А, ну как всегда, поехавшие инвестигаторы видят инопланетян во вспышках камеры. Тут ещё и чел, удивленный ранее во вранье, фул матч.
     
  • 2.6, Аноним (-), 22:46, 27/05/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Кто-нибудь знает, почему Intel не закоммитили этот код напрямую в Clang?

    И поддержки AMD GPU нет...

     
  • 2.7, anonymous (??), 22:49, 27/05/2024 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Видимо потому что это не clang, а самостоятельный компилятор.
     
     
  • 3.35, Аноним (35), 13:57, 28/05/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Поддерживаю и вас - тоже так думаю и автора вопроса. Вопрос действительно хорош. Из компилятора С на самом деле можно сделать тоже самое что с движками браузеров с любимой американцами последующей монополизацией всего рынка.
     
  • 2.8, мяя (?), 22:54, 27/05/2024 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Наглядный пример последствия рабской лицензии у LLVM
     
     
  • 3.10, Аноним (-), 23:27, 27/05/2024 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Эм... "Код проекта ... распространяется под лицензией BSD."
    Шлангователям никто не мешает взять и затянуть его самим - лицензия позволяет.
    Более того, гнутики могут заразить этот код, и затянуть в gcc.

    Но просто никому это не нужно. Это же не просто затянуть, это еще и поддерживать придется.

     
     
  • 4.11, мяя (?), 23:37, 27/05/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ладно я поторопился и повёлся на комментарии, надо было заглянуть в гитхаб прежде.
     
     
  • 5.12, Аноним (-), 23:40, 27/05/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Ладно я поторопился и повёлся на комментарии, надо было заглянуть в гитхаб прежде.

    Учитывая что эта цитата предпоследнее предложение первого (!) абзаца новости...
    то ты и новость так себе читал :)

     

  • 1.2, Аноним (2), 21:45, 27/05/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    Тестить лучше на Clear Linux ?
    https://www.clearlinux.org
     
  • 1.9, Middle Go Developer (?), 23:22, 27/05/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Это уже похоже на то, что на VLIW делается, но это же другое, да?
     
     
  • 2.13, oss (??), 23:49, 27/05/2024 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Конечно другое. Эт жео интел сказал что vliw мертв? А это просто оптимизация. Если оптимизировать под Intel, то код будет оптимальный. Если не под них, например amd, то код говно. Это уже вроде проходили.
     
  • 2.18, Аноним (18), 00:37, 28/05/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Эль брус напрягся...
     
  • 2.19, Аноним (-), 01:02, 28/05/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Это уже похоже на то, что на VLIW делается, но это же другое, да?

    Все же несколько другое. Даже современные GPU ушли от VLIW в чистом виде. Ну вот неудобно оно ни компилеру ни человеку оказывается.

     
  • 2.42, Аноним (42), 18:32, 28/05/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    SIMD - в первом приближении можно считать частным случаем VLIW. Просто во VLIW можешь почти любые инструкции (операции) "соединять" в макроинструкцию, а в SIMD инструкция (операция) одна на все вычислительные блоки.
    Т.е. в SIMD выбрал "сложить 4 пары 32-битных целых", то как бы всё... Во VLIW можешь первую и третью пару сложить, вторую пару перемножить, а четвёртую по XOR.
    В реальности можешь влететь в ограничение - VLIW умеет умножать только на АЛУ/сопроцессоре №3 и умножение уже никак не параллелится.
     
     
  • 3.43, Аноним (42), 18:54, 28/05/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Дополню ещё, а то главная проблема непонятна. Сложение допустим делается за 1 такт, умножение за 4, а деление за 11. И попалась инструкция с делением... в итоге будет или огромный простой, или надо как-то хитро формировать поток инструкций для каждого вычислительного блока отдельно. И тогда компилятор должен корректно прикинуть время завершения вычислений на каждом блоке.
     

  • 1.21, Аноним (21), 02:54, 28/05/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Так ведь AVX-512 на Alder Lake и дальше сломали. Кому это теперь?
     
  • 1.23, Ivan_83 (ok), 07:12, 28/05/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    И зачем это всё!?

    Показали бы примеры, типа взяли собрали этим какойнить zlib, openjpeg или ещё чего и получили ускорение хотя бы сколько то.

     
  • 1.24, Аноним (24), 08:21, 28/05/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > при котором несколько экземпляров одной программы выполняются параллельно с разными наборами входных данных.

    Не понял смысла!????
    Может быть огрехи перевода?

     
     
  • 2.26, Аноним (26), 09:02, 28/05/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Скорее речь про обработчики внутри традиционной программы, смысл в том, что части одной программы выполняются параллельно, обрабатывая разные порции данных. Но в  ISPC и SPMD для этого используется термин программа - "number of program instances execute in parallel"
     

  • 1.27, Аноним (27), 09:22, 28/05/2024 Скрыто ботом-модератором [﹢﹢﹢] [ · · · ]     [к модератору]
  • +/
     

     ....ответы скрыты (2)

  • 1.30, Аноним (30), 12:16, 28/05/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    В чем проблема ICC что им пришлось создавать новый компилятор? Напоминаю что у ICC есть отличные конкуренты - бесплатные GCC, Clang, AOCC, NVCC для которых раньше хорошие IDE существовали как правило в платной версии, ну и платный Visual C++ с его комьюнити версией. Чаще всего на галерах используется Visual C++ хотя-бы по причине наличия .NET с его упрощенными ЯП по сравнению с С/С++. И вот ICC был чаще всего более производительный, но не взлетел, потому что дорогой и комьюнити версии не было. А до комьюнити версии у VS была бесплатная версия через торренты, которую было проще устанавливать чем ICC. И вот по происшествии множества лет, когда большая часть рынка уже потеряна они выпускают новый компилятор Intel® Implicit SPMD Program Compiler. И по какой же причине люди должны им пользоваться? Такой причиной могут быть разве-что заказы связаны с этим компилятором. Привычки и современный подход HR, а я напомню что это не кадровики, а специалисты по человеческим ресурсам просто проигнорируют этот новый компилятор, если кому-то сверху не придёт в голову требовать исполнение именно на нём.
     
     
  • 2.31, Аноним (30), 12:19, 28/05/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Я не написал что их рынок это фактически комьюнити, которые и используют компилятор. Только вот они как правило не платят - им это нужно для работы, а персонально не нужно, платят компании их нанимающие.
     
  • 2.37, Neon (??), 14:11, 28/05/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Занесут чемоданы денег куда надо и будут принудительно использовать разные конторы. Демонстрируя исключительно эффективность процессоров от Intel. Ведь эффективная оптимизация будет лишь под них, а для всех остальных будет в лучшем случае симуляция оптимизации, а то и откровенное вредительство. Покупайте процессоры Intel !)
     
  • 2.38, Dark Amateur (?), 14:34, 28/05/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Коммьюнити версия как таковой не было, но была доступная академическая версия студентов, правда, с рядом ограничений и с последующим закручиванием гаек. С ICC никакой проблемы нет, просто, как я понял, сейчас он называется Intel OneAPI. С рынком тоже просто: ты покупаешь кластер за вагоны золота, а лицензия на компилятор прилагается как салфетка в ресторане. Да, это 3--4 клиента, но с такими колоссальными деньгами, что окупает разработку.
     
  • 2.41, Ivan7 (ok), 16:05, 28/05/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    ICC давно бесплатный. Intel Classic Compiler он сейчас называется. Компилирует жутко медленно, производительность программ, скомпилированных им, получается хуже, чем при использовании GCC и Clang, также он сильно отстаёт в реализации стандартов C++, возможности ассемблерных вставок значительно более ограничены, и есть у него разные глюки, в том числе связанные со встроенным ассемблером. Короче, преимуществ он не даёт никаких. Используйте лучше стандартные GCC и Clang и не травмируйте себе мозг. Ну и сама Intel забросила его в пользу компилятора на базе LLVM/Clang. Так что сейчас он представляет собой больше историческую ценность.
     

  • 1.36, Neon (??), 14:08, 28/05/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Эффективная оптимизация, естественно, только под процессоры Intel, а для остальных в лучшем случае симуляция или даже вредительство откровенное)
     
     
  • 2.40, Аноним (40), 14:52, 28/05/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Предлагаете интелу за свои деньги оптимизировать все на свете? Эта оптимизация конкуретное преимущество которое они превращают в деньги.
     
     
  • 3.45, Neon (??), 23:12, 28/05/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Так Intel уже ловили на том, что для конкурентов они откровенным вредительством занимались под видом оптимизации
     
  • 2.44, Аноним123 (?), 22:28, 28/05/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Ну если оно таки взлетит, то написать новые бэкенды думаю не будет большой проблемой
     

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



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

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