MPI:非阻塞实现节点间的循环消息传递
2018-03-28 14:37
483 查看
非阻塞实现节点间的循环消息传递
一、题目要求
MPI非阻塞方式实现节点间的循环消息传递二、思路
使用MPI_Isend、MPI_Irecv和MPI_Wait等函数;三、我的代码
#include <stdio.h> #include <string.h> #include "mpi.h" int main(int argc, char *argv[]) { char sendmsg[100] = "asdfasdf"; char recvmsg[100] = ""; int myid, numprocs; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &myid); MPI_Comm_size(MPI_COMM_WORLD, &numprocs); int dest = myid+1; int source = myid-1; if(myid == 0) source = numprocs-1; if(myid == numprocs-1) dest = 0; //发送 MPI_Request request1; MPI_Status status1; MPI_Isend(sendmsg, strlen(sendmsg), MPI_CHAR, dest, 99, MPI_COMM_WORLD, &request1); //接收 MPI_Request request2; MPI_Status status2; MPI_Irecv(recvmsg, 100, MPI_CHAR, source, 99, MPI_COMM_WORLD, &request2); MPI_Wait(&request2, &status2); //打印 // printf("has send from %d to %d\n", myid, dest); // printf("has recv from %d to %d\n", source, myid); // printf("%s", recvmsg); return 0; }
相关文章推荐
- MPI应用:实现节点之间的循环消息传递
- 用redis阻塞队列,实现消息传递
- Redis实现原理:消息循环、阻塞和事务
- Java实现app接口和Socket消息传递(6)servlet映射并返回Json数据
- MFC中PeekMessage的使用,非阻塞消息循环
- JavaScript DOM中实现循环创建文办节点并添加属性节点
- 如何用C++来实现在循环链表里展示除了最后一个节点,然后返回所展示的节点总和
- ros 节点实现简易超声雷达串口通讯 模拟出激光雷达消息
- 独立线程实现消息循环的Delphi定时器类
- Dwr 实现消息实时传递
- (七十二)自定义通知NSNotification实现消息传递
- ROS:三个节点相互传递消息,每个节点都可以同时发布和订阅主题
- TMsgThread, TCommThread -- 在delphi线程中实现消息循环(105篇博客,好多研究消息的文章)
- 【Apache Mina2.0开发之一】搭建Apache Mina框架并实现Server与Client端的简单消息传递!
- java分布式开发TCP/IP NIO无阻塞 Socket((基于消息方式实现系统间的通信) )(转)
- 用只含一个链域的节点实现循环链表的双向遍历
- JavaScript DOM中实现循环创建文办节点并添加属性节点
- (七十二)自己定义通知NSNotification实现消息传递
- delphi的消息机制实现消息传递字符串
- 在delphi线程中实现消息循环