《并行计算的编程模型》一2.3.1 开始和结束

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

2.3.1 开始和结束

几乎所有编程语言都会有一个类似“Hello,World!”的例子。使用并行语言也希望有能够打印一些关于作业大小和调用进程信息的统计函数。下面是一个2.6.2节中的例子,我们这里引用以介绍核心API的相关部分。

GASNet客户端通过gasnet_init函数进行初始化,该函数包括引用main()函数的标准参数argc和argv。调用gasnet_init函数的任务环境较为模糊(详见使用文档),且不建议用户过多使用任务环境。如果必须要用的话,请在gasnet_init函数调用前使用。然而,在gasnet_init调用后,命令行将清除GASNet内部使用的所有参数,且环境变量将通过gasnet_getenv获取。此外,初始化函数还设置了任务的stdout和stderr。GASNet不对stdin做任何保证。
只有在gasnet_init函数返回后,上述列表中的其他函数才能合法调用。初始化GASNet任务的下一步将调用gasnet_attach函数以分配GASNet的段并保留任务所需的所有网络资源。gasnet_attach的变量赋值给AM处理程序的客户端表,且客户端的段需求如下:
gasnet_handlerentry_t * table
这是一个指向C结构体数组的指针:

fnptr函数作为AM处理程序在相应的整数index上调用。AM处理程序的签名将在2.3.5节讨论。index的128~255值对客户端是可用的,而特殊值0表示可以忽略且将由gasnet_attach的特定值重写。
int numentries
表示句柄条目表中条目的个数。
uintptr_t segsize
GASNet段的所需大小。
其值必须为GASNET_PAGESIZE的倍数,且不大于gasnet_getMaxLocalSegmentSize返回的值。
GASNET_SEGMENT_EVERYTHING可以忽略。
uintptr_t minheapoffset
表示GASNet段与当前堆顶间的最小距离。在包含GASNet段和堆空间竞争的虚拟内存系统上,能够确保分配段后还有剩余空间用于堆分配。虽然不建议使用,但通过0传递是合法的。且所有节点传递的值都是相等的。
GASNET_SEGMENT_EVERYTHING可以忽略。
其中有两个函数用于确定在其他调用中能够请求的段大小。
gasnet_getMaxLocalSegmentSize函数返回GASNet已经确认的且对于调用节点上段可用的最大内存大小,而gasnet_getMaxGLobalSegmentSize函数返回所有本地节点中的最小值。值得注意的是在大多数平台上,GASNet段和堆需要竞争同一空间,这就意味着这些SegmentSize值必须是segsize与minheapoffset之和的最大值。如果客户端找到的可用的段大小小于其要求大小,则将调用gasnet_exit函数终止任务而不是调用gasnet_attach函数。
除了两个段大小查询调用与使用gasnet_getenv函数访问环境变量之外,客户端可以调用gasnet_nodes函数查询任务中的GASNet节点数,以及调用gasnet_mynode函数确定执行当前任务的调用者的进程号(进程号从0开始)。上述调用是由gasnet_init和gasnet_attach函数允许调用的全部函数。其中两个段大小查询函数是在asnet_init和gasnet_attach函数调用时仅有的合法调用函数。
单节点上gasnet_exit调用足以使整个并行任务终止。任何没有同时作为一个或多个调用gasnet_exit函数的节点将可能返回SIGQUIT信号。这时客户端可以方便地注册唯一信号处理程序,因为GASNet保留所有其他内容给内部调用使用。为了避免误触发其机制,客户端在执行正常退出时需要在gasnet_exit函数调用前立即执行同步操作(详见2.3.3节)。

