2

したがって、これは単純なコード スニペットであり、4 つのアイテムを期待して 55 を取得するとは機能しません。実際には、文字列のリストを取得し、このリストを n_processes 間で分割して計算を実行したいと考えています。これはスキャッターでどのように可能ですか??

from mpi4py import MPI

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

if rank == 0:
   data = [(i+1)**2 for i in range(55)]
comm.Scatter(data, root=0)
print rank, data
4

1 に答える 1

3

基礎となる Scatter API 呼び出しを見てください。

http://www.open-mpi.org/doc/v1.5/man3/MPI_Scatter.3.php

Scatter 呼び出しは、list 引数を使用して、リストの 1 つの要素を各プロセスに送信します。リストに 55 個の要素をハードコードしましたが、4 つのプロセスしか実行していないようです。range(55)を(より適切な解決策) に変更するかrange(size)、既存のコードが正しくなるように 55 のプロセスを実行します。

于 2012-11-26T02:40:58.340 に答える