我很擅长使用 MPI并行流程。
我正在处理与 MASTER / SLAVE 方法相关的以下问题。
我有SIZE=500
的 2D平方数组,我需要将其分解为几个维度块:
D < SIZE
。
我应该实现每个处理器接收的主/从MPI ,然后发送回主N
块,其中N
取决于所涉及的处理器数量和子块的维D
。
我设法通过将原始数组划分为条纹来解决问题,但我不知道如何处理方块!
答案 0 :(得分:0)
为了简化您的问题,D必须是500的分隔符。现在,块的总数应为blocks = sqr(500/D)
。和N应该是n = blocks/cpus
行。
答案 1 :(得分:0)
另一个选项是使用MPI_Type_create_subarray()
来为数组的给定(子)方形/矩形创建派生数据类型。
在不利方面,此派生数据类型不能与MPI_Scatter[v]()
和MPI_Gather[v]()
等集合操作一起使用,这通常是分发/重新组装数据的“自然”MPI方式。