【MPI学习3】MPI并行程序设计模式:不同通信模式MPI并行程序的设计

您所在的位置:网站首页 send与sent的区别 【MPI学习3】MPI并行程序设计模式:不同通信模式MPI并行程序的设计

【MPI学习3】MPI并行程序设计模式:不同通信模式MPI并行程序的设计

2024-06-15 17:23| 来源: 网络整理| 查看: 265

学习了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