Parallel programmearring standert OpenMP 6.0 publisearre

Nei trije jier fan ûntwikkeling is in set fan OpenMP 6.0 (Open Multi-Processing) spesifikaasjes publisearre, dy't API's en metoaden definiearje foar it tapassen fan parallelle programmearmetoaden foar C, C ++ en Fortran-talen op multi-core en hybride (CPU + GPU) / DSP) systemen mei dielde ûnthâld en blokken vectorization (SIMD). Inisjele stipe foar selekteare OpenMP 6.0-funksjes wurdt ferwachte dat se opnommen wurde yn 'e LLVM / Clang 20- en GCC 15-releases.

Grutte feroaringen yn OpenMP 6.0:

  • It proses fan programmearjen fan taken is ferienfâldige, it definiearjen fan ûnôfhinklike dielen fan it programma dy't parallel mei oare dielen kinne wurde útfierd.
    • Taheakke de mooglikheid om taken út te fieren yn free-agent-threads dy't net bûn binne oan groepen fan threads (teams) dy't parallelle regio's útfiere (parallelle regio, in blok koade útfierd yn ferskate threads).
    • Stipe wurdt levere foar it bewarjen fan in taakgrafyk, dy't ôfhinklikens definiearret tusken taken en de folchoarder wêryn taken wurde útfierd, om de effisjinsje fan folgjende replay te ferbetterjen.
    • In meganisme foar transparante taken is ymplementearre om ôfhinklikensbehear te ferienfâldigjen en automatysk de útfiering fan bernetaken te kontrolearjen.
  • Utwreide stipe foar komputerapparaten dy't kinne wurde brûkt om parallelle taken út te fieren (CPU, GPU, DSP, ensfh.).
    • Nije arraysyntaksis tafoege om de "workdistribute"-rjochtline te brûken om arrayferwurking te splitsen tusken ferskate ienheden fan wurk.
    • Unthâldallokaasjekontrôles binne ferbettere om it makliker te meitsjen om fariabelen te behearjen wêrfoar ûnthâld dynamysk wurdt tawiisd.
    • Stipe foar attributen dy't bepale hoe't gegevens standert wurde ferdield tusken apparaten is útwreide.
    • Ienfâldige skriuwkoade foar asynchrone gegevensoerdracht nei ekstra kompjûterapparaten (GPU's).
    • Ferbettere ûnthâldbehear en syn bining oan komputerapparaten.
    • Tafoege "groupprivate" rjochtline foar it tawizen fan ûnthâld oan in groep triedden dy't rinne op in spesifyk kompjûterapparaat.
  • De programmearring fan bepaalde soarten looptransformaasjes is ferienfâldige, lykas it gearfoegjen fan meardere loops, it feroarjen fan de folchoarder fan nestele loops, en omkearing fan loops.
  • In nije ynduksjeoperaasje is tafoege om parallelisaasje te organisearjen yn loops fan ienfâldige arithmetyske berekkeningen en brûkersoperaasjes dy't ôfhinklik binne fan eardere wearden.
  • Folsleine stipe tafoege foar parallelisaasje fan programma's skreaun mei de C23-noarmen (ynklusyf attribútsyntaksis), Fortran 2023 en C++23. Nije attributen tafoege foar C / C ++.
  • Ferbettere mooglikheden foar opslach en ûnthâldbehear. Nije attributen binne tafoege om te kontrolearjen hoe't ûnthâld moat wurde tawiisd en brûkt. API tafoege foar it definiearjen en freegjen fan ûnthâldromten.
  • Funksjes ôfskreaun yn 'e OpenMP 5.0, 5.1, en 5.2 spesifikaasjes binne fuortsmiten.

Boarne: opennet.ru

Add a comment