Vydán standard paralelního programování OpenMP 6.0

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

Přidat komentář