Python-Multiprocessing verwendet nicht alle Cores auf RHEL6

8

Ich habe versucht, das Python-Multiprocessing-Paket zu verwenden, um einige Physiksimulationen zu beschleunigen, die ich mache, indem ich die mehreren Kerne meines Computers ausnutze.

Ich habe bemerkt, dass wenn ich meine Simulation durchführe, höchstens 3 der 12 Kerne benutzt werden. In der Tat, wenn ich die Simulation starte, verwendet es zunächst 3 der Kerne, und nach einer Weile geht es zu 1 Kern. Manchmal werden von Anfang an nur ein oder zwei Kerne verwendet. Ich konnte nicht herausfinden warum (ich ändere im Grunde nichts, außer ein paar Terminalfenster zu schließen (ohne aktive Prozesse)). (Das Betriebssystem ist Red Hat Enterprise Linux 6.0, die Python-Version ist 2.6.5.)

Ich experimentierte, indem ich die Anzahl der Chunks (zwischen 2 und 120) variierte, in die die Arbeit aufgeteilt wurde (d. h. die Anzahl der Prozesse, die erstellt wurden), aber dies scheint keine Auswirkungen zu haben.

Ich habe online nach Informationen zu diesem Problem gesucht und die meisten Fragen auf dieser Seite gelesen (zB one , zwei ), konnte aber keine Lösung finden .

(Edit: Ich habe gerade versucht, den Code unter Windows 7 auszuführen und alle verfügbaren Kerne sind in Ordnung. Ich möchte dies jedoch immer noch für RHEL beheben.)

Hier ist mein Code (mit der Physik weggelassen):

%Vor%

(Tatsächlich basiert der Code auf Alex Martellis Antwort hier .)

Edit 2: Irgendwann hat sich das Problem gelöst, ohne dass ich es verstanden habe. Ich habe den Code nicht geändert und bin mir auch nicht bewusst, dass ich irgendetwas in Bezug auf das Betriebssystem geändert habe. Trotzdem werden jetzt alle Kerne benutzt, wenn ich den Code ausführe. Vielleicht wird das Problem später wieder auftauchen, aber im Moment entscheide ich mich, es nicht weiter zu untersuchen, da es funktioniert. Danke an alle für die Hilfe.

    
the.real.gruycho 03.10.2012, 14:23
quelle

1 Antwort

1

Ich lief Ihr Beispiel auf Ubuntu 12.04 x64 (kernel 3.2.0-32-generic) mit Python-Version 2.7.3 x64 auf i7 Prozessor und alle 8 Kerne vom System gemeldet wurden vollständig überlastet (basierend auf htop Beobachtung), so Ihr Problem, Sir, basiert auf Betriebssystemimplementierung und Code ist gut.

    
WBAR 06.10.2012 06:25
quelle