Rinnakkaisohjelmointistandardi OpenMP 6.0 julkaistu

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

Lisää kommentti