当前位置: 首页 > news >正文

CANN/HCOMM CCU Write函数

Write

【免费下载链接】hcommHCOMM(Huawei Communication)是HCCL的通信基础库,提供通信域以及通信资源的管理能力。项目地址: https://gitcode.com/cann/hcomm

产品支持情况

  • Ascend 950PR/Ascend 950DT:支持
  • Atlas A3 训练系列产品/Atlas A3 推理系列产品:不支持
  • Atlas A2 训练系列产品/Atlas A2 推理系列产品:不支持

功能说明

在CCU kernel内发起跨rank写操作(异步),通过已建链的ChannelHandle将本端数据写入对端HBM,硬件完成时自动将event的第mask位置1。支持以下两种源类型:

重载目标
重载1本端HBM(LocalAddr对端HBM(RemoteAddr
重载2本端MS Buffer(CcuBuffer对端HBM(RemoteAddr

注意:

  • 参数顺序遵循"目的端在前,源端在后"约定:Write(ch, remote, local, ...),即remote(目的,对端)在第二位,local(源,本端)在第三位。与Readlocal在前的顺序相反,请勿混淆。C++类型系统通过RemoteAddrLocalAddr的不同类型在编译期阻止参数顺序错误。
  • 同一kernel内使用的所有ChannelHandle必须属于同一die。本接口在调用处不做die校验,因此不会因die不一致而失败(调用处仍可能因无注册中kernel返回CCU_E_PTR、或句柄无效返回CCU_E_NOT_FOUND,详见返回值表);die一致性由HcommCcuKernelRegister统一校验(依据本kernel期间用到的全部channel),不一致时由HcommCcuKernelRegister返回CCU_E_PARA,而非本接口的返回值。

函数原型

namespace AscendC { namespace ccu { // 重载1:本端HBM→对端HBM CcuResult Write(ChannelHandle ch, RemoteAddr remote, LocalAddr local, Variable len, Event event, uint16_t mask = 1); // 重载2:本端MS Buffer→对端HBM CcuResult Write(ChannelHandle ch, RemoteAddr remote, CcuBuffer local, Variable len, Event event, uint16_t mask = 1); } // namespace ccu } // namespace AscendC

参数说明

参数名输入/输出描述
ch输入跨rank通道句柄(ChannelHandle)。channel绑定的die须与本kernel内所有channel属于同一die(在HcommCcuKernelRegister内统一校验,详见上文CAUTION)。
remote输入对端HBM目标地址(RemoteAddr,对端HBM地址与token的复合对象)。
local输入本端源地址。重载1为LocalAddr(本端HBM地址与token的复合对象);重载2为CcuBuffer(本端MS Buffer切片对象,单片最大4096字节)。
len输入写入字节数,类型为Variable(运行期可变长度)。重载2时不可超过4096字节。
event输入完成事件对象。硬件写入完成时自动置位event[mask],下游调用EventWait(event, mask)等待。
mask输入16位事件掩码。默认值为1(即bit0)。

返回值

CcuResult:接口成功返回CCU_SUCCESS,其他值表示失败。

返回值说明
CCU_SUCCESS操作成功。
CCU_E_PTR当前不存在处于注册中的kernel(接口在kernel注册阶段之外被调用)。
CCU_E_NOT_FOUND传入的remote/local/len/event句柄未在当前kernel注册。

[!NOTE]说明 本接口不会返回CCU_E_PARA;channel die不一致由HcommCcuKernelRegister返回CCU_E_PARA,详见功能说明。

约束说明

  • 参数顺序为对端(目的)在前、本端(源)在后:Write(ch, remote, local, ...)
  • 同一kernel内所有ChannelHandle须属于同一die,不同die的channel不可混入同一kernel。
  • 重载2时,len不可超过CcuBuffer单片大小(4096字节);该上限须由调用方自行保证,超出会导致运行期硬件行为未定义。
  • 本接口为异步操作,须通过EventWait(event, mask)等待写入完成,方可保证对端数据可见。

调用示例

using namespace AscendC::ccu; // 场景1:本端HBM→对端HBM CcuResult MyKernel(CcuKernelArg arg) { auto *params = static_cast<MyKernelArg *>(arg); // CcuKernelArg 为void*,先转型为用户入参结构体 ChannelHandle ch = params->channelHandle; RemoteAddr remote; LocalAddr src; Variable len; Event evt; Write(ch, remote, src, len, evt); // remote在前,local在后 EventWait(evt); return CCU_SUCCESS; } // 场景2:本端MS Buffer→对端HBM CcuResult MyKernel2(CcuKernelArg arg) { auto *params = static_cast<MyKernelArg *>(arg); // CcuKernelArg 为void*,先转型为用户入参结构体 ChannelHandle ch = params->channelHandle; RemoteAddr remote; CcuBuffer buf; Variable len; Event evt; Write(ch, remote, buf, len, evt); EventWait(evt); return CCU_SUCCESS; }

【免费下载链接】hcommHCOMM(Huawei Communication)是HCCL的通信基础库,提供通信域以及通信资源的管理能力。项目地址: https://gitcode.com/cann/hcomm

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

http://www.jsqmd.com/news/1040649/

相关文章:

  • MCP2155 IrDA控制器硬件握手、缓冲区管理与吞吐量优化实战
  • Kotlin JDSL测试策略:如何有效测试类型安全的JPQL查询
  • 终极免费天气API搭建指南:5分钟拥有个人气象站
  • 为什么这款跨平台待办工具能让你的效率提升300%?
  • Circuit错误处理与降级策略:构建健壮的Go微服务架构的终极指南
  • K-means算法在向量索引构建中的优化与应用
  • Numix图标主题安装全攻略:从Ubuntu到Arch Linux的10种方法
  • 免费终极指南:3步轻松下载Steam创意工坊模组,告别平台限制
  • 从零到一:3小时构建ruoyi-vue-pro高效工作流审批系统的终极指南
  • js之补环境代理脚本
  • Grok-4实测真相:识别灰盒模型的能力边界与落地风险
  • 2026年6月专业的HDPE板公司哪家可靠,HDPE板耐低温,寒冷环境不变形 - 品牌推荐师
  • Gradle Doctor与JAVA_HOME配置:确保跨环境一致性构建的终极指南
  • 3步定位Windows热键冲突:Hotkey Detective帮你找回键盘控制权
  • Pose Animator:基于浏览器端姿态识别的实时矢量动画技术解析
  • PHP轻量工单系统源码包:含前后端代码、MySQL配置与Nginx/Apache部署脚本
  • GLM-5深度解析:多阶段推理引擎与256K上下文工程实践
  • TC670芯片实战:直流风扇故障预测与健康管理(PHM)硬件设计
  • 深入解析MMCCMB2102开发板引脚交叉参考表:从硬件连接到FPGA设计实践
  • vum框架入门指南:如何快速构建Vue.js移动端应用
  • Able Player完全指南:如何为视频添加完整字幕和音频描述
  • 2026年6月国内做得好的船用起重机生产厂家推荐,船用起重机/船用舵机/船用甲板机械/船用绞车,船用起重机实力厂家哪家好 - 品牌推荐师
  • AsyncTCP与ESPAsyncWebServer协同开发:打造高性能ESP32 Web服务终极指南
  • CANN/oam-tools综合检测
  • 深入解析PowerPC 601 MMU:地址转换、TLB协同与内存保护机制
  • SoundScrape完全指南:如何快速下载SoundCloud、Bandcamp和Mixcloud音乐
  • Raspberry Pi上运行CapsuleFarmerEvolved:ARM设备低功耗挂机完整指南
  • GPT-4.1三模型架构解析:Turbo/Reasoning/LongContext工程落地指南
  • 基于多模型比较的慢性肾病分类模型设计与优化研究|1(设计源文件+万字报告+讲解)(支持资料、图片参考_降重降ai)
  • DeepSeek V4预览版:面向产线落地的原生工具调用大模型