Parallel programming standard OpenMP 6.0 nga gipatik

Pagkahuman sa tulo ka tuig nga pag-uswag, usa ka set sa OpenMP 6.0 (Open Multi-Processing) nga mga detalye ang gipatik, nga nagtino sa mga API ug mga pamaagi alang sa pagpadapat sa parallel nga mga pamaagi sa programming alang sa C, C ++ ug Fortran nga mga pinulongan sa multi-core ug hybrid (CPU+GPU / DSP) nga mga sistema nga adunay gipaambit nga memorya ug mga bloke sa vectorization (SIMD). Ang inisyal nga suporta alang sa pinili nga OpenMP 6.0 nga mga bahin gilauman nga maapil sa LLVM/Clang 20 ug GCC 15 nga mga pagpagawas.

Daghang mga pagbag-o sa OpenMP 6.0:

  • Ang proseso sa mga buluhaton sa pagprograma gipasayon, nga nagpatin-aw sa mga independenteng bahin sa programa nga mahimong ipatuman dungan sa ubang mga bahin.
    • Gidugang ang abilidad sa paghimo sa mga buluhaton sa libre nga ahente nga mga hilo nga wala gihigot sa mga grupo sa mga hilo (team) nga nagpatuman sa managsama nga mga rehiyon (parallel nga rehiyon, usa ka bloke sa code nga gipatuman sa daghang mga hilo).
    • Gihatag ang suporta alang sa pag-save sa usa ka taskgraph, nga naghubit sa mga dependency tali sa mga buluhaton ug ang han-ay kung diin gipatuman ang mga buluhaton, aron mapauswag ang kaepektibo sa sunod nga replay.
    • Usa ka mekanismo alang sa transparent nga mga buluhaton ang gipatuman aron pasimplehon ang pagdumala sa dependency ug awtomatik nga makontrol ang pagpatuman sa mga buluhaton sa bata.
  • Gipalapad nga suporta alang sa mga aparato sa pag-compute nga magamit sa paghimo sa parehas nga mga buluhaton (CPU, GPU, DSP, ug uban pa).
    • Gidugang ang bag-ong array syntax aron tugotan ang "workdistribute" nga direktiba nga gamiton sa pagbahin sa pagproseso sa array tali sa lain-laing mga yunit sa trabaho.
    • Ang mga kontrol sa alokasyon sa memorya gipauswag aron mas sayon ​​ang pagdumala sa mga variable diin ang memorya gigahin nga dinamikong paagi.
    • Suporta alang sa mga hiyas nga nagtino kung giunsa ang pag-apod-apod sa datos tali sa mga aparato pinaagi sa default gipalapdan.
    • Gipasimple nga code sa pagsulat alang sa asynchronous nga pagbalhin sa datos sa dugang nga mga aparato sa kompyuter (GPU).
    • Gipauswag ang pagdumala sa memorya ug ang pagbugkos niini sa mga aparato sa kompyuter.
    • Gidugang ang "groupprivate" nga direktiba aron mahatagan ang memorya sa usa ka grupo sa mga thread nga nagdagan sa usa ka piho nga aparato sa kompyuter.
  • Ang pagprograma sa pipila ka mga matang sa mga pagbag-o sa loop gipasimple, sama sa paghiusa sa daghang mga loop, pag-usab sa han-ay sa mga nested loop, ug pag-reverse sa mga loop.
  • Usa ka bag-ong operasyon sa induction ang gidugang aron ma-organisar ang parallelization sa mga loop sa yano nga mga kalkulasyon sa aritmetika ug mga operasyon sa gumagamit nga nagdepende sa nangaging mga kantidad.
  • Gidugang ang bug-os nga suporta para sa parallelization sa mga programa nga gisulat gamit ang C23 standards (lakip ang attribute syntax), Fortran 2023 ug C++23. Gidugang bag-ong mga hiyas alang sa C/C++.
  • Gipalambo nga storage ug memory management nga kapabilidad. Ang bag-ong mga hiyas gidugang aron makontrol kung giunsa ang paggahin ug paggamit sa memorya. Gidugang ang API alang sa pagtino ug pagpangutana sa mga espasyo sa memorya.
  • Ang mga bahin nga wala magamit sa OpenMP 5.0, 5.1, ug 5.2 nga mga detalye gitangtang.

Source: opennet.ru

Idugang sa usa ka comment