Опубликован стандарт параллельного программирования OpenMP 4.5

После двух с половиной лет разработки опубликован набор спецификаций OpenMP 4.5 (Open Multi-Processing), определяющих API и способы применения методов параллельного программирования для языков Си, Си++ и Фортран на многоядерных и гибридных (CPU+GPU/DSP) системах с общей памятью и блоками векторизации (SIMD). OpenMP 4.5 примечателен расширением средств для параллельного программирования на системах с аппаратными ускорителями и GPU, а также поддержкой распараллеливания циклов с хорошо структурированными зависимостями. Реализация OpenMP 4.5 уже почти завершена в GCC и будет представлена в выпуске GCC 6.0, а также уже началась в экспериментальной ветке Clang, в которой формируется выпуск 3.8.

Основные новшества OpenMP 4.5:

  • Значительно улучшена поддержка дополнительных аппаратных вычислительных устройств, таких как специализированные аппаратные ускорители. Реализованы механизмы для привязки к подобным устройствам операций с неструктурированными данными или асинхронного выполнения кода. Добавлены процедуры для управления памятью устройства, позволяющие выделять, копировать и высвобождать блоки памяти;
  • Представлен механизм «doacross loops», позволяющий организовать распараллеливание циклов с хорошо структурированными зависимостями;
  • Новая конструкция «taskloop», позволяющая разделять циклы на задачи, избегая необходимости выполнения всех потоков внутри цикла;
  • Поддержка сокращения (редукции) массивов С/С++;
  • Новые механизмы hint-ов, через которые можно задать параметры выставления задачам относительных приоритетов и выбора предпочтительных средств синхронизации;
  • Поддержка привязки (affinity) потоков к заданным вычислительным устройствам;
  • Возможность распараллеливания многих приложений, написанных в соответствии со спецификацией Fortran 2003;
  • Поддержка расширений SIMD, в том числе возможность указать точное число обработчиков в потоке (метрика SIMD Width) и дополнительные атрибуты при обращении к общим данным.

©  OpenNet