4. Umgebungsvariablen
In diesem Kapitel werden die OpenMP C- und C++-API-Umgebungsvariablen (oder ähnliche plattformspezifische Mechanismen) beschrieben, die die Ausführung von parallelen Code steuern. Die Namen von Umgebungsvariablen müssen Großbuchstaben sein. Bei den ihnen zugewiesenen Werten wird die Groß-/Kleinschreibung nicht beachtet und kann führendes und nachfolgendes Leerzeichen aufweisen. Änderungen an den Werten, nachdem das Programm gestartet wurde, werden ignoriert.
Die Umgebungsvariablen sind wie folgt:
- OMP_SCHEDULE legt den Laufzeitzeitplantyp und die Blockgröße fest.
- OMP_NUM_THREADS legt die Anzahl der Threads fest, die während der Ausführung verwendet werden sollen.
- OMP_DYNAMIC aktiviert oder deaktiviert die dynamische Anpassung der Anzahl der Threads.
- OMP_NESTED aktiviert oder deaktiviert geschachtelte Parallelität.
Die Beispiele in diesem Kapitel veranschaulichen nur, wie diese Variablen in Unix-C-Shell-Umgebungen (csh) festgelegt werden können. In den Umgebungen Korn shell und DOS sind die Aktionen ähnlich:
Csh:
setenv OMP_SCHEDULE "dynamic"
Ksh:
export OMP_SCHEDULE="dynamic"
DOS:
set OMP_SCHEDULE="dynamic"
4.1 OMP_SCHEDULE
OMP_SCHEDULE
gilt nur für for
und parallel for
Direktiven, die den Zeitplantyp runtime
aufweisen. Der Zeitplantyp und die Blockgröße für alle solchen Schleifen können zur Laufzeit festgelegt werden. Legen Sie diese Umgebungsvariable auf einen beliebigen erkannten Zeitplantyp und auf eine optionale chunk_size fest.
Für for
und parallel for
Direktiven mit einem anderen Zeitplantyp als runtime
, OMP_SCHEDULE
wird ignoriert. Der Standardwert für diese Umgebungsvariable ist implementierungsdefiniert. Wenn die optionale chunk_size festgelegt ist, muss der Wert positiv sein. Wenn chunk_size nicht festgelegt ist, wird ein Wert von 1 angenommen, es sei denn, der Zeitplan ist static
. Bei einem static
Zeitplan wird die Standardgröße des Abschnitts auf den Iterationsbereich der Schleife festgelegt, dividiert durch die Anzahl der Threads, die auf die Schleife angewendet wurden.
Beispiel:
setenv OMP_SCHEDULE "guided,4"
setenv OMP_SCHEDULE "dynamic"
Querverweise
- für direktive
- Parallel zur Direktive
4.2 OMP_NUM_THREADS
Die Umgebungsvariable OMP_NUM_THREADS
legt die Standardanzahl der Threads fest, die während der Ausführung verwendet werden sollen. OMP_NUM_THREADS
wird ignoriert, wenn diese Nummer explizit durch Aufrufen der omp_set_num_threads
Bibliotheksroutine geändert wird. Es wird auch ignoriert, wenn eine explizite num_threads
Klausel für eine parallel
Direktive vorhanden ist.
Der Wert der OMP_NUM_THREADS
Umgebungsvariable muss eine positive ganze Zahl sein. Der Effekt hängt davon ab, ob die dynamische Anpassung der Anzahl der Threads aktiviert ist. Eine umfassende Reihe von Regeln zur Interaktion zwischen der OMP_NUM_THREADS
Umgebungsvariable und der dynamischen Anpassung von Threads finden Sie in Abschnitt 2.3.
Die Anzahl der zu verwendenden Threads ist implementierungsdefiniert, wenn:
- die
OMP_NUM_THREADS
Umgebungsvariable nicht angegeben ist, - Der angegebene Wert ist keine positive ganze Zahl oder
- Der Wert ist größer als die maximale Anzahl von Threads, die vom System unterstützt werden können.
Beispiel:
setenv OMP_NUM_THREADS 16
Querverweise
4.3 OMP_DYNAMIC
Die OMP_DYNAMIC
Umgebungsvariable aktiviert oder deaktiviert die dynamische Anpassung der Anzahl der Threads, die für die Ausführung paralleler Bereiche verfügbar sind. OMP_DYNAMIC
wird ignoriert, wenn die dynamische Anpassung durch Aufrufen der omp_set_dynamic
Bibliotheksroutine explizit aktiviert oder deaktiviert wird. Der Wert muss sein TRUE
oder FALSE
.
Wenn dieser Wert auf OMP_DYNAMIC
festgelegt TRUE
ist, kann die Anzahl der Threads, die für die Ausführung paralleler Regionen verwendet werden, von der Laufzeitumgebung angepasst werden, um Systemressourcen optimal zu verwenden. Wenn OMP_DYNAMIC
dieser Wert auf "Dynamische Anpassung" festgelegt FALSE
ist, ist die dynamische Anpassung deaktiviert. Die Standardbedingung ist implementierungsdefiniert.
Beispiel:
setenv OMP_DYNAMIC TRUE
Querverweise
- Parallele Regionen
- omp_set_dynamic-Funktion
4.4 OMP_NESTED
Die OMP_NESTED
Umgebungsvariable aktiviert oder deaktiviert geschachtelte Parallelität, es sei denn, geschachtelte Parallelität wird durch Aufrufen der omp_set_nested
Bibliotheksroutine aktiviert oder deaktiviert. Wenn OMP_NESTED
diese Option auf TRUE
"Geschachtelte Parallelität" festgelegt ist, ist dies aktiviert. Wenn OMP_NESTED
diese Option auf FALSE
"Geschachtelte Parallelität" festgelegt ist, ist dies deaktiviert. Der Standardwert ist FALSE
.
Beispiel:
setenv OMP_NESTED TRUE