Опубликован стандарт параллельного программирования OpenMP 5.1
После двух лет разработки опубликован набор спецификаций OpenMP 5.1 (Open Multi-Processing), определяющих API и способы применения методов параллельного программирования для языков Си, Си++ и Фортран на многоядерных и гибридных (CPU+GPU/DSP) системах с общей памятью и блоками векторизации (SIMD). Отдельные элементы OpenMP 5.1 будут включены в следующий выпуск LLVM/Clang 12.0, а также, возможно, успеют попасть в ветку GCC 11.
Основные новшества OpenMP 5.1:
- Улучшено использование современного C++ в OpenMP. Добавлена полная поддержка распараллеливания программ, написанных с использованием стандартов C11, C18, C++11, C++14, C++17 и C++20. Вместо выражения «pragma» предоставлена поддержка синтаксиса атрибутов, который может применяться для указания директив OpenMP и более прост для интеграции с шаблонами.
- Расширена поддержка специализированных аппаратных ускорителей. Добавлена конструкция «interop» для обеспечения совместимости с устройствами, напрямую не поддерживающими OpenMP, и использования поддерживаемых данными устройствами интерфейсов, таких как CUDA streams, HIP и OpenCL.
- Добавлена возможность отражения указателей функций на устройство или ускоритель. Реализована поддержка специфичных для устройств переменных окружения.
- Расширена предоставляемая компилятору информация, на основе которой можно задействовать дополнительные оптимизации. Для передачи дополнительной информации об использовании OpenMP в программе добавлена директива «assume». Кроме того предложена директива «tile» для определения локализации данных при выполнении циклов, и директива «unroll» для частичного разматывания цикла.
- Добавлена директива «masked» для ограничения выполнения кода только заданным подмножеством потоков.
- Предоставлена возможность генерации ошибок и предупреждений, выводимых на стадии компиляции. Добавлена новая директива «error».
- Улучшена поддержка языка Fortran. Реализована полная совместимость со спецификацией Fortran 2008 и предоставлена начальная поддержка Fortran 2018.
- Упрощено определение функций, специфичных для конкретных окружений. Сразу несколько функций теперь могут быть включены в один вариант конструкции «declare», а код можно более тщательно адаптировать к определённому окружению.
Источник: http://www.opennet.ru/opennews/art.shtml? num=54082
© OpenNet