Három év fejlesztés után megjelent az OpenMP 6.0 specifikációs készlet (Open Multi-Processing), amely meghatározza az API-t és a párhuzamos programozási módszerek alkalmazásának módjait C, C++ és Fortran nyelveken, többmagos és hibrid (CPU+GPU/DSP) rendszerek közös memóriával és vektorizálási blokkokkal (SIMD). Az OpenMP 6.0 egyes funkcióinak kezdeti támogatása az LLVM/Clang 20 és a GCC 15 kiadásaiba fog bekerülni.
Főbb változások az OpenMP 6.0-ban:
- Egyszerűsödött a feladatok (task) programozása, amelyek a program független részeit határozzák meg, amik párhuzamosan futtathatók más részekkel.
- Bevezetésre került a feladatok végrehajtásának lehetősége szabad ügynök (free-agent) szálakban, amelyeket nem kötnek a párhuzamos régiókat végrehajtó szálcsoportokhoz (teams).
- Támogatás nyújtása a feladatgrafok (taskgraph) tárolásához, amelyek a feladatok közötti függőségeket és feladatvégrehajtási sorrendet határozzák meg a hatékonyabb későbbi reprodukálás érdekében.
- Megvalósult a transzparens feladatok („transparent tasks”) mechanizmusa a függőségek kezelésének egyszerűsítésére és a gyerekfeladatok automatikus végrehajtásának irányítására.
- Kibővítették a párhuzamos feladatok végrehajtására felhasználható számítási eszközök támogatását (CPU, GPU, DSP stb.).
- Új tömbszintaxis került bevezetésre, amely lehetővé teszi a „workdistribute” direktíva használatát a tömbök feldolgozásának megosztására különböző munkegységek között.
- Kibővítették a memória-allokáció kezelésének lehetőségeit, amelyek megkönnyítik a dinamikusan allokált változók kezelését.
- Kibővítették az alapértelmezett adatmegosztásra vonatkozó attribútumok támogatását.
- Egyszerűsödött az aszinkron adatátvitel írása további számítási eszközök (GPU) felé.
- Javították a memória kezelését és annak számítási eszközökhöz való kötését.
- Bevezetésre került a „groupprivate” direktíva, amely lehetővé teszi a memória egy szálcsoporthoz való hozzárendelését, amelyeket egy adott számítási eszközön futtatnak.
- Egyszerűsödött bizonyos ciklusképzés típusaival kapcsolatos programozás, mint például több ciklus egyesítése, a beágyazott ciklusok sorrendjének megváltoztatása és a ciklusok visszafelé futtatása.
- Új indukciós funkció (induction) került hozzáadásra az egyszerű aritmetikai számítások és a korábbi értékektől függő felhasználói műveletek ciklusainak párhuzamosításához.
- Teljes támogatást kapott a C23 (beleértve a paraméterek szintaxisát), a Fortran 2023 és a C++23 szabványokkal írt programok párhuzamosítása. Új attribútumok kerültek hozzáadásra a C/C++ számára.
- Bővítették a tárolás és memória kezelésére vonatkozó lehetőségeket. Új attribútumok kerültek bevezetésre a memória kiosztásának és használatának szabályozásához. API került hozzáadásra a memória tér (memory space) meghatározásához és lekérdezéséhez.
- Eltávolították az OpenMP 5.0, 5.1 és 5.2 specifikációkban elavultnak nyilvánított funkciókat.
Forrás: opennet.ru
