Globale Threadanzahl

Legt die Standardanzahl der parallelen Threads fest, die von jedem CPLEX-Paralleloptimierungsprogramm aufgerufen werden.

Zweck

Globale Standardthreadanzahl

API Parametername Name vor V12.6.0
C CPXPARAM_Threads CPX_PARAM_THREADS
C++ IloCplex ::Param:: Threads Threads (int)
Java IloCplex.Param.Threads Threads (int)
.NET Cplex.Param.Threads Threads (int)
OPL Threads Threads
Python parameters.threads Threads
Interaktiv Threads Threads
Kennung 1067 1067

Beschreibung

Legt die maximale maximale Anzahl paralleler Threads fest, die von jedem CPLEX-Paralleloptimierungsprogramm aufgerufen werden.

Bei einem einzigen Thread verhalten sich die parallelen Algorithmen unabhängig von den Thread-Parametereinstellungen deterministisch, d. h. der Algorithmus läuft nacheinander in einem einzigen Thread ab.

In diesem Kontext bedeutet sequenziell , dass der Algorithmus Schritt für Schritt nacheinander in einer vorhersehbaren und wiederholbaren Reihenfolge innerhalb eines einzelnen Threads ausgeführt wird. Deterministisch bedeutet, dass die wiederholte Lösung desselben Modells mit den gleichen Parametereinstellungen auf derselben Computerplattform exakt denselben Lösungsweg folgen wird, wodurch die gleiche Leistung und dieselben Werte in der Lösung erzielt werden. Die sequenzielle Ausführung ist deterministisch. Bei der Multithread-Berechnung ist eine deterministische Einstellung erforderlich, um die Synchronisation zwischen Threads zu ermöglichen. Opportunistisch führt zu einer geringeren Synchronisation zwischen Threads und bietet somit möglicherweise eine bessere Leistung beim Opfer wiederholbarer, invarianten Lösungswege und -werte bei wiederholten Ausführungen auf mehreren Threads oder mehreren Prozessoren.

Wenn dieser Parameter die Standardeinstellung 0 (null) hat und Ihre Anwendung no callbacks enthält, kann CPLEX alle verfügbaren Threads verwenden, d. h. höchstens 32 Threads oder die Anzahl der Kerne der Maschine, je nachdem, welcher Wert kleiner ist. Wenn Ihre Maschine mehr als 32 Threads bietet, können Sie sie nutzen, indem Sie den Wert dieses Parameters erhöhen.

In dem Fall, in dem Sie Callbacks verwenden, müssen Sie zwischen traditionellen Callbacks (d. h. 'Information', 'Abfrage' und 'Kontrollcallbacks') und generischen Callbacksunterscheiden. Generische Callbacks wurden in jüngerer Zeit eingeführt und bieten eine bessere Unterstützung für eine moderne parallele MIP-Optimierung.

Generische Callbacks und parallele MIP-Optimierung

Im Gegensatz zu traditionellen Callbacks hat das Vorhandensein eines generischen Rückrufs in Ihrer Anwendung keinen Einfluss auf die Anzahl der von CPLEX verwendeten Threads (d. h. parallele MIP-Suche verhält sich genauso, wie wenn keine Callbacks vorhanden sind). Wenn Sie jedoch, wie bei traditionellen Callbacks, die parallele MIP-Suche in Verbindung mit generischen Callbacks verwenden, müssen Sie sich darüber im Klaren sein, dass die Callbacks gleichzeitig aufgerufen werden können, und die Reihenfolge, in der Ihre Callbacks aus verschiedenen Threads ausgeführt werden, kann auch im deterministischen Parallelmodus nicht deterministisch sein.

Eine Beschreibung generischer Callbacks finden Sie im Artikel Generische Callbacks im CPLEX-Benutzerhandbuch.

Traditionelle Callbacks und parallele MIP-Optimierung

Wenn dieser Parameter die Standardeinstellung 0 (null) hat, werden bei einigen der traditionellen Callbacks die parallele MIP-Suche inaktiviert. Um genau zu sein, wenn Ihre Anwendung traditionelle Callbacks mit Ausnahme von Informationscallbacks enthält (d. h. die Anwendung enthält eine Abfrage, eine Diagnose oder einen Kontrollrückruf), inaktiviert CPLEX die parallele MIP-Suche und schaltet automatisch auf sequenzielle MIP-Suche. Beachten Sie jedoch, dass dies nicht ganz gleichwertig ist, um diesen Parameter auf 1 (eins) zu setzen, da die kontinuierliche Entspannung des Problems noch parallel gelöst werden könnte.

Um eine parallele MIP-Optimierung in Verbindung mit traditionellen Callbacks mit Ausnahme von Informationscallbacks zu ermöglichen, müssen Sie diesen Parameter auf einen positiven Wert setzen. Wenn Sie dies jedoch tun, müssen Sie sich darüber im Klaren sein, dass die Callbacks gleichzeitig aufgerufen werden können, und die Reihenfolge, in der Ihre Callbacks aus verschiedenen Threads ausgeführt werden, kann nicht deterministisch sein, selbst im deterministischen Parallelmodus.

Eine Beschreibung der Callbacks von Information, Abfrage, Diagnose und Steuerung finden Sie im Artikel Traditionelle Optimierungscallbacks verwenden und im Abschnitt Erweiterte MIP-Steuerschnittstelle (Erbe) im CPLEX-Benutzerhandbuch.

Tabelle 1. Werte
Wert Bedeutung
0 Automatisch: Lassen Sie CPLEX entscheiden; Standard
1 Sequenziell; Einzelthread
N Verwendet bis zu N Threads; N ist durch verfügbare Prozessoren und Prozessor-Value-Units (PVUs) begrenzt.

Siehe auch

Schalter für parallele