1
コード:なぜ(収集)が失敗しますか?
#mpiexec -n 2 python3 gather.py
from mpi4py import MPI
comm = MPI.COMM_WORLD
rank = comm.Get_rank()
a = 1
comm.barrier()
b = comm.gather(a, root=rank)
print("b:", b, rank)
comm.barrier()
出力すべきである:
B:[1,1]、0
B:[1,1]、1
しかしプログラムは何も印刷せず、終了しません。その理由は何ですか?どのようにして目的の出力を達成できますか?
は、私が(彼らはすべてのデータを送信するために場所を知っているように)_every_プロセスが同じルートを指定する必要があることを_think_。今のところ、すべてのプロセスがルートとして自分自身を指定しているので、それらすべては、彼らがレシーバだとちょうどそれらにデータを送信するために誰かを待ってそこに座っていると思います。 – mgilson
@mgilsonそれは論理的に聞こえる。あなたは望みの結果を達成することが他にどれほどあるか知っていますか?私はAllGather()btwを使いたくありません。 – SpiderRico
私は望ましい結果が_is_何に依存だと思います。通常、他のプロセスのすべてのデータを指定されたプロセスに集めるという考え方です。データを収集するプロセスを知っていますか? – mgilson