След две години на разработка бе публикуван набор от спецификации OpenMP 5.1 (Open Multi-Processing), които дефинират API (приложен програмен интерфейс) и начини за използване на паралелни методи за програмиране.
Спецификациите се отнасят до програмиране на езици C, C ++ и Fortran на многоядрени и хибридни (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.
Разширена е поддръжката на специализирани хардуерни ускорители. Добавена е конструкцията „interop”, за да се осигури съвместимост с устройства, които не поддържат директно OpenMP, и да се използват интерфейси, поддържани от тези устройства – като CUDA streams, HIP и OpenCL.
OpenMP 5.1 добавя също възможност за отразяване на указатели на функции към устройство или ускорител. Внедрена е поддръжка за специфични за устройството променливи на средата.
Информацията, предоставена на компилатора, е разширена, за да могат да се използват допълнителни оптимизации. Добавена е също директива „masked”, за да се ограничи изпълнението на код до определено подмножество нишки.
Освен това е осигурена възможност за генериране на грешки и предупреждения, показвани на етапа на компилация. За целта е добавена нова директива „error”.
Спецификациите включват и подобрена поддръжка на Fortran. Внедрена е пълна съвместимост със спецификацията Fortran 2008 и е осигурена първоначална поддръжка за Fortran 2018.