《并行计算的编程模型》一2.3.5 活动消息

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

2.3.5 活动消息

AM接口作为GASNet核心API的主要内容,其原理是初始化节点上的调用向目标节点发送少量参数及可选负载,所有的这些都将传递给目标节点上的函数。将要运行的函数,如AM处理程序,通常由gasnet_handler_t类型的索引进行命名。其中这些索引与实际函数间的映射关系通过处理程序表传递给调用的gasnet_attach函数(有可能被其修改)的方式进行创建。
AM处理程序参数为32位的整型。参数的数目受限于具体实现,具体数字可以在运行时通过以下函数查询:

32位平台上函数返回的值至少等于8,而在64位平台上至少为16。目的是确保客户端可以每次向处理程序至少传递8个指针大小的值。
除了上述参数外,还有可选的负载项。我们把AM根据负载的处理方式分为三类:

  • Short AM没有负载。Short AM处理程序的签名如下:
  • Medium AM包含了在目标端实现并提供临时缓冲区的负载。对AM处理程序赋予此缓冲区地址及长度值,当处理程序完成时,将会清空其值并循环执行上述操作。此外,还可以在需要时修改负载项内容。Medium AM处理程序的签名如下:
  • Long AM上包含由初始化节点提供并放置在目标节点地址上的负载。且其地址必须位于GASNet程序的段上。Long AM处理程序的签名如下:

在上述介绍的三个处理程序签名中,“…”表示最多有gasnet_AMMaxArgs()个附加参数变量。由于Medium和Long AM处理程序的签名相同,因此可以对它们使用同一处理程序。
负载大小受到程序实现相关限制的制约,可以通过以下函数进行查询:

GASNet规范中要求所有程序实现都必须支持至少512字节的负载,而在具有RMA支持的硬件平台中,该值会更大。重要的是要注意Long AM的Request与Reply间的区别。
可以使用以下函数中的任意一个发出AM请求,在目标节点上调用AM处理程序。

在上述函数中,“[N]”可以用从0到gasnet_AMMaxArgs()间的值替代。与之前的函数一样,“…”表示传给处理程序的32位参数值。对于Medium和Long请求而言,一旦负载内存可以安全地重用(也称为“本地完成”),函数就立即返回值。因为该实现不必对负载进行拷贝,因此可以暂时阻塞该函数调用,直至网络能够发送负载。当发生阻塞时,执行其他节点发送给调用节点的AM。LongAsync请求与无需等待本地完成的其他Long示例(那些等待分配资源依然处于阻塞状态)不同。在相关AM回复处理程序开始执行前,客户端不能够对负载进行修改,这也是判断本地完成的重要指示。虽然相关语义难以正确应用,但非常强大。
在AM处理程序执行时,相关代码在受限的、称为“处理程序背景”的环境中执行。我们将在后续的内容中讨论相关限制,本章重点关注GASNet中那些由伯克利AM定义的特征。这里的“至多回复一个”规则包含以下两点:(1)就AM的Request操作而言,处理程序中唯一允许的通信是对发起Request操作节点的可选回复;(2)对于AM的Reply操作,不允许在处理程序中发生通信。发送AM Reply操作的函数如下所示:

这里又一次出现了“…”,它表示32位处理程序的参数,且“[N]”表示在从0到gasnet_AMMaxArgs()参数的实例中的上述三种函数原型都是模板。
除了名称,发送AM Reply的调用函数与Request间的根本区别在于第一个参数的数据类型:gasnet_token_t。在上述的三种AM处理程序的函数原型中,该类型首次提及且并未给出详细解释。它是个不透明的类型,主要包括(至少)AM的源节点。由于难以构造这种类型的对象,因此调用AMReply函数的唯一方法是利用接受的标记符号做为Request处理程序的参数。如果必须知道AM的源节点(Request或Reply),这种情况可以使用如下函数查询:

上述函数只能从处理程序的上下文中进行,且标记符号参数的唯一有效值作为处理函数参数的接收值。

