Sdílet prostřednictvím


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 runtimeplá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 staticplá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

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

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

Odkaz

  • omp_set_nested