2013-04-16 58 views
4

我在C中使用MPI。我能夠將數組的一部分分配給不同的處理器。不同的處理器完成了我想要的所有操作。現在我處於想要將所有處理器中的所有子陣列組合成一個大陣列的時刻。例如,如果不同的處理器有子arrrays如下:MPI:如何將多個處理器中的子陣列連接成一個更大的單個陣列

Processor 1: 
0 1 1 0 
0 0 1 0 

Processor 2: 
0 0 1 0 
1 1 0 1 

Processor 3: 
1 1 0 0 
1 1 1 1 

... 

我希望能夠結合,或「串聯」,所有的子陣列在一起。例如,我想大陣爲:

0 1 1 0 
0 0 1 0 
0 0 1 0 
1 1 0 1 
1 1 0 0 
1 1 1 1 
... 

我試圖用MPI_Reduce,但我無法找到一個操作做我想做的事。是否有另一種MPI方法可以用來實現我正在尋找的?

回答

1

您正在尋找MPI_Gather:

每個進程(包括根進程)將其發送緩衝區的內容,以根進程。根進程接收消息並按等級順序存儲它們。

對於文檔和實例,參見herehereMPI 2.2 Standard中的第5.5節也有示例。

相關問題