asc-devkit 通算融合算子 HCCL 服务端类型配置指南:HcclServerType 接口原理与实战
人工智能深度学习算子库CANNAscend【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言原生支持C和C标准规范主要由类库和语言扩展层构成提供多层级API满足多维场景算子开发诉求。项目地址https://gitcode.com/cann/asc-devkit点击查看免费下载HcclServerType 是 asc-devkitCANN 昇腾 AI 处理器算子开发语言在 Host 侧原型注册阶段用于配置 HCCL 服务端类型的接口它与通信域名称配置接口 HcclGroup 共同构成 OpMC2Def 通算融合MC2算子注册体系。阅读本文后你将掌握 HcclServerType 的函数原型、HcclServerType 枚举取值范围、按 AI 处理器型号粒度配置通信服务端的规则与优先级并能结合原型注册代码完成从 MC2 注册到服务端类型下发的完整配置。一、接口定位MC2 通算融合算子注册体系中的一环HcclServerType 并不是一个孤立接口它归属于 OpMC2Def 原型注册类。在 asc-devkit 的原型注册与管理体系见 prototype_register_management 文档中算子原型通过OpDef及其派生定义对象描述其中OpAICoreDef负责 AI Core 侧的定义与配置如 AddConfig 接口 注册算子支持的 AI 处理器型号OpMC2Def专门用于通算融合MC2算子的 Host 侧配置。根据 OpMC2Def 简介该类用于在 Host 侧配置通算融合算子的通信域名称配置后在核函数Kernel侧可以获取通信域对应的 context消息区地址。HcclServerType 正是该类的成员接口之一它的职责是配置 HCCL 的服务端类型即决定该 MC2 算子在不同 AI 处理器型号上使用何种 HCCL 通信服务端执行通信任务。从接口使用链路看MC2 通算融合算子完成一次通信配置需要三步详见 MC2 接口文档调用MC2()接口注册算子是通算融合算子返回OpMC2Def结构调用HcclGroup()配置通信域名称参见 HcclGroup 接口文档调用HcclServerType()为指定 AI 处理器型号配置通信服务端类型——这正是本文的主题。二、函数原型与参数说明2.1 函数原型HcclServerType 的函数原型为void HcclServerType(enum HcclServerType type, const char *socnullptr)该接口通过OpMC2Def对象链式调用典型调用形式为this-MC2().HcclServerType(HcclServerType::AICPU, ascendxxx1);2.2 参数说明参数输入/输出说明type输入HCCL 的服务端类型为 HcclServerType 枚举类定义见下文soc输入AI 处理器型号为该型号配置服务端类型。可选参数nullptr或表示为算子支持的所有型号配置服务端类型2.3 HcclServerType 枚举定义type参数取值为ops命名空间下的HcclServerType枚举定义如下namespace ops{ enum HcclServerType : uint32_t { AICPU 0, // AI CPU服务端 AICORE, // AI Core服务端 CCU, // CCU服务端仅在AI处理器包含CCU单元时支持 MAX // 预留参数不支持使用 }; }各取值的语义与使用约束为AICPU0AI CPU 服务端。在 HCCL 通信任务中AI CPU 路径将通信任务组装后交由 AI CPU 侧服务端执行。AICOREAI Core 服务端。通信任务由 AI Core 侧执行对应源码生成的NNOPBASE_HCCL_SERVER_TYPE_MTE宏。CCUCCU 服务端仅在 AI 处理器包含 CCU计算控制单元单元时支持。CCU 路径通常配合CCU_SCHED调度模式使用。MAX预留参数不支持使用。同时它也是接口内部判断未配置服务端类型的哨兵值——从源码看当GetHcclServerType()返回MAX时生成器判定该算子没有配置全局 MC2 服务端类型见 op_aclnn_generator.cpp。2.4 soc 参数的填写规则soc参数指定 AI 处理器型号使用时需遵守以下规则nullptr或表示为算子支持的所有型号配置服务端类型即全局配置指定具体型号时soc 取值必须落在算子已支持的 AI 处理器型号范围内即已通过AICore().AddConfig()接口注册的型号参见 AddConfig 接口文档型号命名规则可参考算子工程目录下编译配置项文件CMakePresets.json中的ASCEND_COMPUTE_UNIT字段该字段取值在使用 msOpGen 创建算子工程时自动生成。三、约束说明使用 HcclServerType 接口需满足以下约束必须先注册 MC2使用该接口前算子需要先通过MC2()接口注册该算子是通算融合算子注册后即返回一个OpMC2Def结构参见 MC2 接口文档。特定型号配置优先级更高同时为特定 AI 处理器型号和所有 AI 处理器型号配置服务端类型时特定 AI 处理器型号配置的优先级更高。也就是说HcclServerType(AICPU, ascendxxx1)按型号配置会覆盖HcclServerType(AICORE)全局配置在ascendxxx1型号上的生效值。四、调用示例按型号差异化配置通信服务端以下示例完整展示了在一个 MC2 自定义算子原型中如何为不同 AI 处理器型号配置不同的 HCCL 服务端类型class MC2Custom : public OpDef { public: MC2Custom(const char* name) : OpDef(name) { this-Input(x).ParamType(REQUIRED).DataType({ge::DT_FLOAT}).Format({ge::FORMAT_ND}); this-Input(y).ParamType(REQUIRED).DataType({ge::DT_FLOAT}).Format({ge::FORMAT_ND}); this-Output(z).ParamType(REQUIRED).DataType({ge::DT_FLOAT}).Format({ge::FORMAT_ND}); this-Attr(group).AttrType(REQUIRED).String(); this-AICore().AddConfig(ascendxxx1); this-AICore().AddConfig(ascendxxx2); this-MC2().HcclGroup(group); // 配置通信域名称为group this-MC2().HcclServerType(HcclServerType::AICPU, ascendxxx1); // 配置ascendxxx1型号的通信模式为AI CPU this-MC2().HcclServerType(HcclServerType::AICORE); // 配置其他型号即ascendxxx2的通信模式为AI Core } }; OP_ADD(MC2Custom);该示例的配置逻辑可以拆解为注册输入输出与属性x、y为 REQUIRED 的 float、ND 格式输入z为 REQUIRED 输出group为 REQUIRED 的 String 类型属性属性名即为后续通信域名称注册支持的型号通过AICore().AddConfig()注册ascendxxx1与ascendxxx2两个型号配置通信域HcclGroup(group)配置通信域名称为group按型号配置服务端类型HcclServerType(AICPU, ascendxxx1)指定ascendxxx1型号使用 AI CPU 服务端HcclServerType(AICORE)不指定 soc作为全局兜底因此其余型号即ascendxxx2使用 AI Core 服务端注册原型通过OP_ADD(MC2Custom)完成原型注册。五、源码级验证服务端类型如何被编译进算子HcclServerType 的配置并非只停留在原型对象内部它会在算子构建阶段被 opbuild 工具链读取并生成对应的运行时下发代码。仓库中的生成器实现给出了完整的证据链。5.1 枚举到运行时宏的映射在 op_aclnn_generator.cpp 中ops::HcclServerType枚举被映射为 NNOPBASE 运行时宏const std::mapops::HcclServerType, std::string HCCL_SERVER_TYPE_MAP { {ops::HcclServerType::AICPU, NNOPBASE_HCCL_SERVER_TYPE_AICPU}, {ops::HcclServerType::AICORE, NNOPBASE_HCCL_SERVER_TYPE_MTE}, {ops::HcclServerType::CCU, NNOPBASE_HCCL_SERVER_TYPE_CCU}, {ops::HcclServerType::MAX, NNOPBASE_HCCL_SERVER_TYPE_END}, };可见 AICORE 服务端在运行时层面对应 MTEMemory Transfer Engine宏这与 AI Core 侧通过 MTE 通道执行通信数据搬运的实现语义一致。5.2 按型号展开服务端类型列表AclnnOpGenHcclServerTypeListop_aclnn_generator.cpp负责将原型中的服务端类型配置展开为与型号一一对应的数组。其核心逻辑为对每个已注册型号entries若该型号没有 AI Core 配置hasAicoreConfig为假则输出NNOPBASE_HCCL_SERVER_TYPE_END占位否则调用opDef.MC2().GetHcclServerType(entry.originalKey)查询该型号对应的服务端类型返回MAX说明未配置同样输出END占位若配置了服务端类型但没有任何型号命中生成器会输出告警日志Opbuild: op %s has HcclServerType configured but none of the MC2 SOC names match the AddConfig SOC list提示开发者检查 HcclServerType 中的型号名是否与 AddConfig 注册的型号一致——这与文档中soc 取值需确保在算子支持的型号范围内的约束相互印证。生成的产物形如来自测试用例 aclnn_mc2_test.cpp.txtenum NnopbaseHcclServerType { NNOPBASE_HCCL_SERVER_TYPE_AICPU 0, NNOPBASE_HCCL_SERVER_TYPE_MTE, NNOPBASE_HCCL_SERVER_TYPE_CCU, NNOPBASE_HCCL_SERVER_TYPE_END }; NnopbaseHcclServerType hcclServerTypeList[] {NNOPBASE_HCCL_SERVER_TYPE_AICPU,NNOPBASE_HCCL_SERVER_TYPE_MTE};5.3 运行时下发生成在生成的 aclnn 执行入口中op_aclnn_generator.cpp当GetHcclServerType()不等于MAX时会生成调用NnopbaseSetHcclServerTypeBySocName按型号名下发优先或NnopbaseSetHcclServerTypeList按 soc 支持列表下标下发兜底的代码将服务端类型列表传递给 HCCL 执行器。对应测试用例 aclnn_mc2_test.cpp.txt 中同样体现了优先按 SocName、否则按支持列表的双路径下发策略。5.4 测试用例佐证仓库中的原型测试用例 test_ops.cpp 覆盖了 HcclServerType 的组合配置场景class MC2Test : public OpDef { public: MC2Test(const char* name) : OpDef(name) { this-Input(x).ParamType(REQUIRED).DataType({ge::DT_FLOAT}).Format({ge::FORMAT_ND}); this-Output(y).ParamType(REQUIRED).DataType({ge::DT_FLOAT}).Format({ge::FORMAT_ND}); this-Attr(group1).AttrType(REQUIRED).String(); this-Attr(group2).AttrType(OPTIONAL).String(); OpAICoreConfig aicConfig; this-AICore().AddConfig(ascend910, aicConfig); this-AICore().AddConfig(ascend910b, aicConfig); this-MC2().HcclGroup({group2, group1}); this-MC2().HcclServerType(HcclServerType::AICPU, ascend); this-MC2().HcclServerType(HcclServerType::AICPU, ascend910); this-MC2().HcclServerType(HcclServerType::AICORE); this-EnableFallBack(); } }; OP_ADD(MC2Test);此外 test_ops.cpp 中的MC2TestDavid还覆盖了 CCU 服务端类型与无效型号ascend_undefined_soc的配置场景用于验证生成器的告警与容错路径。六、与 Kernel 侧 HCCL 使用的衔接配置好服务端类型后HCCL 服务端类型将影响算子运行时的通信执行路径。与 HcclServerType 直接相关的 HCCL 通信接口位于 include/adv_api/hccl/hccl.h其模板声明为template HcclServerType serverType HcclServerType::HCCL_SERVER_TYPE_AICPU, const auto config DEFAULT_CFG class Hccl {也就是说Kernel 侧的Hccl通信类本身就以上述服务端类型作为模板参数默认使用 AICPU 服务端。在 Kernel 侧使用 HCCL 通信时典型流程为在所有核上创建Hccl对象调用InitV2接口传入通信上下文context与 TilingData 初始化参见 InitV2 接口文档调用SetCcTilingV2设置 CC 侧 Tiling 偏移通过Prepare、Commit、Wait、Finalize等接口下发并同步通信任务。通信上下文通过GetHcclContext获取正是 Host 侧HcclGroup配置的通信域名称所对应的 context消息区地址。HcclServerType 与 HcclGroup 一类型一名称配合共同决定了 MC2 通算融合算子运行时通信任务在哪个服务端、哪个通信域中执行。七、常见配置场景与注意事项单型号场景只需HcclServerType(HcclServerType::AICPU)全局配置即可无需指定 soc多型号差异化场景先全局配置默认服务端类型再对个别型号调用带 soc 的接口覆盖利用特定型号优先级更高的规则实现差异化CCU 场景仅当 AI 处理器包含 CCU 单元时才能配置HcclServerType::CCUCCU 场景建议在 Host 侧配合CCU_SCHED调度模式使用型号名合法性soc 参数必须与AddConfig注册的型号一致否则 opbuild 阶段会产生告警生成的列表中对应位置会被END占位工程兼容性基于不支持 MC2 特性的旧版本 CANN 包生成的自定义算子工程无法兼容 MC2 接口。可通过检查算子工程cmake/util/ascendc_impl_build.py中是否存在_build_mc2_ctx字段确认工程是否支持该特性未找到该字段时需要重新生成自定义算子工程以启用 MC2 特性参见 MC2 接口文档 的约束说明。八、关联文档速查OpMC2Def 简介OpMC2Def 构造函数HcclGroup通信域名称配置MC2通算融合算子注册AddConfigAI 处理器型号注册生成器实现op_aclnn_generator.cpp测试用例test_ops.cpp、aclnn_mc2_test.cpp.txt赞分享人工智能深度学习算子库CANNAscend【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言原生支持C和C标准规范主要由类库和语言扩展层构成提供多层级API满足多维场景算子开发诉求。项目地址https://gitcode.com/cann/asc-devkit点击查看免费下载相关推荐asc-devkit 通算融合算子原型注册详解MC2 接口与 OpMC2Def 通信域配置指南asc devkit 通算融合算子原型注册详解MC2 接口与 OpMC2Def 通信域配置指南 导读 本文聚焦 CANN asc devkit 算子原型注册体人工智能深度学习算子库CANNAscendasc-devkit 算子原型注册OpAICPUDef::Engine 接口详解与 AICPU 算子引擎配置实战asc devkit 算子原型注册OpAICPUDef::Engine 接口详解与 AICPU 算子引擎配置实战 本篇技术指南围绕 asc devkitCA人工智能深度学习算子库CANNAscendasc-devkit 算子原型注册OpDef::FormatMatchMode 接口详解与 format 匹配模式配置实战asc devkit 算子原型注册OpDef::FormatMatchMode 接口详解与 format 匹配模式配置实战 FormatMatchMode 是人工智能深度学习算子库CANNAscend上一篇elasticsearch-dump与Terraform集成基础设施即代码中的数据迁移下一篇以终止契约约束 /goal 命令goal-prompt 插件 grounded-migration 评估的设计与判定准则创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

