《并行计算的编程模型》一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节中,将介绍非阻塞式通信模式。

相关文章
|
存储 搜索推荐 PyTorch
通义千问7B-基于本地知识库问答
上期,我们介绍了通义千问7B模型的微调+部署方式,但在实际使用时,很多开发者还是希望能够结合特定的行业知识来增强模型效果,这时就需要通过外接知识库,让大模型能够返回更精确的结果。
|
机器学习/深度学习 人工智能 自然语言处理
【MM2024】阿里云 PAI 团队图像编辑算法论文入选 MM2024
阿里云人工智能平台 PAI 团队发表的图像编辑算法论文在 MM2024 上正式亮相发表。ACM MM(ACM国际多媒体会议)是国际多媒体领域的顶级会议,旨在为研究人员、工程师和行业专家提供一个交流平台,以展示在多媒体领域的最新研究成果、技术进展和应用案例。其主题涵盖了图像处理、视频分析、音频处理、社交媒体和多媒体系统等广泛领域。此次入选标志着阿里云人工智能平台 PAI 在图像编辑算法方面的研究获得了学术界的充分认可。
【MM2024】阿里云 PAI 团队图像编辑算法论文入选 MM2024
|
SQL 分布式计算 大数据
【赵渝强老师】大数据生态圈中的组件
本文介绍了大数据体系架构中的主要组件,包括Hadoop、Spark和Flink生态圈中的数据存储、计算和分析组件。数据存储组件包括HDFS、HBase、Hive和Kafka;计算组件包括MapReduce、Spark Core、Flink DataSet、Spark Streaming和Flink DataStream;分析组件包括Hive、Spark SQL和Flink SQL。文中还提供了相关组件的详细介绍和视频讲解。
873 0
|
存储 C++
gRPC 四模式之 双向流RPC模式
gRPC 四模式之 双向流RPC模式
1148 0
|
数据采集 数据处理 开发者
Python中的filter函数用法详解
Python中的filter函数用法详解
1113 0
|
JSON 编译器 数据格式
uniapp数组转成json字符串
本文主要通过JSON.stringify和replace方法来对数组进行JSON格式化处理.
456 0
|
缓存 Java Linux
Linux系统内存使用率与top进程展示使用率不一致问题
使用top/htop工具查看的内存占用率与free/云监控不一致问题
Linux系统内存使用率与top进程展示使用率不一致问题
|
机器学习/深度学习 传感器 编解码
Text to image论文精读 GAN-CLS和GAN-INT:Generative Adversarial Text to Image Synthesis生成性对抗性文本图像合成(文本生成图像)
这是一篇用GAN做文本生成图像(Text to Image、T2I)的论文,文章在2016年由Reed等人发布,被ICML会议录取。可以说是用GAN做文本生成图像的开山之作。 论文链接:https://arxiv.org/pdf/1605.05396.pdf 代码链接: https://github.com/zsdonghao/text-to-image 本篇文章是精读这篇论文的报告,包含一些个人理解、知识拓展和总结。
Text to image论文精读 GAN-CLS和GAN-INT:Generative Adversarial Text to Image Synthesis生成性对抗性文本图像合成(文本生成图像)
|
算法
​LeetCode刷题实战311:稀疏矩阵的乘法
算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试。所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 !
516 0
​LeetCode刷题实战311:稀疏矩阵的乘法