MPI学习-MPI_Sendrecv and MPI_Sendrecv_replace

本文探讨了MPI中的点对点通信死锁问题,重点介绍了MPI_Send与MPI_Recv可能导致的死锁现象及解决策略。MPI_Sendrecv和MPI_Sendrecv_replace可以有效地解除死锁,实现数据交换。通过示例说明了在进程数为2的情况下,如何使用这两个函数来交换进程0和进程1之间的数据。
摘要由CSDN通过智能技术生成

死锁现象:点对点通信中存在死锁现象:

死锁现象

MPI_Send 与MPI_Recv

1.MPI_Send调用返回时表明数据已被发出或被MPI系统复制,随后对发送缓冲区的修改不会改变所发送的数据;

2.MPI_Recv返回时表明数据接收已经完成;

3.让计算和通信重叠进行,通常先等待receive的完成,然后做计算,再等待send的完成。

4.需要采用MPI_Test()检测传输是否结束时;

5.MPI_Send可以以两种不同的方式实现:

  • 将消息复制到MPI设置的缓冲区并返回;
  • 直到对应的MPI_Recv出现前都阻塞

6.造成死锁的最大因素在于多个进程同时发出消息,再同时接收消息;

  • 因为若是每个进程都阻塞在MPI_Send上,则没有程序调用MPI_Recv,程序则会死锁

7.解除死锁可以使一些进程先接收消息再发送消息。

MPI_Sendrecv and MPI_Sendrecv_replace

可以自动实现数据交换,解除死锁问题.

语法规范

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值