Kimi入局具身智能:技术路径、学习路线与开发者机会

Kimi入局具身智能:技术路径、学习路线与开发者机会

1. 从一条行业传闻说起:Kimi入局具身智能到底意味着什么前几天在几个技术群里同时刷到一条消息,说Kimi可能要入局具身智能领域。说实话,第一反应不是惊讶,而是"终于来了"。过去一年多,大模型赛道从百模大战打…

2026/10/16 5:51:43 阅读更多 →
OpenSceneGraph 缩放平移实战:从原理到顺滑交互实现

OpenSceneGraph 缩放平移实战:从原理到顺滑交互实现

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 5:50:43 阅读更多 →
ASTER GDEM镶嵌全流程:从数据预处理到接边处理与质检

ASTER GDEM镶嵌全流程:从数据预处理到接边处理与质检

1. 为什么我要自己动手做ASTER GDEM镶嵌第一次接触ASTER GDEM是在做一个区域地形分析的小项目,当时需要覆盖三个省份的连续高程数据。我一开始想得很简单,直接去下载现成的分幅数据,用GIS软件拼一下不就完了。结果打开一看,每幅数…

2026/10/16 5:50:43 阅读更多 →

最新新闻

Lunar 6.7.11 修复说明:Sync Mode 在 MacBook Air 与 iMac 上改用 nits 同步

