Post tri jaroj da evoluo, aro de OpenMP 6.0 (Malferma Multi-Processing) specifoj estis publikigita, difinante API-ojn kaj metodojn por apliki paralelajn programajn metodojn por C, C++ kaj Fortran-lingvoj sur multkernaj kaj hibridaj (CPU+GPU). /DSP) sistemoj kun komuna memoro kaj blokvektorizado (SIMD). Komenca subteno por elektitaj funkcioj de OpenMP 6.0 estas atendita esti inkluzivita en la eldonoj de LLVM/Clang 20 kaj GCC 15.
Gravaj ŝanĝoj en OpenMP 6.0:
- La procezo de programado de taskoj estis simpligita, difinante sendependajn partojn de la programo, kiuj povas esti efektivigitaj paralele kun aliaj partoj.
- Aldonita la kapablo plenumi taskojn en liber-agentaj fadenoj, kiuj ne estas ligitaj al grupoj de fadenoj (teamoj), kiuj efektivigas paralelajn regionojn (paralela regiono, bloko de kodo efektivigita en pluraj fadenoj).
- Subteno estas disponigita por konservado de taskografo, kiu difinas dependecojn inter taskoj kaj la ordo en kiu taskoj estas efektivigitaj, por plibonigi la efikecon de posta ripeto.
- Mekanismo por travideblaj taskoj estis efektivigita por simpligi dependecadministradon kaj aŭtomate kontroli la plenumon de infanaj taskoj.
- Pligrandigita subteno por komputikaj aparatoj, kiuj povas esti uzataj por plenumi paralelajn taskojn (CPU, GPU, DSP, ktp.).
- Aldonita nova tabelsintakso por permesi al la "workdistribute" direktivo esti uzata por dividi tabel-pretigon inter malsamaj laborunuoj.
- Memoraj asignokontroloj estis plifortigitaj por faciligi administri variablojn por kiuj memoro estas dinamike asignita.
- Subteno por atributoj kiuj determinas kiel datumoj estas distribuitaj inter aparatoj defaŭlte estis vastigita.
- Simpligita skribkodo por nesinkrona transdono de datumoj al pliaj komputikaj aparatoj (GPUoj).
- Plibonigita memoradministrado kaj ĝia ligado al komputikaj aparatoj.
- Aldonita "groupprivate" direktivo por atribui memoron al grupo de fadenoj kurantaj sur specifa komputika aparato.
- La programado de certaj specoj de buklotransformoj estis simpligita, kiel ekzemple kunfandado de multoblaj bukloj, ŝanĝante la ordon de nestitaj bukloj, kaj inversigante buklojn.
- Nova indukta operacio estis aldonita por organizi paraleligon en bukloj de simplaj aritmetikaj kalkuloj kaj uzantoperacioj kiuj dependas de antaŭaj valoroj.
- Aldonita plena subteno por paraleligo de programoj skribitaj uzante la C23-normojn (inkluzive de atributsintakso), Fortran 2023 kaj C++23. Aldonitaj novaj atributoj por C/C++.
- Plifortigitaj stokado kaj memoradministradkapabloj. Novaj atributoj estis aldonitaj por kontroli kiel memoro devus esti asignita kaj uzata. Aldonita API por difini kaj pridemandi memorspacojn.
- Trajtoj malrekomenditaj en la specifoj de OpenMP 5.0, 5.1, kaj 5.2 estis forigitaj.
fonto: opennet.ru
