После трёх лет разработки опубликован набор спецификаций OpenMP 6.0 (Open Multi-Processing), определяющих API и способы применения методов параллельного программирования для языков Си, Си++ и Фортран на многоядерных и гибридных (CPU+GPU/DSP) системах с общей памятью и блоками векторизации (SIMD). Предполагается, что начальная поддержка отдельных возможностей OpenMP 6.0 будет включена в состав выпусков LLVM/Clang 20 и GCC 15.
Основные изменения в OpenMP 6.0:
Упрощён процесс программирования задач (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).