Lunar 6.7.11 修复说明:Sync Mode 在 MacBook Air 与 iMac 上改用 nits 同步

桌面应用 【免费下载链接】Lunar Intelligent adaptive brightness for your external monitors 项目地址: https://gitcode.com/gh_mirrors/lu/Lunar 点击查看 免费下载 Lunar 6.7.11 是一个针对 Sync Mode(同步模式) 的定向修复版本。此次…

2026/10/16 6:27:53 阅读更多 →
MooTool Next-Compose 增量演进:MCP stdio 工具链、F03 格式化引擎与更新下载流的工程化落地

MooTool Next-Compose 增量演进:MCP stdio 工具链、F03 格式化引擎与更新下载流的工程化落地

桌面应用开发工具 【免费下载链接】MooTool Handy tool set for developers 项目地址: https://gitcode.com/gh_mirrors/mo/MooTool 点击查看 免费下载 导读 本篇以仓库中的增量开发记录 next-compose/docs/diff/561-mcp-reformat-update-env-net-vault-css-slice…

2026/10/16 6:27:53 阅读更多 →
AtCoder Beginner Contest 478

AtCoder Beginner Contest 478

AtCoder Beginner Contest 478 A - Grapes 题意:有N个人,编号为1到N,现在要把M颗葡萄分给他们。每次按照1, 2, …, N的顺序,每人分一颗,分到第N个人以后再从第1个人开始,直到所有葡萄分完。最后输出每个人分…