相关文章
|
10天前
|
人工智能 开发工具 iOS开发
Claude Code 新手完全上手指南:安装、国产模型配置与常用命令全解
Claude Code 是一款运行在终端环境中的 AI 编程助手,能够直接在命令行中完成代码生成、项目分析、文件修改、命令执行、Git 管理等开发全流程工作。它最大的特点是**任务驱动、终端原生、轻量高效、多模型兼容**,无需图形界面、不依赖 IDE 插件,能够深度融入开发者日常工作流。
3215 9
|
13天前
|
Shell API 开发工具
Claude Code 快速上手指南(新手友好版)
AI编程工具卷疯啦!Claude Code凭借任务驱动+终端原生的特性,成了开发者的效率搭子。本文从安装、登录、切换国产模型到常用命令,手把手带新手快速上手,全程避坑,30分钟独立用起来。
3255 22
|
2天前
|
人工智能 自然语言处理 文字识别
阿里云百炼Qwen3.7-Max简介:能力、优势、支持订阅计划参考
Qwen3.7-Max是阿里云百炼面向智能体时代推出的新一代旗舰模型,对标GPT-5.5、Claude Opus 4.7等闭源旗舰。该模型支持百万级token上下文窗口,具备顶级推理能力、多模态搜索与视觉理解增强、流式输出低延迟响应等核心优势,覆盖编程、办公、长周期自主执行等复杂场景。同时支持OpenAI接口兼容,便于系统快速迁移。用户可通过Token Plan团队版、Coding Plan或节省计划等订阅方式灵活调用,适合企业级高要求场景使用。
|
6天前
|
人工智能 Linux BI
国内用 Claude Code 终于不用翻墙了:一行命令搞定,自动接 DeepSeek
JeecgBoot AI专题研究 一键脚本:Claude Code + JeecgBoot Skills + DeepSeek 全平台接入 一行命令装好 Claude Code + JeecgBoot Skills + DeepSeek 接入,无需翻墙使用 Claude Code,支持 Wind
2260 4
国内用 Claude Code 终于不用翻墙了:一行命令搞定,自动接 DeepSeek
|
25天前
|
人工智能 JSON 供应链
畅用7个月无影 JVS Claw |手把手教你把JVS改造成「科研与产业地理情报可视化大师」
LucianaiB分享零成本畅用JVS Claw教程(学生认证享7个月使用权),并开源GeoMind项目——将JVS改造为科研与产业地理情报可视化AI助手,支持飞书文档解析、地理编码与腾讯地图可视化,助力产业关系图谱构建。
23595 15
畅用7个月无影 JVS Claw |手把手教你把JVS改造成「科研与产业地理情报可视化大师」
|
12天前
|
人工智能 JSON BI
DeepSeek V4-Pro 接入 Claude Code 完全实战:体验、测试与关键避坑指南
Claude Code 作为当前主流的 AI 编程辅助工具,凭借强大的代码理解、工程执行与自动化能力深受开发者喜爱,但原生模型的使用成本相对较高。为了在保持能力的同时进一步降低开销,不少开发者开始寻找兼容度高、价格更友好的替代模型。DeepSeek V4 系列的发布带来了新的选择,该系列包含 V4-Pro 与 V4-Flash 两款模型,并提供了与 Anthropic 完全兼容的 API 接口,理论上只需简单修改配置,即可让 Claude Code 无缝切换为 DeepSeek 引擎。
2747 3
|
4天前
|
人工智能 自然语言处理 安全
Claude Code 全攻略:命令大全+三种模式+记忆体系+实战工作流完整手册
Claude Code 是当前最流行的终端级 AI 编程助手,能够直接在命令行中完成代码生成、项目理解、文件修改、命令执行、错误修复等全流程开发工作。它不依赖图形界面、不占用额外资源,却能深度理解项目结构,自动生成规范代码,大幅提升研发效率。
828 2
|
11天前
|
人工智能 安全 开发工具
Claude Code 官方工作原理与使用指南
Claude Code 不是传统代码补全工具,而是 Anthropic 推出的终端 AI 代理,具备代理循环、双驱动架构(模型+工具)、全局项目感知、6 种权限模式等核心能力,本文基于官方文档系统解析其工作原理与高效使用技巧。
1502 0

热门文章

最新文章