并行计算MPI(二):MPI阻塞通信
2015-03-09 11:50
260 查看
阻塞通信:消息发送方的send需要接收方的recv配合才能完成。MPI对阻塞通信一些底层函数进行了一些封装,方便我们调用。
1.标准通信模式:
(1).发送和接收在双方进程同时启动(理想状态,且在单核CPU时是不可能的):
数据传输操作立即启动
(2).发送动作早于接收动作启动:
发送进程阻塞,等待接受进程执行到MPI_Recv语句,之后开启传输(传输过程中其实是发送进程将数据传到 MPI环境缓存中,接受进程那边进行读取)
(3).发送动作晚于接受动作启动:
接受进程启动,等待发送进程的发送语句触发.
2.缓冲通信模式:
缓冲通信模式主要考虑的是Buffer_deatach的语句在接受语句之前还是之后,因为如果提前释放缓冲区肯定会导致数据丢失。
3.同步通信模式:
发送进程发送一个请求发送消息给接受进程,接受进程准备好后发送一个准许发送许可,发送端据此消息再执行实际的消息发送。
4.就绪通信模式:
和标准,同步通信模式完全一致,这个动作仅仅是向 MPI环境 传递一个额外的信息,告诉接受动作已经“就绪”,相应的可直接了当地执行发送操作.
1.标准通信模式:
MPI_Send(buf, buf_size, MPI_CHAR, process1, tag, MPI_COMM_WORLD); MPI_Recv(buf, buf_size, MPI_CHAR, process0, tag, MPI_COMM_WORLD);上面两个函数一个用来发送,一个用来接收。分别运行在两个进程(process0和process1)
(1).发送和接收在双方进程同时启动(理想状态,且在单核CPU时是不可能的):
数据传输操作立即启动
(2).发送动作早于接收动作启动:
发送进程阻塞,等待接受进程执行到MPI_Recv语句,之后开启传输(传输过程中其实是发送进程将数据传到 MPI环境缓存中,接受进程那边进行读取)
(3).发送动作晚于接受动作启动:
接受进程启动,等待发送进程的发送语句触发.
2.缓冲通信模式:
MPI_Buffer_attach(buf, bufsize); //定义一个用于通信的缓冲区
MPI_Bsend(buf1, buf_size1, MPI_CHAR, process1, tag, MPI_COMM_WORLD); MPI_Recv(buf2, buf_size2, MPI_CHAR, process0, tag, MPI_COMM_WORLD);
MPI_Buffer_detach(&buf, &bufsize) //释放用于通信的缓冲区</span>
缓冲通信模式主要考虑的是Buffer_deatach的语句在接受语句之前还是之后,因为如果提前释放缓冲区肯定会导致数据丢失。
3.同步通信模式:
MPI_Ssend(buf1, buf_size1, MPI_CHAR, process1, tag, MPI_COMM_WORLD); MPI_Recv(buf2, buf_size2, MPI_CHAR, process0, tag, MPI_COMM_WORLD);
发送进程发送一个请求发送消息给接受进程,接受进程准备好后发送一个准许发送许可,发送端据此消息再执行实际的消息发送。
4.就绪通信模式:
MPI_Rsend(buf1, buf_size1, MPI_CHAR, process1, tag, MPI_COMM_WORLD); MPI_Recv(buf2, buf_size2, MPI_CHAR, process0, tag, MPI_COMM_WORLD);
和标准,同步通信模式完全一致,这个动作仅仅是向 MPI环境 传递一个额外的信息,告诉接受动作已经“就绪”,相应的可直接了当地执行发送操作.
相关文章推荐
- 大数据并行计算利器之MPI/OpenMP
- 并行计算大作业之多边形相交(OpenMP、MPI、Java、Windows)
- 并行计算学习笔记(MPI)
- 并行计算MPI(三):计算π
- 并行计算大作业之多边形相交(OpenMP、MPI、Java、Windows)
- 完数的MPI并行程序设计-并行计算
- MPI并行计算环境搭建以及集群测试
- 并行计算MPI研究
- MPI并行计算环境的建立
- Linux下安装配置MPI并行计算环境
- Windows环境下MPI并行计算联机测试配置
- 并行计算 & HPC & MPI
- MPI实现并行计算统计数据
- Windows系统下搭建MPI(并行计算)环境
- 矩阵乘法的MPI并行计算
- 并行计算MPI [ 简单例子 ]
- MPI并行计算环境建立之二--挂载nfs文件系统
- MPI实现fft的迭代算法 源于并行计算——结构。算法。编程中伪码 更新1
- 最近做了个并行的计算各项异性地震波的有限元程序(cuda+mpi),可以计算超大规模问题,网格点个数可以几百亿都没有问题.
- 并行计算mpi [ PI ]