0

私は MPI が初めてで、プロセッサによって生成された配列がいくつかあります。各プロセッサは、長さが異なる 1 つの配列を生成しました。それらすべてを順番にマージして、プロセッサ 0 にのみ格納されている 1 つの配列にするにはどうすればよいですか。

例えば:

Processor 0: [1 1 1]
Processor 1: [2 2 2]
Processor 2: [3 3 3 3 3]
And my expected result is [1 1 1 2 2 2 3 3 3 3 3], not [1 1 1 3 3 3 3 3 2 2 2]

この問題を解決するのを手伝ってくれる人はいますか。読んでくれてありがとう:)

4

1 に答える 1

0

各ランクの寄与のサイズが事前にわかっている場合、MPI_Gatherv は単一のコレクティブでジョブを実行します。

各ランクの寄与のサイズが事前にわからない場合は、ポイント ツー ポイント操作 (MPI_Send、MPI_Probe および MPI_Recv を使用) がこれを達成する簡単な方法になります。ルートは MPI_Recv 操作をシリアル化し、操作の進行に合わせてスペースを割り当てることができます。

于 2013-09-22T02:46:37.600 に答える