Опубликована новая версия стандарта параллельного программирования для языков C, C ++ и Fortran. Речь идёт об OpenMP 5.1. Новинка включает в себя ряд улучшений, в том числе новую конструкцию interop для совместимости с устройствами, которые напрямую не поддерживают OpenMP, но могут работать с интерфейсами вроде NVIDIA CUDA, AMD ROCm/HIP и OpenCL.
В числе нововведений стоит отметить расширение списка полностью поддерживаемых языков: C11, C18, C ++ 11, C ++ 14, C ++ 17 и C ++ 20. Также появилась возможность использовать синтаксис атрибутов C ++ директив OpenMP, что упрощает их интеграцию с шаблонами. А ещё заявлена поддержка Fortran 2008 и начальная поддержка для Fortran 2018. В самих же компиляторах появилась возможность генерировать ошибки и предупреждения во время процедуры компиляции.
Улучшилась поддержка аппаратных ускорителей вычислений, а указатели функций теперь можно сопоставить с устройством или ускорителем. Также были добавлены переменные среды для конкретных устройств. Появился и ряд новых директив. К примеру, tile, которая может улучшить локальность данных, и unroll, которая полностью или частично разворачивает цикл.
Что касается готовых реализаций, то LLVM, GCC, AMD, Intel, HPE, NVIDIA, Mentor Graphics и многие другие уже добавили поддержку этих спецификаций в свои продукты. Всё это должно улучшить многопоточную работу приложений и ускорить выполнение задач в целом.