Megjelent az OpenMP 6.0 párhuzamos programozási szabvány

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

Hozzászólás