Avaldatud on OpenMP 6.0 paralleelprogrammeerimise standard.

Pärast kolmeaastast arendustööd on avaldatud OpenMP 6.0 (Open Multi-Processing) spetsifikatsioonide kogum, mis määratleb API ja meetodid paralleelprogrammeerimise rakendamiseks C, C++ ja Fortrani keeles mitutükilistes ja hübriidsüsteemides (CPU+GPU/DSP) koos jagatud mälu ja SIMD vektoriseerimise plokkidega. Eeldatakse, et algtoetust OpenMP 6.0 erivõimalustele sisaldavad LLVM/Clang 20 ja GCC 15 versioonid.

OpenMP 6.0 põhimuudatused:

  • Tööde (task) programeerimise protsess, mis määratleb sõltumatud programmiosad, mis võivad paralleelselt teiste osadega töötada, on lihtsustatud.
    • Lisatud on võimalus käitada ülesandeid vaba agendi (free-agent) threadides, mis ei ole seotud rühmadega (teams), kes teevad paralleelseid piirkondi (parallel region, koodiplokk, mida töötatakse mitmesugustes lõimedes).
    • Toetatakse ülesande graafiku (taskgraph) salvestamist, mis määratleb sõltuvusi ülesannete vahel ja ülesannete täitmise järjekorra, et suurendada edasise kordusprotsessi efektiivsust.
    • Töötati välja läbinägelike ülesannete mehhanism („transparent tasks“), et lihtsustada sõltuvuste haldamist ja automaatset alamehhanismide käivitamist.
  • Suurenes arvutusseadmete tugi, mida saab kasutada paralleelsete ülesannete täitmiseks (CPU, GPU, DSP jne).
    • Lisatud uus massiivisüntaks, mis võimaldab kasutada käsku „workdistribute“ massiivide töötlemise jaotamiseks erinevate töösuhte vahel.
    • Parandatud mälu eraldamise haldust, lihtsustades dünaamiliselt eraldatud mäluga seotud muutujate haldamist.
    • Laienenud atribuutide tugi, mis määravad vaikimisi andmete jaotuse seadmete vahel.
    • Lihtsustatud kood kirjutamist andmete asünkroonsete edastamiseks täiendavatele arvutusseadmetele (GPU).
    • Parandatud mälu haldamist ja selle seondumist arvutusseadmetega.
    • Lisatud käsk „groupprivate“, et seondada mälu teatud arvutusseadmest töötava kiirusgrupi jaoks.
  • Mõnede tsüklite transformatsioonide, nagu mitme tsükli ühinemine, sisemise tsüklite järjestuse muutmine ja tsüklite pööramine, lihtsustamine.
  • Uus indutseerimise (induction) operatsioon, et korraldada paralleelset töötlemist lihtsate aritmeetiliste arvutuste ja varasemate väärtuste sõltuvate kasutajaoperatsioonide tsüklites.
  • Täielik toetuse lisamine programmide paralleelseks töötlemiseks, mis on kirjutatud C23 standardite (sealhulgas atribuutide süntaks), Fortran 2023 ja C++23 abil. Uute atribuutide lisamine C/C++ jaoks.
  • Laiendatud salvestuse ja mälu haldamise võimalusi. Uute atribuutide lisamine selle kohta, kuidas mälu peab olema eraldatud ja kasutatud. API, et määrata ja taotleda mäluruume (memory space).
  • Eemaldatud võimalused, mis on standardites OpenMP 5.0, 5.1 ja 5.2 deklareeritud aegunuks.

Allikas: opennet.ru

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster