Trotz Versuchen, OMP_NUM_THREADS=1 festzulegen, kann Numpy in bestimmten Situationen weiterhin mehr als einen Thread verwenden. Um die Ursache dieses Problems zu ermitteln und eine gewünschte Thread-Anzahl von 1 für die Matrixmultiplikation zu erreichen, untersuchen wir die Umgebungsvariablen, die die Thread-Nutzung steuern.
Numpys Konfiguration, abrufbar über numpy.show_config(), verrät die Verwendung der BLAS-Bibliothek (Basic Linear Algebra Subroutines), die als Rechenmaschine dient. Allerdings kann es schwierig sein, die von Numpy verwendete spezifische BLAS-Implementierung zu identifizieren.
Um die Anzahl der in BLAS verwendeten Threads zu begrenzen, können wir vor der Ausführung des Skripts Umgebungsvariablen festlegen. Zu den häufig verwendeten Bibliotheken gehören OpenBLAS, MKL (Intel Math Kernel Library) und NUMEXPR:
export MKL_NUM_THREADS=1 export NUMEXPR_NUM_THREADS=1 export OMP_NUM_THREADS=1
Denken Sie daran, dass es wichtig ist, diese Variablen festzulegen, bevor Sie das Skript ausführen. Wenn weiterhin mehrere Threads vorhanden sind, kann dies darauf hindeuten, dass Multithreading aus einer anderen Quelle eingeführt wurde, beispielsweise aus einer zusätzlichen Bibliothek oder einem Code in Ihrem Skript.
Das obige ist der detaillierte Inhalt vonWie kann ich die Thread-Auslastung von Numpy begrenzen, wenn OMP_NUM_THREADS=1 fehlschlägt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!