相关文章
夸克网盘的文件怎么保存到百度网盘?
夸克网盘的文件怎么保存到百度网盘?
9743 2
夸克网盘的文件怎么保存到百度网盘?
|
数据采集 JSON 数据挖掘
如何利用Python实现高效数据清洗
数据清洗是数据分析过程中不可避免的一步。在大规模数据处理任务中,手动数据清洗会耗费大量时间和资源。本文介绍了如何使用Python编写脚本来自动化数据清洗,以提高数据分析的效率。
467 3
|
JSON 前端开发 JavaScript
3分钟让你学会axios在vue项目中的基本用法(建议收藏)
3分钟让你学会axios在vue项目中的基本用法(建议收藏)
832 0
|
Linux 网络安全 开发工具
校外网络连接校园网内的linux服务器方法(使用frp实现内网穿透)
平常在校园里连接校内实验室的linux服务器可以直接使用ssh直接链接私有ip地址,一旦本地移动到了校园网外部(如:使用手机流量wifi,或着暑假回家使用家庭wifi)便无法在使用ssh连接校内的服务器。本文提供一个实现校外也能访问校内服务器的方法
6869 0
校外网络连接校园网内的linux服务器方法(使用frp实现内网穿透)
|
3月前
|
弹性计算 Cloud Native 关系型数据库
方案实践 | 基于 DTS 实现自建 MySQL 数据迁移至 PolarDB-X
本方案介绍如何通过阿里云PolarDB-X,实现MySQL向云原生分布式数据库的平滑迁移。涵盖资源部署、账号登录、数据同步验证(全量/增量)、主可用区切换及GAP锁对比测试,显著提升扩展性、高可用性与并发性能。
|
10月前
|
人工智能 安全 Apache
Unity Catalog 三大升级:Data+AI 时代的统一治理再进化
在刚刚落幕的 2025 Databricks Data + AI Summit 上,Databricks 重磅发布了多项 Lakehouse 相关功能更新。其中,面向数据湖治理场景的统一数据访问与管理方案 —— Unity Catalog,迎来了三大关键升级:全面支持 Apache Iceberg、面向业务用户的全新使用体验,以及数据治理与安全能力的持续增强。
|
5月前
|
JSON API 开发者
爱回收平台价格查询API接口详解
爱回收平台提供便捷的API接口,支持通过品牌ID和项目ID实时查询商品回收价格。本文详解接口参数、请求示例、响应格式及错误处理,助力开发者快速集成,提升应用自动化能力。
373 1
|
12月前
|
人工智能 运维 API
PAI-Model Gallery云上一键部署阶跃星辰新模型Step1X-Edit
4月27日,阶跃星辰正式发布并开源图像编辑大模型 Step1X-Edit,性能达到开源 SOTA。Step1X-Edit模型总参数量为19B,实现 MLLM 与 DiT 的深度融合,在编辑精度与图像保真度上实现大幅提升,具备语义精准解析、身份一致性保持、高精度区域级控制三项关键能力;支持文字替换、风格迁移等11 类高频图像编辑任务类型。在最新发布的图像编辑基准 GEdit-Bench 中,Step1X-Edit 在语义一致性、图像质量与综合得分三项指标上全面领先现有开源模型,比肩 GPT-4o 与 Gemin。PAI-ModelGallery 支持Step1X-Edit一键部署方案。
|
JSON Java API
利用Spring Cloud Gateway Predicate优化微服务路由策略
Spring Cloud Gateway 的路由配置中,`predicates`​(断言)用于定义哪些请求应该匹配特定的路由规则。 断言是Gateway在进行路由时,根据具体的请求信息如请求路径、请求方法、请求参数等进行匹配的规则。当一个请求的信息符合断言设置的条件时,Gateway就会将该请求路由到对应的服务上。
1402 69
利用Spring Cloud Gateway Predicate优化微服务路由策略
|
12月前
|
弹性计算 资源调度 搜索推荐
阿里云ECS中长期成本节省计划解析:从原理到实战,助力企业降本提效
阿里云ECS节省计划的推出为企业用户提供了一种全新的成本优化方案。通过一次性购买的方式享受长期按量付费的折扣权益,客户不仅可以大幅降低ECS资源的使用成本还可以享受更高的灵活性和便捷性。本文将从多个维度深入剖析阿里云ECS节省计划,包括其核心优势、详尽的购买使用指引、与传统付费模式的全面对比,以及一客户成功案例,以供大家了解和参考。

热门文章

最新文章