Heim > Backend-Entwicklung > Python-Tutorial > Warum bleibt die Multiverarbeitung auf einem einzelnen Kern stehen, wenn NumPy importiert wird?

Warum bleibt die Multiverarbeitung auf einem einzelnen Kern stehen, wenn NumPy importiert wird?

Patricia Arquette
Freigeben: 2024-10-29 18:19:57
Original
251 Leute haben es durchsucht

Why Does Multiprocessing Stall on a Single Core When NumPy Is Imported?

Warum Multiprocessing auf einem einzelnen Kern blockiert, wenn NumPy importiert wird

Beim Versuch, eine CPU-intensive Schleife mithilfe von joblib zu parallelisieren, kann es zu Problemen kommen Ein Problem, bei dem alle Arbeitsprozesse demselben Kern zugewiesen sind, was zu keinem Leistungsgewinn führt. Dies liegt daran, dass bestimmte Python-Module, einschließlich NumPy, die Kernaffinität beim Import manipulieren.

Ursache:

NumPy verknüpft sich mit Multithread-OpenBLAS-Bibliotheken, was die Kernaffinität beeinträchtigt Einstellungen.

Lösung:

Um dieses Problem zu beheben, setzen Sie die Aufgabenaffinität mit dem folgenden Befehl zurück:

<code class="python">os.system("taskset -p 0xff %d" % os.getpid())</code>
Nach dem Login kopieren

Platzieren Sie diese Zeile nach dem Import das Modul, in dem das Problem auftritt. Dies erzwingt, dass der Prozess auf allen verfügbaren Kernen ausgeführt wird.

Alternative Lösungen:

  • Umgebungsvariable: Legen Sie OPENBLAS_MAIN_FREE (oder GOTOBLAS_MAIN_FREE) fest ) Umgebungsvariable zur Laufzeit auf 1 setzen, um das Verhalten von OpenBLAS beim Zurücksetzen der CPU-Affinität zu deaktivieren.
  • Änderung zur Build-Zeit: Deaktivieren Sie das Zurücksetzen der CPU-Affinität dauerhaft, indem Sie die Makefile.rule so ändern, dass sie eingeschlossen wird die Zeile NO_AFFINITY=1 beim Kompilieren von OpenBLAS aus dem Quellcode.

Das obige ist der detaillierte Inhalt vonWarum bleibt die Multiverarbeitung auf einem einzelnen Kern stehen, wenn NumPy importiert wird?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage