F. Nové funkce a vyjasnění ve verzi 2.0
Tento dodatek shrnuje klíčové změny specifikace C/C++ OpenMP při přechodu z verze 1.0 na verzi 2.0. Do specifikace jsou přidány nové funkce:
Čárky jsou povoleny ve direktivách OpenMP.
Přidání klauzule
num_threads
. Tato klauzule umožňuje uživateli požádat o určitý počet vláken pro paralelní konstruktor.Direktiva threadprivate byla rozšířena tak, aby přijímala statické proměnné oboru bloku.
Matice délky proměnné C99 jsou úplné typy a lze je zadat kdekoli, kde jsou povoleny úplné typy, například v seznamech
private
,firstprivate
alastprivate
klauzulích (viz bod 2.7.2).Privátní proměnnou v paralelní oblasti lze vnořené direktivě označit jako privátní .
Klauzule
copyprivate
byla přidána. Poskytuje mechanismus použití privátní proměnné k vysílání hodnoty od jednoho člena týmu ostatním členům. Je to alternativa k použití sdílené proměnné pro hodnotu při poskytování takové sdílené proměnné by byla obtížná (například v rekurzi vyžadující jinou proměnnou na každé úrovni). Klauzule copyprivate se může objevit pouze v direktivěsingle
.Přidání rutin časování omp_get_wtick a omp_get_wtime podobné rutinám MPI. Tyto funkce jsou nezbytné pro časování hodin zdí.
Byla přidána příloha se seznamem chování definovaných implementací v jazyce C/C++ OpenMP. Implementace je nutná k definování a zdokumentování jeho chování v těchto případech.
Následující změny slouží k objasnění nebo správnosti funkcí v předchozí specifikaci rozhraní OpenMP API pro C/C++:
Vysvětlili jsme, že chování omp_set_nested a omp_set_dynamic při
omp_in_parallel
vrácení nenulové hodnoty není definováno.Upřesnění vnoření direktiv při použití vnořeného paralelně
Funkce inicializace zámku a zničení zámku lze volat v paralelní oblasti.
Do dodatku A byly přidány nové příklady.