我需要使用MPI编程并行块矩阵计算(逐个元素)。我在行方式分配之前编程到节点进行计算。在当前的问题中,我需要根据结果矩阵的元素划分任务。
我一直在尝试如何将数据分发到节点但尚未达到解决方案。能否帮助我理解如何做到这一点的逻辑?
答案 0 :(得分:0)
让我们通过这个向后工作。我的符号来自A * B = C. C的每个元素是从A的相应行和B的列构建的.A(i,0:n)* B(0:n,j)= C(i,j)。因此,对于C的每个元素,您将需要一行A和一列B.如果您希望每个等级求解一个C块,那么您需要所有对应的A行和B的所有对应列。所以,将C分成块,获得每个块所需的范围。 C(i1:i2,j1:j2)将需要A(i1:i2,0:n)和B(0:n,j1:j2)。要分发这些数据,我建议使用MPI_Scatter和/或MPI_Scatterv(取决于您需要使用的内存布局)。