【MPI学习3】MPI并行程序设计模式:不同通信模式MPI并行程序的设计 |
您所在的位置:网站首页 › send与sent的区别 › 【MPI学习3】MPI并行程序设计模式:不同通信模式MPI并行程序的设计 |
学习了MPI四种通信模式 及其函数用法: (1)标准通信模式:MPI_SEND (2)缓存通信模式:MPI_BSEND (3)同步通信模式:MPI_SSEND (4)就绪通信模式:MPI_RSEND 四种通信模式的区别都在消息发送端,而消息接收端的操作都是MPI_RECV。
1.标准通信模式 原理图如下 标准通信模式由MPI决定是否用缓存。 如果MPI决定缓存将要发出的数据:发送操作不管接受操作是否执行,都可以进行;而且缓存结束后发送操作就可以返回,不需要等待接受操作收到数据 如果MPI决定不缓存将要发送的数据:对于阻塞通信,则要求接受操作执行,并且数据都发送到接受缓冲区了,发送操作才能够返回;对于非阻塞通信,发送操作虽然没有完成,但是发送调用可以正确返回。
2.缓存通信模式 与标准通信的区别在于需要自己维护程序的缓冲区。 int MPI_Buffer_attach(void *buffer, int size)用于申请缓存 int MPI_Buffer_detach(void **buffer, int *size) 用于释放缓存 这是一个阻塞调用 函数返回表示缓冲区已经被释放 示例代码如下: 1 #include "mpi.h" 2 #include 3 #include 4 #define SIZE 6 5 static int src = 0; 6 static int dest = 1; 7 8 void generate_data(double *, int); 9 void normal_recv(double *, int); 10 void buffered_send(double *, int); 11 12 void generate_data(double *buffer, int buff_size){ 13 int i; 14 for (i=0; i= size) next = 0; 34 prev = rank - 1; 35 if (prev |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |