news 2026/5/9 15:07:26

CANN/hcomm AI CPU任务编排指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
CANN/hcomm AI CPU任务编排指南

任务编排

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

编排步骤

参与集合通信的各个rank协调有序地进行同步与数据搬运,完成一个集合通信操作的过程,称为任务编排。任务编排的主要目的是将不同通信线程上的任务并行执行,实现资源的最大化利用,从而提升整体性能。

任务编排主要包含以下几个步骤:

  1. 获取本端通信内存,在HCCL中称其为HCCL Buffer。

  2. 拷贝算子输入数据到HCCL Buffer,常用的数据面接口为HcommLocalCopyOnThread。

    [!NOTE]说明 HCCL Buffer是HCCL每个通信域所管理的一块Device上的锁页内存(Pinned Memory),由于通信任务是异步执行的,为确保用户输入的数据在通信任务实际执行时依然有效,因此需要首先将输入数据拷贝到拥有固定内存地址的HCCL Buffer中。

  3. 切分输入数据,计算偏移量。

    HCCL Buffer默认大小是200MB,若输入数据大小超过该值,则需要切分成多个数据块,分别进行处理。

  4. 前同步,主Thread通知从Thread启动任务,从Thread等待主Thread通知。常用的数据面接口为HcommThreadNotifyRecordOnThread和HcommThreadNotifyWaitOnThread。

  5. 进行数据搬运,将远端数据拷贝至本端的HCCL Buffer中。常用的数据面接口为HcommReadOnThread、HcommReadReduceOnThread等。

  6. 后同步,从流通知主流任务完成,主流等待从流通知。

  7. 拷贝HCCL Buffer中的结果数据到算子输出内存。常用的数据面接口为HcommLocalCopyOnThread。

代码示例

  • 以自定义Send算子为例,其在AI CPU侧的任务编排代码片段如下:

    uint64_t size = count * dataTypeSize; // 数据量 = 数据数量 * 数据类型大小 // 1. 拷贝到中转内存 HcommLocalCopyOnThread(threadHandle, localAddr, inputPtr, size); // 2. 通知接收端,本端已经准备好数据 HcommChannelNotifyRecordOnThread(threadHandle, channelHandle, 0); // 3. 等待接收端,告知已经读完本端数据 HcommChannelNotifyWaitOnThread(threadHandle, channelHandle, 1, 1800);
  • 以自定义Receive算子为例,其在AI CPU侧的任务编排代码片段如下:

    // 1. 等待发送端,告知本端可以开始读数据 HcommChannelNotifyWaitOnThread(threadHandle, channelHandle, 0, 1800); // 2. 读取发送端的数据 HcommReadOnThread(threadHandle, channelHandle, outputPtr, remoteAddr, size); // 3. 通知发送端,本端已经读完数据 HcommChannelNotifyRecordOnThread(threadHandle, channelHandle, 1);

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

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/9 15:07:03

CANNBot LongCat-Flash AFD通信计算重叠案例

案例:LongCat-Flash AFD 通信计算 overlap 【免费下载链接】cannbot-skills CANNBot 是面向 CANN 开发的用于提升开发效率的系列智能体,本仓库为其提供可复用的 Skills 模块。 项目地址: https://gitcode.com/cann/cannbot-skills 概述 这个案例…

作者头像 李华
网站建设 2026/5/9 15:03:30

CANN/pypto累乘函数prod

# pypto.prod 【免费下载链接】pypto PyPTO(发音: pai p-t-o):Parallel Tensor/Tile Operation编程范式。 项目地址: https://gitcode.com/cann/pypto 产品支持情况 产品是否支持Ascend 950PR/Ascend 950DT√Atlas A3 训…

作者头像 李华
网站建设 2026/5/9 15:00:31

CANN/cann-recipes-infer Qwen3-MoE模型NPU推理

Qwen3-MoE模型在NPU实现低时延推理 【免费下载链接】cann-recipes-infer 本项目针对LLM与多模态模型推理业务中的典型模型、加速算法,提供基于CANN平台的优化样例 项目地址: https://gitcode.com/cann/cann-recipes-infer 概述 Qwen3-MoE模型是2025年开源的…

作者头像 李华
网站建设 2026/5/9 14:58:19

Git switch:专为安全分支切换设计的现代命令

1. 为什么今天还要专门讲git switch?——一个被低估的日常高频操作Git 分支切换,听起来像呼吸一样自然,但恰恰是这种“太熟了”的操作,最容易在真实项目里翻车。我带过六七个不同规模的开发团队,从十人初创到百人产研中…

作者头像 李华
网站建设 2026/5/9 14:49:53

AI赋能DAB变换器:基于XGBoost与PSO实现全开关ZVS的混合调制策略

1. 项目概述:当AI遇见电力电子,如何让DAB变换器“全开关软着陆”?在数据中心、电动汽车充电桩或者光伏储能系统里,你总能找到一个默默无闻但至关重要的“能量搬运工”——隔离型DC-DC变换器。它的任务是把电能从一个电压等级&…

作者头像 李华
网站建设 2026/5/9 14:49:53

CANN/torchtitan-npu快速上手指南

快速上手 【免费下载链接】torchtitan-npu Ascend Extension for torchtitan 项目地址: https://gitcode.com/cann/torchtitan-npu 参考 软件安装 准备环境后,按照如下步骤操作,在 NPU 平台上运行 torchtitan-npu。 数据准备 下载 Tokenizer &a…

作者头像 李华