Parallel processing MPI进程能否同时传输数据和计算其他数据?

Parallel processing MPI进程能否同时传输数据和计算其他数据?,parallel-processing,mpi,openmpi,hpc,Parallel Processing,Mpi,Openmpi,Hpc,假设我有一个矩阵,表示我需要在集群上并行计算的任务。 我将矩阵划分为子矩阵,每个子矩阵对应一个可用进程。 但子矩阵仍然太大。执行MPI_Send()操作需要相当长的时间 因此,我的想法是将子矩阵细分为更小的块。异步发送数据块,然后以某种方式异步接收数据块,对其进行计算并将其发送回。其思想是接收过程将花费更少的时间等待数据到达,并且可以将该时间用于计算 这可能吗? 这有意义吗? 我将在接收端使用什么MPI调用来检测已接收的数据块并调用函数来计算该数据?我想我可以使用一个循环和MPI_Test()来

假设我有一个矩阵,表示我需要在集群上并行计算的任务。 我将矩阵划分为子矩阵,每个子矩阵对应一个可用进程。 但子矩阵仍然太大。执行MPI_Send()操作需要相当长的时间

因此,我的想法是将子矩阵细分为更小的块。异步发送数据块,然后以某种方式异步接收数据块,对其进行计算并将其发送回。其思想是接收过程将花费更少的时间等待数据到达,并且可以将该时间用于计算

这可能吗? 这有意义吗? 我将在接收端使用什么MPI调用来检测已接收的数据块并调用函数来计算该数据?我想我可以使用一个循环和MPI_Test()来检查接收到的数据并进行计算

但我主要想知道这是否有意义,它是否比仅仅一个MPI_Send()调用并让接收进程等待所有数据接收后再执行更高效、更快


这是假设接收过程没有其他方法来获取数据。这是系统的限制之一。

是的,当然有道理。执行IO时保持空闲是浪费处理时间。我已经有一段时间没有适应mpi了。但是,在本地进程中,您可以使用一个线程进行处理,另一个线程用于IO(发送数据)。自从我上大学几年以来,我就没有玩过MPI,所以我不能告诉你是可以用MPI玩,还是需要用线程。@bolov谢谢,我想确定一下我的直觉,因为我是新手。我也没有想过使用线程。我会亲自调查,但谢谢你的建议。