Публикуваха OpenMP 5.1 за паралелно програмиране

Нов набор от спецификации цели да подобри паралелното програмиране
(снимка: CC0 Public Domain)

След две години на разработка бе публикуван набор от спецификации 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.

Коментар