Heim > Backend-Entwicklung > Python-Tutorial > Warum bleiben meine Joblib-Worker nach dem Import von NumPy auf einem Kern hängen?

Warum bleiben meine Joblib-Worker nach dem Import von NumPy auf einem Kern hängen?

Susan Sarandon
Freigeben: 2024-10-29 19:43:29
Original
828 Leute haben es durchsucht

Why Are My Joblib Workers Stuck on One Core After Importing NumPy?

Multiprocessing-Kernaffinitätsproblem

In bestimmten Szenarien, wenn die NumPy-Bibliothek importiert und versucht wird, eine CPU-intensive Schleife mithilfe des Joblib-Moduls zu parallelisieren kann beobachtet werden, dass die der Schleife zugewiesenen Arbeitsprozesse alle auf einen einzigen Kern beschränkt sind, was Leistungssteigerungen behindert.

Dieses Problem entsteht durch die Interaktion zwischen NumPy und den zugrunde liegenden OpenBLAS-Bibliotheken, die häufig verwendet werden für Multithread-Operationen. Standardmäßig können diese Bibliotheken die Kernaffinitätseinstellungen beeinträchtigen, was dazu führt, dass alle Arbeitsprozesse demselben Kern zugewiesen werden.

Lösung: Task-Affinität zurücksetzen

Eine einfache Sache Die Lösung besteht darin, die Task-Affinität mithilfe der Funktion os.system() zurückzusetzen, nachdem die betroffenen Module importiert wurden. Durch Ausführen des Befehls os.system("taskset -p 0xff %d" % os.getpid()) wird die Kernaffinität zurückgesetzt, sodass sich die Arbeitsprozesse auf alle verfügbaren Kerne verteilen können.

OpenBLAS-CPU-Affinitäts-Reset deaktivieren

Alternativ kann das CPU-Affinitäts-Reset-Verhalten von OpenBLAS entweder zur Laufzeit oder zur Build-Zeit deaktiviert werden. Zur Laufzeit verhindert das Setzen der Umgebungsvariablen OPENBLAS_MAIN_FREE auf 1, dass die Bibliothek die Kernaffinität anpasst. Alternativ kann dieses Verhalten während des OpenBLAS-Kompilierungsprozesses durch Hinzufügen von NO_AFFINITY=1 zur Makefile.rule dauerhaft deaktiviert werden.

Das obige ist der detaillierte Inhalt vonWarum bleiben meine Joblib-Worker nach dem Import von NumPy auf einem Kern hängen?. 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