Дата публикации:Fri, 15 Nov 2024 09:44:37 +0300
После трёх лет разработки опубликован набор спецификаций 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") для упрощения управления зависимостями и автоматического управления выполнением дочерних задач.
- Добавлен новый синтаксис массивов, позволяющий использовать директиву "workdistribute" для разделения обработки массивов между разными единицами работы.
Расширены возможности управления выделением памяти, упрощающие управление переменными, для которых память выделяется динамически.
Расширена поддержка атрибутов, определяющих распределение данных между устройствами по умолчанию.
Упрощено написание кода для асинхронной передачами данных дополнительным вычислительным устройствам (GPU).
Улучшено управление памятью и её привязкой к вычислительным устройствам.
Добавлена директива "groupprivate" для закрепления памяти за группой потоков, выполняемых на определённом вычислительном устройстве.
Добавлена новая операция индукции (induction) для организации распараллеливания в циклах простых арифметических вычислений и пользовательских операций, зависящих от предыдущих значений.
Добавлена полная поддержка распараллеливания программ, написанных с использованием стандартов C23 (включая синтаксис атрибутов), Fortran 2023 и C++23. Добавлены новые атрибуты для C/C++.
Расширены возможности управления хранилищем и памятью. Добавлены новые атрибуты для контроля над тем, как должна выделяться и использоваться память. Добавлен API для определения и запроса пространств памяти (memory space).
Удалены возможности, объявленные устаревшими в спецификациях OpenMP 5.0, 5.1 и 5.2.
Новость позаимствована с opennet.ru
Ссылка на оригинал: https://www.opennet.ru/opennews/art.shtml?num=62236