Byl zveřejněn standard paralelního programování OpenMP 6.0

Po třech letech vývoje byl zveřejněn soubor specifikací OpenMP 6.0 (Open Multi-Processing), které definují API a způsoby použití metod paralelního programování pro jazyky C, C++ a Fortran na víceprocesorových a hybridních (CPU+GPU/DSP) systémech s sdílenou pamětí a bloky vektorování (SIMD). Předpokládá se, že počáteční podpora jednotlivých funkcí OpenMP 6.0 bude zahrnuta v vydáních LLVM/Clang 20 a GCC 15.

Hlavní změny v OpenMP 6.0:

  • Byl zjednodušen proces programování úloh (task), které definují nezávislé části programu, jež mohou být vykonávány paralelně s jinými částmi.
    • Byla přidána možnost vykonávání úloh ve vláknech free-agent, které nejsou vázány na skupiny vláken (teams), vykonávající paralelní oblasti (parallel region, blok kódu vykonávaný v několika vláknech).
    • Byla zajištěna podpora pro uchovávání grafu úloh (taskgraph), který definuje závislosti mezi úlohami a pořadí jejich vykonávání, za účelem zvýšení efektivity následného opětovného provedení.
    • Byl realizován mechanismus transparentních úloh („transparent tasks“) pro zjednodušení správy závislostí a automatické řízení vykonávání podúloh.
  • Byla rozšířena podpora výpočetních zařízení, která mohou být použita pro vykonávání paralelních úloh (CPU, GPU, DSP atd.).
    • Byla přidána nová syntaxe polí, která umožňuje používat direktivu „workdistribute“ pro rozdělení zpracování polí mezi různými pracovními jednotkami.
    • Byly rozšířeny možnosti řízení alokace paměti, což zjednodušuje správu proměnných, pro které je paměť alokována dynamicky.
    • Byla rozšířena podpora atributů, které určují výchozí rozdělení dat mezi zařízení.
    • Bylo zjednodušeno psaní kódu pro asynchronní přenos dat k dalším výpočetním zařízením (GPU).
    • Bylo zlepšeno řízení paměti a její přidělování k výpočetním zařízením.
    • Byla přidána direktiva „groupprivate“ pro přiřazení paměti k skupině vláken, které běží na určitém výpočetním zařízení.
  • Bylo zjednodušeno programování některých typů transformace cyklů, jako je sloučení několika cyklů, změna pořadí vnořených cyklů a reverze cyklů.
  • Byla přidána nová indukční operace (induction) pro organizaci paralelizace v cyklech jednoduchých aritmetických výpočtů a uživatelských operací závislých na předchozích hodnotách.
  • Byla přidána plná podpora paralelizace programů napsaných s využitím standardů C23 (včetně syntaxe atributů), Fortran 2023 a C++23. Byly přidány nové atributy pro C/C++.
  • Byly rozšířeny možnosti správy úložiště a paměti. Byly přidány nové atributy pro kontrolu toho, jak by měla být paměť alokována a používána. Byl přidán API pro určení a požadování paměťových prostorů (memory space).
  • Byly odstraněny možnosti, které byly prohlášeny za zastaralé ve specifikacích OpenMP 5.0, 5.1 a 5.2.

Zdroj: opennet.ru

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster