4. Proměnné prostředí
Tato kapitola popisuje proměnné prostředí rozhraní API OpenMP C a C++ (nebo podobné mechanismy specifické pro platformu), které řídí provádění paralelního kódu. Názvy proměnných prostředí musí být velkými písmeny. Přiřazené hodnoty nerozlišují malá a velká písmena a můžou mít počáteční a koncové prázdné znaky. Změny hodnot po spuštění programu se ignorují.
Proměnné prostředí jsou následující:
- OMP_SCHEDULE nastaví typ plánu běhu a velikost bloku dat.
- OMP_NUM_THREADS nastaví počet vláken, která se mají použít během provádění.
- OMP_DYNAMIC povolí nebo zakáže dynamické úpravy počtu vláken.
- OMP_NESTED povolí nebo zakáže vnořený paralelismus.
Příklady v této kapitole ukazují, jak mohou být tyto proměnné nastaveny v prostředích prostředí csh (Unix C Shell). V prostředí Korn Shell a DOS jsou akce podobné:
csh:
setenv OMP_SCHEDULE "dynamic"
Ksh:
export OMP_SCHEDULE="dynamic"
DOS:
set OMP_SCHEDULE="dynamic"
4.1 OMP_SCHEDULE
OMP_SCHEDULE
se vztahuje pouze na for
direktivy parallel for
, které mají typ runtime
plánu . Typ plánu a velikost bloku pro všechny takové smyčky lze nastavit za běhu. Nastavte tuto proměnnou prostředí na libovolný rozpoznaný typ plánu a na volitelný chunk_size.
Pro for
direktivy parallel for
, které mají jiný typ plánu než runtime
, OMP_SCHEDULE
se ignoruje. Výchozí hodnota této proměnné prostředí je definována implementací. Pokud je nastaven volitelný chunk_size , musí být hodnota kladná. Pokud chunk_size není nastavená, předpokládá se hodnota 1, s výjimkou případů, kdy je static
plán . static
Pro plán je výchozí velikost bloku nastavena na prostor iterace smyčky dělený počtem vláken použitých ve smyčce.
Příklad:
setenv OMP_SCHEDULE "guided,4"
setenv OMP_SCHEDULE "dynamic"
Křížové odkazy
- for – direktiva
- paralelně pro direktivu
4.2 OMP_NUM_THREADS
Proměnná OMP_NUM_THREADS
prostředí nastaví výchozí počet vláken, která se mají použít během provádění. OMP_NUM_THREADS
je ignorována, pokud je toto číslo explicitně změněno voláním rutiny omp_set_num_threads
knihovny. Je také ignorována, pokud existuje explicitní num_threads
klauzule pro direktivu parallel
.
Hodnota OMP_NUM_THREADS
proměnné prostředí musí být kladné celé číslo. Jeho účinek závisí na tom, zda je povolena dynamická úprava počtu vláken. Komplexní sadu pravidel týkajících se interakce mezi OMP_NUM_THREADS
proměnnou prostředí a dynamickým nastavením vláken najdete v části 2.3.
Počet vláken, která se mají použít, je definován implementací, pokud:
OMP_NUM_THREADS
proměnná prostředí není zadaná,- zadaná hodnota není kladné celé číslo nebo
- hodnota je větší než maximální počet vláken, které může systém podporovat.
Příklad:
setenv OMP_NUM_THREADS 16
Křížové odkazy
- klauzule num_threads
- omp_set_num_threads
- omp_set_dynamic
4.3 OMP_DYNAMIC
OMP_DYNAMIC
Proměnná prostředí povolí nebo zakáže dynamické úpravy počtu vláken dostupných pro provádění paralelních oblastí. OMP_DYNAMIC
je ignorována, pokud je dynamická úprava explicitně povolena nebo zakázána voláním omp_set_dynamic
rutiny knihovny. Jeho hodnota musí být TRUE
nebo FALSE
.
Pokud OMP_DYNAMIC
je nastavena hodnota TRUE
, počet vláken, která se používají pro spouštění paralelních oblastí, může být upraven prostředím modulu runtime, aby bylo nejlepší použít systémové prostředky. Pokud OMP_DYNAMIC
je nastavená hodnota FALSE
, je dynamická úprava zakázaná. Výchozí podmínka je definována implementací.
Příklad:
setenv OMP_DYNAMIC TRUE
Křížové odkazy
- Paralelní oblasti
- omp_set_dynamic
4.4 OMP_NESTED
OMP_NESTED
Proměnná prostředí povolí nebo zakáže vnořený paralelismus, pokud není povolený nebo zakázaný vnořený paralelismus voláním omp_set_nested
rutiny knihovny. Pokud OMP_NESTED
je nastavená hodnota TRUE
, je povolen vnořený paralelismus. Pokud OMP_NESTED
je nastavená hodnota FALSE
, je vnořený paralelismus zakázán. Výchozí hodnota je FALSE
.
Příklad:
setenv OMP_NESTED TRUE