处理接收到的 MPI 数据(流水线)

Process MPI data as it's received (Pipe-lining)

假设我从机器 A 收到一条带有大量消息的 MPI_Send,而在另一台机器(例如 B)上收到的消息是 MPI_Recv(或 MPI_isend 和 MPI_irecv 分别)。目前,B 仅在所有数据到达后才处理接收到的数据;是否有 MPI 功能允许我在收到数据时开始处理某些数据?

不是真的。您可以有一个最小大小的缓冲区,并开始通过它发送数据并在接收到数据时使用它。

您可能想查看 MPI 的持久通信请求支持 http://www.mpi-forum.org/docs/mpi-2.2/mpi22-report/node65.htm#Node65 并创建一些适合您的应用程序的更高级别 API。

我见过的所有流水线案例都是使用 MPI_Send() / MPI_Recv() 对或 MPI_Sendrecv().

制作的临时解决方案