Опубликован стандарт параллельного программирования OpenMP 5.1
13 ноября 2020 года
После двух лет разработки опубликован набор спецификаций 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", а код можно более тщательно адаптировать к определённому окружению.
Источники править
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.