Pas tre vjetësh zhvillimi, u publikua grupi i specifikimeve OpenMP 6.0 (Open Multi-Processing), i cili përcakton API-në dhe mënyrat e aplikimit të metodave të programimit paralel për gjuhët C, C++ dhe Fortran në sisteme me shumë bërthama dhe hibrid (CPU+GPU/DSP) me memorie të përbashkët dhe blloqe të vektorizimit (SIMD). Pritet që mbështetja fillestare për funksionet e veçanta të OpenMP 6.0 të përfshihet në lëshimet e LLVM/Clang 20 dhe GCC 15.
Ndryshimet kryesore në OpenMP 6.0:
- Procesi i programimit të detyrave (task) është thjeshtuar, duke përcaktuar pjesët e pavarura të programit që mund të ekzekutohen paralelisht me pjesë të tjera.
- ĂshtĂ« shtuar mundĂ«sia e ekzekutimit tĂ« detyrave nĂ« rrjetet e lira, tĂ« pa lidhura me grupet e proceseve (teams) qĂ« ekzekutojnĂ« rajonet paralele (parallel region, blloku i kodit qĂ« ekzekutohet nĂ« disa procese).
- ĂshtĂ« siguruar mbĂ«shtetje pĂ«r ruajtjen e grafit tĂ« detyrave (taskgraph), i cili pĂ«rcakton varĂ«sitĂ« midis detyrave dhe rendin e ekzekutimit tĂ« detyrave, pĂ«r tĂ« rritur efikasitetin e riprodhimit tĂ« mĂ«vonshĂ«m.
- ĂshtĂ« realizuar mekanizmi i detyrave transparente (âtransparent tasksâ) pĂ«r tĂ« thjeshtuar menaxhimin e varĂ«sive dhe menaxhimin automatizues tĂ« ekzekutimit tĂ« detyrave nĂ«n-ndihmĂ«s.
- ĂshtĂ« zgjeruar mbĂ«shtetja pĂ«r pajisjet kompjuterike qĂ« mund tĂ« pĂ«rdoren pĂ«r ekzekutimin e detyrave paralel (CPU, GPU, DSP etj.).
- ĂshtĂ« shtuar njĂ« sintaksĂ« e re pĂ«r vargjet, duke lejuar pĂ«rdorimin e drejtorisĂ« 'workdistribute' pĂ«r ndarjen e pĂ«rpunimit tĂ« vargjeve midis njĂ«si tĂ« ndryshme pune.
- Janë zgjeruar mundësitë për menaxhimin e alokimit të memories, duke thjeshtuar menaxhimin e variablave për të cilat memoria alokohet dinamikisht.
- ĂshtĂ« zgjeruar mbĂ«shtetja pĂ«r atributet qĂ« pĂ«rcaktojnĂ« shpĂ«rndarjen e tĂ« dhĂ«nave midis pajisjeve si parazgjedhje.
- Shkrimi i kodit për transferimin asinkron të të dhënave në pajisje të tjera kompjuterike (GPU) është thjeshtuar.
- Menaxhimi i memories dhe lidhja e saj me pajisjet kompjuterike është përmirësuar.
- ĂshtĂ« shtuar drejtorija 'groupprivate' pĂ«r tĂ« lidhur memory me njĂ« grup procesesh qĂ« ekzekutohen nĂ« njĂ« pajisje tĂ« caktuar kompjuterike.
- Programimi i disa llojeve të transformimeve të cikleve, si për shembull bashkimi i disa cikleve, ndryshimi i rendit të cikleve të ngulitura dhe përmbysja e cikleve, është thjeshtuar.
- Shtesa e një operacioni të ri induksioni (induction) për organizimin e paralelizimit në ciklet e llogaritjeve të thjeshta aritmetike dhe operacioneve përdoruesit, të varura nga vlerat e mëparshme.
- Shtesa e mbështetjes së plotë për paralelizimin e programeve të shkruara duke përdorur standardet C23 (duke përfshirë sintaksën e atributeve), Fortran 2023 dhe C++23. Shtohen atribute të reja për C/C++.
- Zgjerimi i mundësive për menaxhimin e ruajtjes dhe memories. Shtohen atribute të reja për kontrollin mbi mënyrën se si duhet alokuar dhe përdorur memoria. Shtohet një API për përcaktimin dhe kërkimin e hapësirave të memories (memory space).
- Eleminimi i mundësive të shpallura si të vjetra në specifikimet OpenMP 5.0, 5.1 dhe 5.2.
Burimi: opennet.ru
