《并行计算的编程模型》一2.3.3 屏障

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

2.3.3 屏障

接下来介绍的是核心API在执行屏障时的调用操作:

与其他的屏障实现不同,GASNet中的同步实现是“分阶段”且支持可选的id匹配。
GASNet的分阶段屏障特性在gasnet_barrier_wait的规范描述中非常明显,其描述为“这是一个只有在所有节点调用gasnet_barrier_notify()函数完成后返回的阻塞操作”。简而言之,假设“notify”递增一个到达计数器,则“wait”将一直处于阻塞状态直至计数器与任务大小相等。gasnet_barrier_try函数同样需要满足上述条件,但是如果未能满足,则会立即返回GASNET_ERROR_NOT_READY的值。完成屏障操作无论使用的是“wait”还是“try”函数,在初始化与完成之间执行大部分GASNet操作都是合法的。
屏障函数中的id和flags参数实现了屏障过程可选匹配。这部分内容建议读者仔细阅读规范手册,这里列举了两个易于理解的用户示例:

  • 异步屏障
    最简单的情况是不使用id匹配支持。在本例中,通过flags参数将GASNET_ BARRIERFLAG_ANONYMOUS常量传递给同步函数。任何数值都能以id参数传递(一般为0),因此可以忽略。
  • 命名屏障
    充分使用id逻辑匹配时最简单的情况是所有调用者间具有相等整型参数的阻塞(与分阶段相反)屏障。

GASNet的分阶段屏障存在一些不太明显的使用限制。为了简化叙述,这里将成功的“try”等价于“wait”操作。第一个限制最为直观,即必须在“notify”与“wait”之间交替使用以确保屏障操作不会相互重叠。第二个限制是在GASNET_PARSYNC或GASNET_PAR编译中,“notify”和“wait”操作在每个节点上只执行一次(客户端可以自由选择执行的线程,且不必为两个阶段选择同一线程)。第三个限制是前两个限制潜在的可能产生的后果:在GASNET_PAR编译时,客户端必须保证在任何时刻都至多有一个客户端线程处于屏障过程中。

相关文章
|
设计模式 程序员 C++
【C++ 泛型编程 高级篇】C++模板元编程:使用模板特化 灵活提取嵌套类型与多容器兼容性
【C++ 泛型编程 高级篇】C++模板元编程:使用模板特化 灵活提取嵌套类型与多容器兼容性
1129 2
|
10月前
|
编解码 数据挖掘 开发者
Pandas数据导出:CSV文件
Pandas是Python中强大的数据分析库,提供了灵活的数据结构如DataFrame和Series。通过`to_csv()`函数可轻松将数据保存为CSV文件。本文介绍了基本用法、常见问题(如编码、索引、分隔符等)及解决方案,并涵盖大文件处理和报错解决方法,帮助用户高效导出数据。
687 83
|
7月前
|
XML 前端开发 JavaScript
Ajax与Axios,以及Apifox的入门使用
本文由blue编写于2025年3月20日,主要介绍了Ajax、Axios以及Apifox的入门使用。文章首先讲解了Ajax的概念与作用,通过原生代码示例展示了如何实现异步数据交互;接着引入Axios,说明其对Ajax的封装简化了开发流程,并给出Axios实现相同功能的代码;最后详细讲述了Apifox的基本用法,包括创建接口、设置参数及生成Mock数据,为前后端开发提供了便利工具。
209 0
|
分布式计算 关系型数据库 MySQL
Sqoop【部署 01】CentOS Linux release 7.5 安装配置 sqoop-1.4.7 解决警告并验证(附Sqoop1+Sqoop2最新版安装包+MySQL驱动包资源)
【2月更文挑战第8天】Sqoop CentOS Linux release 7.5 安装配置 sqoop-1.4.7 解决警告并验证(附Sqoop1+Sqoop2最新版安装包+MySQL驱动包资源)
621 1
|
12月前
|
NoSQL 关系型数据库 MySQL
MySQL与Redis协同作战:百万数据量的优化实录
【10月更文挑战第6天】 在现代互联网应用中,随着用户量的增加和业务逻辑的复杂化,数据量级迅速增长,这对后端数据库系统提出了严峻的挑战。尤其是当数据量达到百万级别时,传统的数据库解决方案往往会遇到性能瓶颈。本文将分享一次使用MySQL与Redis协同优化大规模数据统计的实战经验。
533 3
|
12月前
|
存储 安全 Linux
调整 core dump 的存储位置或限制
【10月更文挑战第1天】
978 2
|
12月前
|
安全 Linux 网络安全
安装和使用Paramiko
安装和使用Paramiko
882 3
|
编译器 C语言
C语言中的浮点数:深入探索与应用
C语言中的浮点数:深入探索与应用
1423 1
|
人工智能 大数据 云计算
中国首个高通量以太网联盟诞生!阿里云等40多家企业率先加入
阿里云与中国科学院计算技术研究所联合发起高通量以太网联盟,中国首个高通量以太网协议即将发布
|
SQL 关系型数据库 MySQL
性能提高20倍!MySQL排序引起的性能问题及解决方案
负责公司的用户收藏服务,收到调用方反馈有read time out的情况,进行排查发现是某用户收藏数量太多引起的(有业务设计上的问题,正常应只保留有限时间的收藏或者限制用户收藏的数量),一般用户收藏数是不超过100的,查询耗时是几毫秒,该用户收藏数2W+,查询耗时接近200毫秒。
3995 0