parallel-processing - 了解 MPI 发送差异

标签 parallel-processing mpi

好的,让我们开始吧,我脑子里有点困惑。

发送 : 挡住了。发送方将等待,直到接收方发布相应的 RECV。

SSEND :它是阻塞的,发送方不仅会等待接收方发布相应的 RECV,还会等待 RECV 的确认。这意味着 RECV 运行良好。

BSEND : 它是非阻塞的。该进程可以继续执行其部分代码。数据存储在之前正确分配的缓冲区中。

ISEND : 它是非阻塞的。该进程可以继续执行其部分代码。数据未存储在缓冲区中:在确定 ISEND 运行良好(WAIT/TEST)之前,您不得覆盖正在发送的数据。

那么.. ISEND 和 BSEND 仅在缓冲区上有所不同吗?

最佳答案

是的--之间的区别ISEND BSEND 是缓冲区。

ISEND 是就地执行的非阻塞发送。

BSEND 是一个非阻塞发送,可以缓存在 MPI_Buffer_Attach 指定的内存段中。 .

BSEND 创建函数是为了允许程序员准确指定数据被缓冲的位置。

重要的是要注意,很像 ISEND ,您还必须使用 检查所有发送的状态BSEND 缓冲区以免溢出缓冲区或覆盖待处理 BSEND 的。

关于parallel-processing - 了解 MPI 发送差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31465543/

相关文章:

linq - 如何递归地按属性批量收集

Java线程notify() wait()以加快计算速度

c++ - 并行缩减

c++ - 使用 Bcast、Scatter 和 Gather 以及动态分配时出现 MPI 段错误

python - Microsoft MPI 和 mpi4py 3.0.0、python 3.7.1 目前是否可行?

sql - 使用Linq to SQL进行多线程

有人可以解释一下吗?它处理 C 中的 malloc 和全局数组

c - MPI:广播一个 long long int

python - SLURM srun 不并行运行 python 脚本,但可以访问并行资源

r - 在LAM/MPI集群上安装Rmpi