Представлен стандарт параллельного программирования OpenMP 6.0

от автора

Опубликован набор спецификаций OpenMP 6.0 (Open Multi-Processing). Он определяет API и способы применения методов параллельного программирования для языков С, С++ и Fortran на многоядерных и гибридных (CPU+GPU/DSP) системах с общей памятью и блоками векторизации (SIMD). 

Основные нововведения:

  • упрощённый процесс программирования задач (task), которые определяют независимые части программы, выполняемые параллельно с другими;

  • возможность выполнения задач в потоках free-agent, не привязанных к группам потоков (teams) и выполняющих блоки кода в нескольких потоках (parallel region);

  • поддержка сохранения графа задач (taskgraph), который определяет зависимости между задачами и порядок их выполнения;

  • механизм прозрачных задач (transparent tasks) для упрощения управления зависимостями и автоматического управления выполнением дочерних задач;

  • поддержка вычислительных устройств, которые могут использоваться для выполнения параллельных задач (CPU, GPU, DSP);

  • новый синтаксис массивов, позволяющий использовать директиву «workdistribute» для разделения обработки массивов между разными единицами работы;

  • новые возможности управления выделением памяти, упрощающие управление переменными, для которых она выделяется динамически;

  • расширенная поддержка атрибутов, определяющих распределение данных между устройствами по умолчанию;

  • упрощённое написание кода для асинхронной передачи данных дополнительным вычислительным устройствам (GPU);

  • улучшенное управление памятью и её привязкой к вычислительным устройствам;

  • директива «groupprivate» для закрепления памяти за группой потоков, выполняемых на определённом вычислительном устройстве;

  • упрощённое программирование некоторых видов трансформации циклов, таких как объединение нескольких циклов, изменение порядка вложенных циклов и реверсия;

  • новая операция индукции (induction) для организации распараллеливания в циклах простых арифметических вычислений и пользовательских операций, зависящих от предыдущих значений;

  • полная поддержка распараллеливания программ, написанных с использованием стандартов C23 (включая синтаксис атрибутов), Fortran 2023 и C++23, новые атрибуты для C/C++;

  • возможности управления хранилищем и памятью, новые атрибуты для контроля над тем, как должна выделяться и использоваться память, API для определения и запроса пространств памяти (memory space).

Из выпуска удалили возможности, объявленные устаревшими в спецификациях OpenMP 5.0, 5.1 и 5.2. Поддержку отдельных возможностей OpenMP 6.0 включат в выпуски LLVM/Clang 20 и GCC 15.


ссылка на оригинал статьи https://habr.com/ru/articles/859078/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *