Kolmen vuoden kehitystyön jälkeen on julkaistu joukko OpenMP 6.0 (Open Multi-Processing) -spesifikaatioita, jotka määrittelevät API:t ja menetelmät rinnakkaisten ohjelmointimenetelmien soveltamiseen C-, C++- ja Fortran-kielille moniytimisissä ja hybridisissä (CPU+GPU) /DSP) järjestelmät, joissa on jaettu muisti ja estävät vektorisoinnin (SIMD). Alkuperäisen tuen valituille OpenMP 6.0 -ominaisuuksille odotetaan sisältyvän LLVM/Clang 20- ja GCC 15 -julkaisuihin.
Tärkeimmät muutokset OpenMP 6.0:ssa:
- Ohjelmointitehtävien prosessia on yksinkertaistettu määrittelemällä ohjelmasta itsenäisiä osia, jotka voidaan suorittaa rinnakkain muiden osien kanssa.
- Lisätty mahdollisuus suorittaa tehtäviä free-agent-säikeissä, joita ei ole sidottu säieryhmiin (ryhmiin), jotka suorittavat rinnakkaisia alueita (rinnakkaisalue, useissa säikeissä suoritettu koodilohko).
- Tukea on tallentaa tehtäväkaavio, joka määrittelee tehtävien väliset riippuvuudet ja tehtävien suoritusjärjestyksen, mikä parantaa myöhemmän toiston tehokkuutta.
- On otettu käyttöön läpinäkyvien tehtävien mekanismi, joka yksinkertaistaa riippuvuuden hallintaa ja ohjaa automaattisesti lapsitehtävien suorittamista.
- Laajennettu tuki tietokonelaitteille, joita voidaan käyttää rinnakkaisten tehtävien suorittamiseen (CPU, GPU, DSP jne.).
- Lisätty uusi taulukkosyntaksi, jotta "workdistribute"-direktiiviä voidaan käyttää taulukon käsittelyn jakamiseen eri työyksiköiden välillä.
- Muistin varauksen hallintaa on parannettu, jotta on helpompi hallita muuttujia, joille muistia varataan dynaamisesti.
- Tukea attribuuteille, jotka määrittävät tietojen oletusarvoisen jakautumisen laitteiden välillä, on laajennettu.
- Yksinkertaistettu kirjoituskoodi asynkroniseen tiedonsiirtoon muihin tietokonelaitteisiin (GPU).
- Parannettu muistin hallinta ja sen sitominen tietokonelaitteisiin.
- Lisätty "groupprivate"-direktiivi muistin määrittämiseksi tietyssä tietokonelaitteessa toimivalle säikeryhmälle.
- Tietyntyyppisten silmukkamuunnosten ohjelmointia on yksinkertaistettu, kuten useiden silmukoiden yhdistäminen, sisäkkäisten silmukoiden järjestyksen muuttaminen ja silmukoiden kääntäminen.
- Uusi induktiooperaatio on lisätty organisoimaan rinnakkaisuutta yksinkertaisten aritmeettisten laskutoimitusten silmukoissa ja aikaisemmista arvoista riippuvaisia käyttäjätoimintoja.
- Lisätty täysi tuki C23-standardeilla (mukaan lukien attribuuttisyntaksilla), Fortran 2023:lla ja C++23:lla kirjoitettujen ohjelmien rinnakkaisuudelle. Lisätty uudet attribuutit C/C++:lle.
- Parannetut tallennus- ja muistinhallintaominaisuudet. Uusia attribuutteja on lisätty ohjaamaan muistin varaamista ja käyttöä. Lisätty API muistitilojen määrittelyyn ja kyselyyn.
- OpenMP 5.0-, 5.1- ja 5.2-spesifikaatioissa vanhentuneet ominaisuudet on poistettu.
Lähde: opennet.ru
