E. Chování definované implementací v jazyce C/C++ v prostředí OpenMP
Tento dodatek shrnuje chování popsané jako implementace definované v tomto rozhraní API. Každé chování se křížově odkazuje zpět na jeho popis v hlavní specifikaci.
Poznámky
Implementace je nutná k definování a zdokumentování jeho chování v těchto případech, ale tento seznam může být neúplný.
Počet vláken: Pokud je při dynamické úpravě počtu vláken zjištěna paralelní oblast a počet vláken požadovaných pro paralelní oblast je větší než počet, který může systém za běhu poskytnout, chování programu je definováno implementací (viz stránka 9).
V jazyce Visual C++ bude pro nenořenou paralelní oblast zadáno 64 vláken (maximum).
Počet procesorů: Počet fyzických procesorů, které v daném okamžiku hostují vlákna, je definován implementací (viz stránka 10).
V jazyce Visual C++ není toto číslo konstantní a řídí se operačním systémem.
Vytváření týmů vláken: Počet vláken v týmu, který spouští vnořenou paralelní oblast, je definovaný implementací (viz stránka 10).
V jazyce Visual C++ určuje toto číslo operační systém.
schedule(runtime): Rozhodnutí o plánování je odloženo do doby běhu. Typ plánu a velikost bloku dat lze vybrat za běhu nastavením
OMP_SCHEDULE
proměnné prostředí. Pokud tato proměnná prostředí není nastavená, je výsledný plán definovaný implementací (viz strana 13).V jazyce Visual C++ typ plánu nemá
static
žádnou velikost bloku.Výchozí plánování: Bez klauzule plánu je výchozí plán definovaný implementací (viz strana 13).
V jazyce Visual C++ je
static
výchozí typ plánu bez velikosti bloku dat.ATOMIC: Určuje, zda implementace nahrazuje všechny
atomic
direktivy direktivamicritical
, které mají stejný jedinečný název (viz strana 20).Pokud v jazyce Visual C++ nejsou data upravená atomem v přirozeném zarovnání nebo pokud jsou dlouhá jeden nebo dva bajty, všechny atomické operace, které vyhovují této vlastnosti, budou používat jeden kritický oddíl. V opačném případě se nebudou používat kritické oddíly.
omp_get_num_threads: Pokud uživatel explicitně nenastavil počet vláken, výchozí hodnota je definovaná implementací (viz stránka 9).
Ve Visual C++ se výchozí počet vláken rovná počtu procesorů.
omp_set_dynamic: Výchozí nastavení dynamické úpravy vlákna je definováno implementací.
Ve Visual C++ je
FALSE
výchozí hodnota .omp_set_nested: Pokud je povolený vnořený paralelismus, definuje se počet vláken použitých k provádění vnořených paralelních oblastí.
V jazyce Visual C++ je počet vláken určen operačním systémem.
OMP_SCHEDULE proměnná prostředí: Výchozí hodnota této proměnné prostředí je definována implementací.
V jazyce Visual C++ typ plánu nemá
static
žádnou velikost bloku.OMP_NUM_THREADS proměnné prostředí: Pokud pro proměnnou prostředí není zadána
OMP_NUM_THREADS
žádná hodnota, nebo pokud zadaná hodnota není kladné celé číslo nebo pokud je hodnota větší než maximální počet vláken, které může systém podporovat, je počet vláken, která se mají použít, definován implementace.Pokud je v jazyce Visual C++ zadaná hodnota nula nebo menší, počet vláken se rovná počtu procesorů. Pokud je hodnota větší než 64, je počet vláken 64.
OMP_DYNAMIC proměnná prostředí: Výchozí hodnota je definována implementací.
Ve Visual C++ je
FALSE
výchozí hodnota .