Sono nuovo di zecca per mpi4py. Il calculate pi example from the Tutorial va in questo modo:come eseguire un codice mpi4py di base
Master (o un genitore, o client) lato:
#!/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()
Worker (o un bambino, o server) side:
#!/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()
Scusate per la domanda stupida, ma : Come eseguo questo? Se eseguo mpirun dalla riga di comando, sembra che stia creando 4 istanze del codice padre, non solo il codice figlio. (Ottengo 4 output su STDOUT). Se provo a eseguire Python tramite un'importazione o un file exec, non verrà eseguito. Fornisce un errore "errore durante l'analisi dei parametri". Inoltre, presumo che il codice figlio sia denominato "cpi, py"? Grazie. Una domanda orribilmente semplice, lo so. Se potessi aver trovato la risposta, non ti disturberei ragazzi.
Quale distribuzione MPI è stata installata? (versione). Inoltre, quale sistema operativo? –
Trovo sorprendente che il manuale non menzioni in alcun modo come eseguire effettivamente il codice. +1 per chiedere – oarfish