2026/10/16 6:27:53 阅读更多 →
google-api-nodejs-client 的 ondemandscanning 模块演进全解读:从 CHANGELOG 版本脉络到容器镜像漏洞扫描实战

google-api-nodejs-client 的 ondemandscanning 模块演进全解读:从 CHANGELOG 版本脉络到容器镜像漏洞扫描实战

后端 【免费下载链接】google-api-nodejs-client Googles officially supported Node.js client library for accessing Google APIs. Support for authorization and authentication with OAuth 2.0, API Keys and JWT (Service Tokens) is included. 项目地址: h…

2026/10/16 6:27:53 阅读更多 →
用Python和SQLite自建个人财务数据中台:从记账到自由分析

用Python和SQLite自建个人财务数据中台:从记账到自由分析

1. 从"financial-services"到个人财务数据中台:我为什么自建了一套记账分析系统先说个背景。我一直在关注"financial-services"这个方向,但说实话,金融服务的概念太大了——从银行App到支付工具,从个人记账软…

2026/10/16 6:27:53 阅读更多 →
Zabbix 监控 TACACS 服务实战:App TACACS Service 模板(net.tcp.service 简单检查)全解析

Zabbix 监控 TACACS 服务实战:App TACACS Service 模板(net.tcp.service 简单检查)全解析

