《并行计算的编程模型》一2.6.3 AM Ping-Pong示例

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

2.6.3 AM Ping-Pong示例

虽然“Hello,World!”示例已经演示了每个GASNet应用程序开始结束所需的基础内容,但是除了屏障中隐含的内容外,该示例没有执行任何通信。因此,接下来我们展示了一个简单的使用GASNet的AM在节点对间执行“Ping-Pong”通信的例子。
screenshot

screenshot

该示例的第一部分如代码清单2-2所示,表示的是必需的AM处理程序。该代码在“Hello,World!”示例的框架中替换了第19行。此例中包括两个AM处理程序,其中每个AM处理程序都需要一个带单个参数的Short AM。“Ping”处理程序在响应AM请求时运行且只执行以下两个操作:打印带参的消息和发出AM Reply以调用参数相同的“Pong”处理程序。“Pong”处理程序主要负责打印不同的消息并递增计数器值。其中计数器通过使用GASNet工具的原子增量实现,以确保线程安全(计数器也是从main()中读取)。或者也可以使用pong_counter++,但需要HSL的保护。
本例的第二部分是main()函数逻辑,如代码清单2-3所示。在“Hello,World!”示例的框架中,该代码可以替换第32~34行。其中第3行的代码默认为2次迭代,但如果提供其他数字,它将从命令行中获取备选值。第6~7行的代码主要用于节点配对(0和1、2和3等),若节点数为奇数,那么将在最后一个节点上自身配对。示例的核心代码从第10行开始。每个节点对中编号较小的节点进行循环计数(count)迭代,并向另一个节点发送AM Request,然后阻塞直到对方的AM Reply增加了pong_count原子变量值。与此同时,节点对中编号较大的节点不在main()中执行相关工作,且在第20~21行调用屏障函数。节点对中的双方都必须运行AM才能保证示例正确执行。因此,偶数节点通过使用GASNET_BLOCKUNTIL等待“Pong”非常重要。如果代码改为如下的方式,则没有异步进程线程的GASNet实现将会产生死锁。
screenshot

如果在没有附加命令行参数的3个节点上运行上述示例,输出结果如下所示。三个节点的输出结果按照时间顺序交织在一起打印到屏幕上。
screenshot

相关文章
|
3月前
|
机器学习/深度学习 存储 算法
回声状态网络(Echo State Networks,ESN)详细原理讲解及Python代码实现
本文详细介绍了回声状态网络(Echo State Networks, ESN)的基本概念、优点、缺点、储层计算范式,并提供了ESN的Python代码实现,包括不考虑和考虑超参数的两种ESN实现方式,以及使用ESN进行时间序列预测的示例。
153 4
回声状态网络(Echo State Networks,ESN)详细原理讲解及Python代码实现
|
2月前
|
运维 监控 Linux
探究-ping指令的使用
【9月更文挑战第2天】`ping` 指令是网络诊断工具,通过发送 ICMP 回显请求并接收应答,测试网络连接的可达性和响应时间。在 Windows、Linux 和 macOS 中均可使用。主要参数包括 `-t`(持续监测)、`-n`(指定次数)和 `-l`(数据包大小)。结果分析关注回显时间、数据包丢失率和 TTL 值,适用于网络故障排查、性能评估和服务器监控。掌握 `ping` 的使用方法可帮助管理和优化网络连接。
|
2月前
|
并行计算 算法 编译器
什么是SSA模式,它的工作原理是什么
【9月更文挑战第1天】什么是SSA模式,它的工作原理是什么
54 0
|
4月前
|
域名解析 缓存 网络协议
计算机网络——ping命令过程的详解、原理
计算机网络——ping命令过程的详解、原理
|
6月前
|
网络协议 Python
python中TCP回声服务器与客户端示例
【4月更文挑战第7天】本示例展示了TCP回声服务器和客户端的工作流程。服务器监听特定端口,接收客户端连接请求,接收数据并回显。客户端连接服务器,发送数据并接收回显。代码示例用Python实现,包括服务器的`socket.bind()`, `socket.listen()`, `socket.accept()`和客户端的`socket.connect()`, `socket.sendall()`, `socket.recv()`。运行示例时,先启动服务器再启动客户端,可观察TCP连接和数据传输过程。了解这些基础对于构建网络应用至关重要。
|
6月前
|
分布式计算 并行计算 数据处理
什么是MapReduce?请简要解释其工作原理。
什么是MapReduce?请简要解释其工作原理。
100 0
|
Python
【需求响应DR】一种新的需求响应机制DR-VCG研究(Python代码实现)
【需求响应DR】一种新的需求响应机制DR-VCG研究(Python代码实现)
|
Shell Windows
shell实战案例-批量ping ip(多进程限制并发)
shell实战案例-批量ping ip(多进程限制并发)
417 0
|
缓存 网络协议 Unix
【网络篇】第十八篇——ping的工作原理
【网络篇】第十八篇——ping的工作原理
【网络篇】第十八篇——ping的工作原理
|
网络协议 测试技术 Windows
loadrunner 场景设计-IP Spoofer-多ip负载生成器(Windows平台)
loadrunner 场景设计-IP Spoofer-多ip负载生成器(Windows平台)
147 0