Három év fejlesztés után megjelent egy OpenMP 6.0 (Open Multi-Processing) specifikáció, amely API-kat és módszereket határoz meg a párhuzamos programozási módszerek alkalmazásához C, C++ és Fortran nyelvekhez többmagos és hibrid (CPU+GPU) /DSP) rendszerek megosztott memóriával és blokkvektorizálással (SIMD). Az OpenMP 6.0 kiválasztott funkcióinak kezdeti támogatása várhatóan az LLVM/Clang 20 és a GCC 15 kiadásokban fog megjelenni.
Főbb változások az OpenMP 6.0-ban:
- A programozási feladatok folyamata leegyszerűsödött, önálló programrészeket határoztak meg, amelyek más részekkel párhuzamosan is végrehajthatók.
- Hozzáadtuk a feladatok végrehajtásának lehetőségét olyan szabadügynök szálakban, amelyek nincsenek párhuzamos régiókat végrehajtó szálcsoportokhoz (csapatokhoz) kötve (párhuzamos régió, több szálban végrehajtott kódblokk).
- Támogatást biztosítunk a feladatok közötti függőséget és a feladatok végrehajtási sorrendjét meghatározó feladatgráf mentéséhez a későbbi újrajátszás hatékonyságának javítása érdekében.
- A függőségek kezelésének egyszerűsítése és a gyermekfeladatok végrehajtásának automatikus vezérlése érdekében bevezették az átlátható feladatok mechanizmusát.
- Kibővített támogatás a párhuzamos feladatok elvégzésére használható számítástechnikai eszközökhöz (CPU, GPU, DSP stb.).
- Új tömb szintaxis hozzáadva, hogy lehetővé tegye a "workdistribute" direktíva használatát a tömbfeldolgozás felosztására a különböző munkaegységek között.
- A memóriafoglalási vezérlőket továbbfejlesztették, hogy megkönnyítsék azoknak a változóknak a kezelését, amelyekhez a memória dinamikusan van lefoglalva.
- Kibővült azon attribútumok támogatása, amelyek meghatározzák az adatok alapértelmezés szerinti elosztását az eszközök között.
- Egyszerűsített kódírás az aszinkron adatátvitelhez további számítástechnikai eszközökhöz (GPU-k).
- Továbbfejlesztett memóriakezelés és számítástechnikai eszközökhöz való hozzárendelése.
- Hozzáadott "groupprivate" direktíva, amely memóriát rendel egy adott számítástechnikai eszközön futó szálcsoporthoz.
- Bizonyos típusú huroktranszformációk programozása egyszerűsödött, például több hurok összevonása, a beágyazott hurkok sorrendjének megváltoztatása és a hurkok megfordítása.
- Egy új indukciós művelettel egészült ki a párhuzamosítás megszervezése egyszerű aritmetikai számítások és felhasználói műveletek ciklusaiban, amelyek korábbi értékektől függenek.
- Hozzáadott teljes támogatás a C23 szabványokkal (beleértve az attribútum szintaxist), a Fortran 2023 és a C++23 szabványokkal írt programok párhuzamosításához. Új attribútumok hozzáadva a C/C++-hoz.
- Továbbfejlesztett tárolási és memóriakezelési lehetőségek. Új attribútumok kerültek hozzáadásra a memória lefoglalásának és használatának szabályozására. Hozzáadott API memóriaterületek meghatározásához és lekérdezéséhez.
- Az OpenMP 5.0, 5.1 és 5.2 specifikációiban elavult funkciókat eltávolítottuk.
Forrás: opennet.ru
