带有2D阵列的MPI Master / Slave

时间:2017-11-28 10:46:30

标签: arrays parallel-processing mpi master-slave

我很擅长使用 MPI并行流程

我正在处理与 MASTER / SLAVE 方法相关的以下问题。

我有SIZE=500 2D平方数组,我需要将其分解为几个维度块:

D < SIZE

我应该实现每个处理器接收的主/从MPI ,然后发送回主N块,其中N取决于所涉及的处理器数量和子块的维D

我设法通过将原始数组划分为条纹来解决问题,但我不知道如何处理方块!

2 个答案:

答案 0 :(得分:0)

为了简化您的问题,D必须是500的分隔符。现在,块的总数应为blocks = sqr(500/D)。和N应该是n = blocks/cpus行。

恕我直言最简单的方法是从数组中创建一个DxD元素的正方形,并将该数据块发送到客户端。根据语言和方法,您可以构建小对象并将它们发送到客户端,或者只是复制整个矩阵并发送块的坐标。

答案 1 :(得分:0)

另一个选项是使用MPI_Type_create_subarray()来为数组的给定(子)方形/矩形创建派生数据类型。

在不利方面,此派生数据类型不能与MPI_Scatter[v]()MPI_Gather[v]()等集合操作一起使用,这通常是分发/重新组装数据的“自然”MPI方式。