gpt4 book ai didi

c - MPI C SendRecV 矩阵乘法

转载 作者:行者123 更新时间:2023-11-30 15:50:58 27 4
gpt4 key购买 nike

我需要将矩阵的各个部分从根进程发送到所有其他进程,以便它们可以对其进行计算。然后,我需要接收计算结果并将它们聚合到根进程中。我会使用 Scatter,但矩阵只能存在于根进程中(作业规定)。

我知道 MPI_Sendrecv_replace 或 MPI_Sendrecv 将是有用的函数。但是,我需要将矩阵的一部分发送到其他进程,让它们计算,然后返回。如果我需要在发送和接收之间进行计算,我该如何使用 Sendrecv 函数。我很难概念化这个。

例如:

Process 0 sends to Process 1,2,3
Process 1,2,3 compute sections of matrix
Process 0 receives all of the computations

如果 sendrecv 函数都是一个函数,怎么会发生这种情况?

此外,我认为使用单独的发送和接收操作肯定会导致死锁(除非我精心管理调用),因为我将在 nxn 矩阵上执行此操作,并且它可能很大。

如何使用 Sendrecv 函数?

最佳答案

MPI_Sendrecv 并不意味着您来回发送某些内容。 MPI_Sendrecv 而是在处理器 A 执行发送命令,并在处理器 B 执行接收命令。(如果您想从 A 向 B 发送某些内容)

您需要 1 个 Sendrecv 用于:

Process 0 sends to Process 1

然后您进行计算并执行另一个 Sendrecv:

Process 0 receives from 1

关于c - MPI C SendRecV 矩阵乘法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15458406/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com