3.1.7 omp_set_dynamic-Funktion
Die omp_set_dynamic-Funktion aktiviert oder deaktiviert dynamische Anpassung der Anzahl von Threads, die für die Ausführung paralleler Bereichen verfügbar sind. Es wird folgendes Format verwendet:
#include <omp.h>
void omp_set_dynamic(int dynamic_threads);
Wenn dynamic_threads auf einen Wert ungleich 0 (null) ergibt, wird die Anzahl von Threads, die zum Ausführen von folgenden parallelen Bereichen verwendet werden, automatisch von der Laufzeitumgebung auf Systemressourcen verwenden Bestes angepasst werden. Folglich ist die Anzahl der Threads, die vom Benutzer angegeben werden, die maximale Threadanzahl. Die Anzahl von Threads im Team, das einen parallelen Bereich ausgeführt wird, bleibt für die Dauer des parallelen Bereichs fest und wird von der omp_get_num_threads-Funktion gemeldet.
Wenn dynamic_threads auf 0 (null) ergibt, wird die dynamische Anpassung deaktiviert.
Diese Funktion besitzt die Auswirkungen, die oben beschriebenen wenn sie von einem Teil des Programms aufgerufen wird, in dem die omp_in_parallel-Funktion (null) zurückgibt. Wenn sie für einen Teil des Programms aufgerufen wird, in dem die omp_in_parallel-Funktion einen Wert ungleich 0 (null) zurückgibt, ist das Verhalten dieser Funktion nicht definiert.
Ein Aufruf von omp_set_dynamic hat Vorrang vor der OMP_DYNAMIC Umgebungsvariablen.
Der Standardwert für die dynamische Anpassung von Threads wird Implementierung-definiert. Daher sollten Benutzercodes, die von einer bestimmten Anzahl von Threads für eine ordnungsgemäße Ausführung abhängen, dynamische Threads explizit deaktivieren. Implementierungen müssen nicht die Möglichkeit zu geben, die Anzahl der Threads dynamisch anpassen, aber sie sind erforderlich, um die Schnittstelle bereitzustellen, um Portabilität über allen Plattformen zu unterstützen.
Querverweise:
omp_get_num_threads-Funktion finden Abschnitt 3.1.2 auf Seite 37.
OMP_DYNAMIC Umgebungsvariablen finden Abschnitt 4.3 auf Seite 49.
omp_in_parallel-Funktion finden 3.1.6 Abschnitt auf Seite 38.