Matrix 并行矩阵乘法MPI(元素计算)

Matrix 并行矩阵乘法MPI(元素计算),matrix,mpi,Matrix,Mpi,我需要使用MPI为并行块矩阵计算(逐元素)编程。我编程前按行分配到节点进行计算。在当前问题中,我需要根据结果矩阵的元素划分任务 我一直在尝试如何将数据分发到节点,但尚未找到解决方案。你能帮我理解一下如何做到这一点的逻辑吗?让我们回顾一下这一点。我的符号来自A*B=C。C的每个元素都是由A的相应行和B的相应列构成的。A(i,0:n)*B(0:n,j)=C(i,j)。所以,对于C的每个元素,你需要一行a和一列B。如果你想让每个秩解一个C块,那么你需要a的所有对应行和B的所有对应列。所以,把C分解成块

我需要使用MPI为并行块矩阵计算(逐元素)编程。我编程前按行分配到节点进行计算。在当前问题中,我需要根据结果矩阵的元素划分任务


我一直在尝试如何将数据分发到节点,但尚未找到解决方案。你能帮我理解一下如何做到这一点的逻辑吗?

让我们回顾一下这一点。我的符号来自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(取决于您需要使用的内存布局)。

我现在面临发送数据的困难。我将数据存储在二维数组中。需要将子矩阵发送到工作节点。到目前为止,我提出了MPI_类型_向量解决方案,然后要求通过MPI_发送发送。但它不起作用。我想问题在于创建新的数据类型。你能举一些例子说明如何使用type vector和send call发送子矩阵。你记得用MPI_type_commit提交新类型吗?