【免费下载链接】community-templates Zabbix Community Templates repository 项目地址: https://gitcode.com/gh_mirrors/co/community-templates 点击查看 免费下载 本文围绕 Zabbix Community Templates 仓库中的 App TACACS Service 模板展开,讲解…

2026/10/16 6:26:53 阅读更多 →

日新闻

个人 AI Agent 平台接入 TaoToken:统一 Key 与 API 通道的配置大纲

个人 AI Agent 平台接入 TaoToken:统一 Key 与 API 通道的配置大纲

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 0:00:05 阅读更多 →
信号与系统频域分析作业解题指南

信号与系统频域分析作业解题指南

1. 作业背景与核心要求解析信号与系统作为电子信息类专业的核心基础课,其作业设计往往直接关联课程的核心知识框架。2026年春季第六次作业的布置,通常对应着课程进展到频域分析的关键阶段。根据常规教学进度推测,本次作业可能涉及以下核心内容…

2026/10/16 0:00:05 阅读更多 →
Django MVT实战:从零构建图书借阅系统,彻底搞懂Model-View-Template分层

Django MVT实战:从零构建图书借阅系统,彻底搞懂Model-View-Template分层

1. 从一个"四不像"的练手项目说起如果你已经看完了Django的官方教程前几章,跟着敲完了投票应用,大概会有一种"我好像会了,又好像什么都不会"的割裂感。教程里每个知识点都是拆开的——这一章讲模型,下一章讲视…

2026/10/16 0:00:05 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/15 16:18:54 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/15 19:41:51 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/15 13:48:15 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 0:14:36 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 3:49:43 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 9:49:14 阅读更多 →