【问题标题】:Parallel Matrix Multiplication MPI (Element Wise Calculation)并行矩阵乘法 MPI(元素智能计算)
【发布时间】:2014-06-17 12:18:44
【问题描述】:

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

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

【问题讨论】:

    标签: matrix mpi


    【解决方案1】:

    让我们通过这个向后工作。我的符号将来自 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_Type_vector 解决方案,然后需要通过 MPI_send 发送。但它不起作用。我想问题在于制作新数据类型。你能举一些例子来说明如何使用类型向量发送子矩阵并发送调用。
    • 你记得用 MPI_Type_commit 提交新类型吗?
    猜你喜欢
    • 1970-01-01
    • 2013-12-23
    • 2013-01-11
    • 2018-09-08
    • 2017-10-30
    • 2015-03-27
    • 2012-11-04
    • 2014-04-21
    • 2015-04-03
    相关资源
    最近更新 更多