laufen lässt, ist zu mpi4py nagelneu. Die calculate pi example from the Tutorial geht in etwa so:, wie man einen grundlegenden mpi4py Code
Master (oder ein Elternteil oder Client) Seite:
#!/usr/bin/env python
from mpi4py import MPI
import numpy
import sys
comm = MPI.COMM_SELF.Spawn(sys.executable,
args=['cpi.py'],
maxprocs=5)
N = numpy.array(100, 'i')
comm.Bcast([N, MPI.INT], root=MPI.ROOT)
PI = numpy.array(0.0, 'd')
comm.Reduce(None, [PI, MPI.DOUBLE],
op=MPI.SUM, root=MPI.ROOT)
print(PI)
comm.Disconnect()
Arbeiter (oder Kind oder Server) Seite:
#!/usr/bin/env python
from mpi4py import MPI
import numpy
comm = MPI.Comm.Get_parent()
size = comm.Get_size()
rank = comm.Get_rank()
N = numpy.array(0, dtype='i')
comm.Bcast([N, MPI.INT], root=0)
h = 1.0/N; s = 0.0
for i in range(rank, N, size):
x = h * (i + 0.5)
s += 4.0/(1.0 + x**2)
PI = numpy.array(s * h, dtype='d')
comm.Reduce([PI, MPI.DOUBLE], None,
op=MPI.SUM, root=0)
comm.Disconnect()
Sorry für die dumme Frage, aber : Wie führe ich das? Wenn ich mpirun über die Befehlszeile ausfühle, sieht es so aus, als würde es 4 Instanzen des Eltern-Codes erstellen, nicht nur den Kind-Code. (Ich bekomme 4 Ausgaben zu STDOUT.) Wenn ich versuche, innerhalb von Python über einen Import oder eine Exec-Datei zu laufen, wird es nicht ausgeführt. Ergibt einen Fehler "parsing parameter parameter". Außerdem nehme ich an, dass der Kind-Code "cpi, py" heißt? Vielen Dank. Eine schrecklich grundlegende Frage, ich weiß. Wenn ich die Antwort gefunden hätte, würde ich Sie nicht stören.
Welche MPI-Verteilung haben Sie installiert? (Ausführung). Auch welches Betriebssystem? –
Ich finde es erstaunlich, dass das Handbuch nirgendwo erwähnt, wie man den Code tatsächlich ausführt. +1 für die Nachfrage – oarfish