複数のスレーブノードと1つのマスターノードを含むプロジェクトに取り組んでいます。ある時点で、さまざまなスレーブノード(マスターノードもスレーブノードとして扱うことができます)からマスターノードにデータを収集する必要があります。データはどのタイプでもかまいませんが、unsignedintであると仮定しましょう。そして、それがスレーブノードでのデータの見え方です。
node0:| branch01 | branch02 | branch03 | branch04|...。
node1:| Chunk11 | Chunk12 | Chunk13 | Chunk14|...。
..。
noden:| chunkn1 | chunkn2 | branchn3 | chunkn4|...。
データはすべてnode0に収集され、次のようになります。
node0:| branch01 | branch11 | branch21 | .... | branchn1 | branch02 | branch12 | ... | branchn2 | ... | branchnm |
つまり、各ノードの最初のチャンクを連結し、次に各ノードの2番目のチャンクを連結します...
MPI_Gathervを使用してこれを実装する方法がわかりません。これは、chunkijごとにサイズが異なり、各ノードは独自のチャンクサイズと開始インデックスのみを認識し、他のノードの情報は認識しないためです。
私はMPIにあまり詳しくないので、さまざまなノードから1つのノードにさまざまなサイズのデータを収集できるAPIはありますか?