2016-03-29 1 views
1

Ich habe eine Quad-Core-CPU in meinem lokalen Rechner. Wenn ich julia alsAnzahl der Prozesse in Julia

julia -p 4 

und einem Lauf ein Skript mit Parallel-Computing laufen, mein Verständnis ist:

  • Core-1: das Skript ausgeführt wird und alle nicht-parallele Rechen + parallel worker 1
  • Core 2: Parallel Arbeiter 2
  • Core 3: Parallel Arbeiter 3
  • Core 4: parallel Arbeiter 4

Ist das korrekt?

Was passiert außerdem, wenn ich mehr Prozesse als die Anzahl der Kerne? Zum Beispiel

julia -p 8 

Ist es so etwas wie folgt?

  • Core-1: das Skript ausgeführt wird und alle nicht-parallele Rechen + parallel Arbeiter 1 + parallel Arbeiter 5
  • Core 2: Parallel Arbeiter 2 + parallel Arbeiter 6
  • Core 3: Parallel Arbeiter 3 + parallele Arbeiter 7
  • Core 4: parallel Arbeiter 4 + parallel Arbeiter 8
+2

Schließen. 'julia -p 4' startet 4 _worker_ Prozesse. Das heißt, wenn Sie 'nprocs()' ausführen, haben Sie 5. Der Prozess mit der ID 1 wird die Berechnung steuern, dann sind die Prozesse 2-5 die Arbeiter, die die parallelen Berechnungen durchführen. – spencerlyon2

Antwort

5

Sofern Sie manuell Mitarbeiter Arbeiter mit spezifischen Kernen wird der Verein sein, was auch immer Ihr Betriebssystem entscheidet, und es kann im Laufe der Zeit ändern.

3

Dies ist eine geladene Frage, aber kurz gesagt ist es nicht Julia überlassen. Es ist Aufgabe des Schedulers zu entscheiden, welche Ressourcen die Arbeit erledigen. Die Prozesse (Arbeiter) können sogar Kerne wechseln (dh Arbeiter 2 könnte auf Kern 3 starten und später auf Kern 4 weiterarbeiten). Es gibt keine Beziehung zwischen dem Arbeiter und dem Kern auf Ihrem Prozessor.

Im Allgemeinen wird ein Scheduler wahrscheinlich versuchen, einen Prozess so lange wie möglich auf demselben Kern laufen zu lassen, um die erhöhten Kosten der Kontextumschaltung zu vermeiden.