《并行计算的编程模型》一1.3 点对点通信

简介: 本节书摘来华章计算机《并行计算的编程模型》一书中的第1章 ,第1.3节, [(美)帕万·巴拉吉(Pavan Balaji)编著;张云泉等译,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

1.3 点对点通信

点对点通信是MPI中最常用的基础通信模式。一个进程发送数据,另一个进程接收数据。发送进程需要指定发送的数据、接收数据的进程号和通信域。考虑到一些老式消息传递系统,每个消息还有一个消息号,消息号的数据类型为单精度非负整数。同理,接收进程需要指定数据接收地址、数据来源进程号、通信域和消息号。另外,可能需要提供一个消息状态参数,用于保存数据接收的状态信息。
针对早期的消息传递系统和多数文件I/O库,用包含地址和字节数的二元数组指定数据缓冲区。MPI将该二元数组扩展成三元数组,三元数组包含地址、数据类型和数据个数(指定数据类型的个数,而非字节数)。在简单例子中,MPI中数据类型与基本编程语言的数据类型相似。例如,用C语言指定10个整数类型数据的缓冲区,MPI的语句表达方式为(address,10,MPI_INT)。这种方法方便程序编写者指定数据,因为程序编程者无需知道每一种数据类型的具体字节数。同时,该方法使MPI程序能够在混合硬件平台上运行,即使该混合硬件平台数据类型的字节数不一致(这是MPI库的重要特性)。另外,如1.4节所述,MPI允许在内存中指定不连续的数据缓冲区。

screenshot

在MPI_Send函数参数中,通信域中的进程号指定数据发送到具体哪个进程,并提供通信文本。消息号是一个非负整数类型,其最大值取决于MPI的具体实现方式,但至少为32 767。
MPI_Recv接收函数与发送函数的参数类似。不同之处在于接收函数允许指定接收数据缓冲区大小大于实际发送的数据大小。消息号和数据来源进程号可用具体数字指定(例如消息号为15和数据来源进程号为3),也可使用通配符类型的数值(例如消息号为MPI_ANY_TAG和数据来源进程号为MPI_ANY_SOURCE)。MPI_ANY_TAG允许用户发送一个额外整数类型的数据(例如具体消息号数值);MPI_ANY_SOURCE通过非确定性算法确定进程号。状态参数的消息值由发送数据的进程提供。若不需要状态信息,可通过MPI_STATUS_IGNORE进行指定。
图1-2是0号进程向MPI_COMM_WORLD通信域中其他所有进程发送相同数据的程序示例。该程序示例是MPI的基本或者标准发送模式,MPI还提供其他数据发送模式,例如同步发送模式、就绪发送模式和缓冲发送模式。在1.5节中,将介绍非阻塞式通信模式。

相关文章
|
并行计算 API
《并行计算的编程模型》一2.5.1 GASNet工具
本节书摘来华章计算机《并行计算的编程模型》一书中的第2章 ,第2.5.1节, [(美)帕万·巴拉吉(Pavan Balaji)编著;张云泉等译,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1020 1
|
分布式计算 资源调度 并行计算
并行计算框架MapReduce编程模型
思想:分而治之 map:对每一部分进行处理 reduce :汇总map结果 map是MapReduce最核心的。 mapreduce编程模型 一种分布式计算模型,解决海量数据计算问题 MapReduce把整个并行计算的过程抽象到两个函数,map和reduce函数。
1520 0
|
并行计算 索引
《并行计算的编程模型》一2.3.1 开始和结束
本节书摘来华章计算机《并行计算的编程模型》一书中的第2章 ,第2.3.1节, [(美)帕万·巴拉吉(Pavan Balaji)编著;张云泉等译,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1100 0
|
并行计算
《并行计算的编程模型》一1.11 总结
本节书摘来华章计算机《并行计算的编程模型》一书中的第1章 ,第1.11节, [(美)帕万·巴拉吉(Pavan Balaji)编著;张云泉等译,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1051 0
|
并行计算 算法 API
《并行计算的编程模型》一导读
对于正在编程的程序员,编程模型可被看作一台虚拟机,并可通过编程语言和函数库实现。如果某个编程模型成为计算机科学研究中的热点,需要具有以下特性:高效性(易于描述各种抽象算法)、移植性(兼容各种硬件计算平台)、高性能(高效均衡地利用硬件平台的计算能力)、通用性(广泛地描述各种算法)。
3456 0
|
并行计算
《并行计算的编程模型》一3.5.2 RMA函数使用
本节书摘来华章计算机《并行计算的编程模型》一书中的第3章 ,第3.5.2节, [(美)帕万·巴拉吉(Pavan Balaji)编著;张云泉等译,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1233 0
|
并行计算 安全
《并行计算的编程模型》一1.9 其他特性
本节书摘来华章计算机《并行计算的编程模型》一书中的第1章 ,第1.9节, [(美)帕万·巴拉吉(Pavan Balaji)编著;张云泉等译,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1475 0
|
并行计算
《并行计算的编程模型》一1.8 并行I/O
本节书摘来华章计算机《并行计算的编程模型》一书中的第1章 ,第1.8节, [(美)帕万·巴拉吉(Pavan Balaji)编著;张云泉等译,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
2003 0
|
并行计算 C语言 C++
《并行计算的编程模型》一1.2 MPI基础
本节书摘来华章计算机《并行计算的编程模型》一书中的第1章 ,第1.2节, [(美)帕万·巴拉吉(Pavan Balaji)编著;张云泉等译,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
2181 0
|
并行计算 安全
《并行计算的编程模型》一2.2.1 相关术语
本节书摘来华章计算机《并行计算的编程模型》一书中的第2章 ,第2.2.1节, [(美)帕万·巴拉吉(Pavan Balaji)编著;张云泉等译,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
995 0