PĂ€rast kolme aasta arengut on avaldatud OpenMP 6.0 spetsifikatsioonide kogum (Open Multi-Processing), mis mÀÀratleb API ja meetodite rakendamise viisid C, C++ ja Fortran programmistiku paralleelse programmeerimise jaoks mitme tuuma ja hĂŒbriidsete (CPU+GPU/DSP) sĂŒsteemide jaoks, kus on jagatud mĂ€lu ja vektorkluster (SIMD). Eeldatakse, et OpenMP 6.0 osade varane toetus sisaldub LLVM/Clang 20 ja GCC 15 vĂ€ljaannetes.
Peamised muudatused OpenMP 6.0:
- Tööde (task) programmeerimise protsess, mis mÀÀratleb sÔltumatud programmiosad, mida saab teostada paralleelselt teiste osadega, on lihtsustatud.
- On lisatud vĂ”imalus tĂ€ita töid tasuta agentide niĆĄi (free-agent threads), mis ei ole seotud niitide rĂŒhmade (teams) jaotatud paralleelsete piirkondade (parallel region, koodiplokk, mida teostatakse mitme niidi abil) vahel.
- On tagatud toetus tööde graafi (taskgraph) salvestamiseks, mis mÀÀratleb tööde vahelist sÔltuvust ja tööde tÀitmise jÀrjekorra, et suurendada edasise korduvkasutamise efektiivsust.
- On rakendatud lÀbipaistva tööde mehhanismi ('transparent tasks'), et lihtsustada sÔltuvuste haldamist ja automaatset alatteemade tÀitmist.
- On laiendatud toetust arvutuslikele seadmetele, mida saab kasutada paralleelsete tööde teostamiseks (CPU, GPU, DSP jne).
- On lisatud uus massiivide sĂŒntaks, mis vĂ”imaldab kasutada 'workdistribute' direktiivi massiivide töötlemise jagamiseks erinevate tĂ¶Ă¶ĂŒksuste vahel.
- On laiendatud mĂ€lu eraldamise juhtimise vĂ”imalusi, mis lihtsustavad dĂŒnaamiliselt eraldatud muutuja haldamist.
- On laiendatud attribuutide toetust, mis mÀÀratleb andmete jaotuse seadmete vahel vaikimisi.
- On lihtsustatud koodi kirjutamine asĂŒnkroonsete andmeedastuste jaoks tĂ€iendavatele arvutuslikele seadmetele (GPU).
- On parendatud mÀluhalduse ja selle seotuse juhtimist arvutuslikele seadmetele.
- On lisatud direktiiv 'groupprivate' mÀlu andmiseks niitide grupile, mis töötavad kindlas arvutuslikus seadmes.
- On lihtsustatud mĂ”nede tsĂŒklite transformatsioonide programmeerimist, nagu mitme tsĂŒkli ĂŒhendamine, sisemise tsĂŒkli jĂ€rjekorra muutmine ja tsĂŒklite pööramine.
- Uus induktsiooniprotseduur (induction) on lisatud, et korraldada lihtsate aritmeetiliste arvutuste ja eelnevate vÀÀrtuste pÔhinevate kasutajaoperatsioonide paralleelseid tehinguid.
- TĂ€ielik tugi paralleelseks programmeerimiseks, mis on loodud C23 (sealhulgas atribuudi sĂŒntaks), Fortran 2023 ja C++23 standardite kohaselt. Uued atribuudid C/C++ jaoks on lisatud.
- MĂ€lu ja salvestusruumi haldamise vĂ”imalusi on laiendatud. Uued atribuudid mĂ€lu jaotuse ning kasutamise juhtimiseks on lisatud. API, et mÀÀrata ja kĂŒsida mĂ€lu alasid (memory space), on loodud.
- Eemaldatud vÔimalused, mis on mÀÀratletud vananenutena OpenMP 5.0, 5.1 ja 5.2 spetsifikatsioonides.
Allikas: opennet.ru
