Bol štandard paralelného programovania OpenMP 6.0

Po troch rokoch vývoja bol zverejnený súbor špecifikácií OpenMP 6.0 (Open Multi-Processing), ktoré určujú API a spôsoby aplikácie metód paralelného programovania pre jazyky C, C++ a Fortran na viacjadrových a hybridných (CPU+GPU/DSP) systémom so zdieľanou pamäťou a blokmi vektorizácie (SIMD). Predpokladá sa, že počiatočná podpora niektorých funkcií OpenMP 6.0 bude začlenená do vydaní LLVM/Clang 20 a GCC 15.

Hlavné zmeny v OpenMP 6.0:

  • Zjednodušený proces programovania úloh (task), ktoré definujú nezávislé časti programu, ktoré môžu byť vykonávané paralelne s inými časťami.
    • Pridaná možnosť vykonávania úloh v prúde free-agent, ktorý nie je viazaný na tímy prúdov (teams) vykonávajúcich paralelné regióny (parallel region, blok kódu vykonávaný v niekoľkých prúdoch).
    • Zabezpečená podpora ukládania grafu úloh (taskgraph), ktorý definuje závislosti medzi úlohami a poradie ich vykonávania, s cieľom zvýšiť efektívnosť následného opakovaného vykonávania.
    • Realizovaný mechanizmus transparentných úloh („transparent tasks“) pre zjednodušenie správy závislostí a automatické riadenie vykonávania podradených úloh.
  • Rozšírená podpora výpočtových zariadení, ktoré sa môžu používať na vykonávanie paralelných úloh (CPU, GPU, DSP atď.).
    • Pridaný nový syntax pre polia, ktorý umožňuje použiť direktívu „workdistribute“ na rozdelenie spracovania polí medzi rôzne pracovné jednotky.
    • Rozšírené možnosti riadenia alokácie pamäte, ktoré zjednodušujú správu premenných, pre ktoré je pamäť alokovaná dynamicky.
    • Rozšírená podpora atribútov, ktoré určujú predvolené rozdelenie dát medzi zariadeniami.
    • Zjednodušené písanie kódu pre asynchrónne prenosy dát na ďalšie výpočtové zariadenia (GPU).
    • Vylepšené riadenie pamäte a jej priradenie k výpočtovým zariadeniam.
    • Pridaná direktíva „groupprivate“ na priradenie pamäte k skupine prúdov, ktoré sa vykonávajú na konkrétnom výpočtovom zariadení.
  • Zjednodušené programovanie niektorých typov transformácií cyklov, ako je zlúčenie niekoľkých cyklov, zmena poradia vnorených cyklov a reverzia cyklov.
  • Pridaná nová operácia indukcie (induction) na organizáciu paralelizácie v cykloch jednoduchých aritmetických výpočtov a používateľských operácií závislých od predchádzajúcich hodnôt.
  • Pridaná plná podpora paralelizácie programov napísaných v súlade so štandardmi C23 (vrátane syntaxe atribútov), Fortran 2023 a C++23. Pridané nové atribúty pre C/C++.
  • Rozšírené možnosti správy úložiska a pamäte. Pridané nové atribúty na kontrolu, ako by sa mala pamäť alokovať a používať. Pridané API na určovanie a požiadanie o pamäťové priestory (memory space).
  • Odstránené funkcie, ktoré boli označené za zastarané v špecifikáciách OpenMP 5.0, 5.1 a 5.2.

Zdroj: opennet.ru

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster