Как установить количество процессов в mpi4py - PullRequest
4 голосов
/ 18 января 2012

Как мне установить фиксированное количество процессов в mpi4py? В других языках реализации mpi он передается в init (args) в качестве аргумента. Документация, кажется, не упоминает об этом. Кто-нибудь знает как это сделать? Программа будет запущена на обычном двухъядерном ноутбуке и кластере с 24 узлами (96 ядер), и я хотел бы эмулировать кластер на ноутбуке.

PS. Извините, если это действительно есть в документации - это довольно загадочно для кого-то новичка в mpi.

Ответы [ 2 ]

11 голосов
/ 18 января 2012

Проще всего просто использовать mpiexec (или mpirun) для запуска программы, указав желаемое количество задач MPI:

$ cat foo.py
from mpi4py import MPI

comm = MPI.COMM_WORLD
nprocs = comm.Get_size()
rank   = comm.Get_rank()

if rank == 0:
   data = 'Hello!'
   comm.send(data, dest=nprocs-1, tag=1)
elif rank == nprocs-1:
   data = comm.recv(source=0, tag=1)
   print 'Rank ', rank, ' received ', data

$ mpiexec -np 4 python foo.py
Rank  3  received  Hello!

Обратите внимание, однако, что на вашем ноутбуке возможно выполнение 96 задачне будет особенно полезным.

2 голосов
/ 18 января 2012

Учебник mpi4py делает это так:

from mpi4py import MPI    
import sys
client_script = 'my_client.py'
comm = MPI.COMM_SELF.Spawn(sys.executable, args=[client_script], maxprocs=5)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...