Po třech letech vývoje byla publikována sada specifikací OpenMP 6.0 (Open Multi-Processing), které definují API a metody pro aplikaci metod paralelního programování pro jazyky C, C++ a Fortran na vícejádrových a hybridních (CPU+GPU /DSP) systémy se sdílenou pamětí a blokovou vektorizací (SIMD). Očekává se, že počáteční podpora pro vybrané funkce OpenMP 6.0 bude zahrnuta ve vydáních LLVM/Clang 20 a GCC 15.
Hlavní změny v OpenMP 6.0:
- Proces programovacích úloh byl zjednodušen a definoval nezávislé části programu, které lze provádět paralelně s ostatními částmi.
- Přidána možnost provádět úlohy ve vláknech s volným agentem, které nejsou vázány na skupiny vláken (týmy), které provádějí paralelní oblasti (paralelní oblast, blok kódu spouštěný v několika vláknech).
- Je poskytována podpora pro ukládání grafu úloh, který definuje závislosti mezi úkoly a pořadím, ve kterém jsou úkoly prováděny, pro zlepšení efektivity následného přehrávání.
- Pro zjednodušení správy závislostí a automatické řízení provádění podřízených úloh byl implementován mechanismus pro transparentní úlohy.
- Rozšířená podpora pro výpočetní zařízení, která lze použít k provádění paralelních úloh (CPU, GPU, DSP atd.).
- Přidána nová syntaxe pole umožňující použití direktivy „workdistribute“ k rozdělení zpracování pole mezi různé jednotky práce.
- Ovládací prvky přidělování paměti byly vylepšeny, aby usnadnily správu proměnných, pro které je paměť přidělována dynamicky.
- Byla rozšířena podpora atributů, které určují, jak jsou data standardně distribuována mezi zařízeními.
- Zjednodušené psaní kódu pro asynchronní přenos dat do dalších výpočetních zařízení (GPU).
- Vylepšená správa paměti a její vazba na výpočetní zařízení.
- Přidána direktiva „groupprivate“ pro přiřazení paměti skupině vláken běžících na konkrétním výpočetním zařízení.
- Programování určitých typů transformací smyček bylo zjednodušeno, jako je slučování více smyček, změna pořadí vnořených smyček a obrácení smyček.
- Byla přidána nová indukční operace pro organizaci paralelizace ve smyčkách jednoduchých aritmetických výpočtů a uživatelských operací, které závisí na předchozích hodnotách.
- Přidána plná podpora paralelizace programů napsaných pomocí standardů C23 (včetně syntaxe atributů), Fortran 2023 a C++23. Přidány nové atributy pro C/C++.
- Vylepšené možnosti ukládání a správy paměti. Byly přidány nové atributy, které určují, jak má být paměť alokována a používána. Přidáno API pro definování a dotazování na paměťové prostory.
- Funkce zastaralé ve specifikacích OpenMP 5.0, 5.1 a 5.2 byly odstraněny.
Zdroj: opennet.ru
