Freigeben über


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 runtimeaufweisen. 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

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

  • num_threads-Klausel
  • omp_set_num_threads-Funktion
  • omp_set_dynamic-Funktion

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 TRUEist, 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 FALSEist, ist die dynamische Anpassung deaktiviert. Die Standardbedingung ist implementierungsdefiniert.

Beispiel:

setenv OMP_DYNAMIC TRUE

Querverweise

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

Querverweis

  • omp_set_nested-Funktion