news 2026/5/9 12:42:50

CANN/hccl:自定义通信算子 - 点对点通信

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
CANN/hccl:自定义通信算子 - 点对点通信

自定义通信算子 - 点对点通信

【免费下载链接】hccl集合通信库(Huawei Collective Communication Library,简称HCCL)是基于昇腾AI处理器的高性能集合通信库,为计算集群提供高性能、高可靠的通信方案项目地址: https://gitcode.com/cann/hccl

样例介绍

本样例展示如何基于 HCCL 通信编程接口开发 Send/Recv 点对点通信算子,包含以下功能点:

  1. 基于 AICPU 通信引擎实现点对点通信算子
  2. 支持自定义算子包的独立构建、独立部署

目录结构

├── CMakeLists.txt # 编译/构建配置文件 ├── op_host/ │ ├── send.cc # HcclSendCustom 算子实现源文件 │ ├── recv.cc # HcclRecvCustom 算子实现源文件 │ ├── load_kernel.cc # AICPU Kernel 在 Host 侧的加载逻辑 │ ├── launch_kernel.cc # AICPU Kernel 在 Host 侧的下发逻辑 │ └── utils.cc # 工具模块 ├── op_kernel_aicpu/ │ ├── libp2p_aicpu_kernel.json # AICPU Kernel 算子描述文件 │ ├── aicpu_kernel.cc # AICPU Kernel 实现逻辑 │ └── exec_op.cc # AICPU 算子编排逻辑 ├── inc/ │ ├── hccl_custom_p2p.h # 自定义 send/recv 算子接口头文件 │ ├── common.h # 公共类型头文件 │ └── log.h # 日志宏定义 ├── scripts/ │ └── hccl_custom_p2p_check_cfg.xml # 签名配置文件 └── testcase/ ├── main.cc # 样例实现源文件 └── Makefile # 编译/构建配置文件

自定义算子编译工程依赖 HCCL 代码仓中的 cmake 配置和编译脚本 build.sh,其中:

  • cmake 包含 CMake 配置、MakeSelf 打包配置等内容
  • build.sh 是工程编译入口

一、环境准备

1. 环境要求

本样例支持以下昇腾产品:

  • Atlas A3 训练系列产品 / Atlas A3 推理系列产品
  • Atlas A2 训练系列产品

2. 安装 CANN Toolkit 开发套件包

参考 昇腾文档中心-CANN软件安装指南,安装最新版本 CANN Toolkit 开发套件包。

3. 配置环境变量

设置CANN环境变量:

# 默认路径安装,以root用户为例 source /usr/local/Ascend/cann/set_env.sh # 默认路径安装,以非root用户为例 source $HOME/Ascend/cann/set_env.sh # 指定路径安装 source ${install_path}/cann/set_env.sh

二、编译自定义算子包

hccl代码仓提供了自定义算子编译打包工程,该工程依赖代码仓中的如下文件:

├── build.sh # hccl代码仓根目录编译工程入口 ├── CMakeLists.txt # hccl代码仓根目录编译/构建配置文件 ├── cmake/ │ ├── config.cmake # CMake变量定义 │ ├── func.cmake # CMake函数定义 │ ├── package.cmake # 签名、打包函数定义 │ └── makeself_custom.cmake # MakeSelf打包逻辑 └── scripts/ ├── custom/install.sh # 自定义算子包安装脚本 └── sign/add_header_sign.py # AICPU 算子包签名脚本

因此,开发者首先需要下载hccl代码仓,然后在代码仓根目录下,执行build.sh进行编译,通过custom_ops_path指定自定义算子工程路径:

# 下载hccl代码仓 git clone https://gitcode.com/cann/hccl.git # 编译自定义算子包 bash build.sh --vendor=cust --ops=p2p --custom_ops_path=./examples/04_custom_ops_p2p

其中:

  • --vendor参数表示自定义算子标识
  • --ops参数表示自定义算子名称
  • --custom_ops_path参数表示自定义算子工程路径

三、安装自定义算子包

自定义算子安装包在./build_out目录下,通过--install参数进行安装:

./build_out/cann-hccl_custom_p2p_linux-<arch>.run --install --install-path=<ascend_cann_path>

其中:

  • <arch>是当前编译环境的系统架构
  • <ascend_cann_path>是可选参数,表示 CANN 软件包安装目录。默认为ASCEND_CUSTOM_OPP_PATHASCEND_OPP_PATH环境变量设置的路径

自定义算子包安装信息如下:

  • 头文件:${ASCEND_HOME_PATH}/opp/vendors/cust/include/hccl_custom_p2p.h
  • 动态库:${ASCEND_HOME_PATH}/opp/vendors/cust/lib64/libhccl_custom_p2p.so
  • AICPU 算子描述文件:${ASCEND_HOME_PATH}/opp/vendors/cust/aicpu/config/libp2p_aicpu_kernel.json
  • AICPU 算子包:${ASCEND_HOME_PATH}/opp/vendors/cust/aicpu/kernel/aicpu_hccl_custom_p2p.tar.gz
  • 安装脚本:${ASCEND_HOME_PATH}/opp/vendors/cust/scripts/install.sh

四、执行自定义算子

1. 关闭 AICPU 算子验签功能

# 查询AI CPU算子用户自定义验签能力使能状态 # False:关闭用户自定义验签能力 # True:开启用户自定义验签能力 for i in {0..7}; do npu-smi info -t custom-op-secverify-enable -i $i; done # 设置AI CPU算子用户自定义验签能力使能状态,使能开关 for i in {0..7}; do npu-smi set -t custom-op-secverify-enable -i $i -d 1; done # 查询AI CPU算子验签模式 # 0:关闭验证,不验签 # 1:华为证书,使用华为证书验签(默认) # 2:客户自定义证书 # 3:华为证书、客户自定义证书 # 4:开源社区证书 # 5:华为证书、开源社区证书 # 6:客户自定义证书、开源社区证书 # 7:华为证书、客户自定义证书、开源社区证书 for i in {0..7}; do npu-smi info -t custom-op-secverify-mode -i $i; done # 设置AI CPU算子验签模式,关闭验签 for i in {0..7}; do npu-smi set -t custom-op-secverify-mode -i $i -d 0; done

2. 修改 AICPU 白名单

AICPU 默认只加载白名单中配置的包,用户自行开发的 AICPU 算子包需配置到白名单中:

# 编译文件,以 root 用户默认安装路径为例 vim /usr/local/Ascend/cann/conf/ascend_package_load.ini

将下列内容追加到ascend_package_load.ini中:

name:aicpu_hccl_custom_p2p.tar.gz install_path:2 optional:true package_path:opp/vendors/cust/aicpu/kernel load_as_per_soc:false

各字段含义如下:

  • name: tar 包文件名
  • install_path: 安装到 Device 侧的路径
  • optional: 默认为 true
  • package_path: tar 包在Host侧CANN Toolkit包下的相对路径
  • load_as_per_soc: 是否每种芯片类型都加载

3. 编译样例

examples/04_custom_ops_p2p/testcase代码目录下执行如下命令:

# 编译样例 make

4. 执行样例

# 运行样例 make test # 或直接执行样例二进制 export LD_LIBRARY_PATH=${ASCEND_HOME_PATH}/opp/vendors/cust/lib64:${LD_LIBRARY_PATH} ./send_recv

5. 样例结果示例

偶数节点的sendBuf内容初始化为该节点的 DeviceId,然后将数据发送至下一奇数节点,因此各个奇数节点接收到的是上一节点的 DeviceId。

Found 8 NPU device(s) available rankId: 1, output: [ 0 0 0 0 0 0 0 0 ] rankId: 3, output: [ 2 2 2 2 2 2 2 2 ] rankId: 5, output: [ 4 4 4 4 4 4 4 4 ] rankId: 7, output: [ 6 6 6 6 6 6 6 6 ]

【免费下载链接】hccl集合通信库(Huawei Collective Communication Library,简称HCCL)是基于昇腾AI处理器的高性能集合通信库,为计算集群提供高性能、高可靠的通信方案项目地址: https://gitcode.com/cann/hccl

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

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

大语言模型行业应用全景:从技术原理到2026年落地实践

1. 项目概述&#xff1a;一场由大语言模型驱动的行业深度重塑最近和几位在不同行业做数字化转型的朋友聊天&#xff0c;大家不约而同地提到了同一个词&#xff1a;大语言模型。从去年开始&#xff0c;这股由ChatGPT掀起的浪潮&#xff0c;已经从科技圈的“玩具”和“效率工具”…

作者头像 李华
网站建设 2026/5/9 12:41:40

CANN/Cumsum算子测试报告

【免费下载链接】cann-competitions 本仓库用于 CANN 开源社区各类竞赛、开源课题、社区任务等课题发布、开发者作品提交和展示。 项目地址: https://gitcode.com/cann/cann-competitions 元信息&#xff08;请如实填写&#xff0c;此区块将由组委会脚本自动解析&#x…

作者头像 李华
网站建设 2026/5/9 12:40:21

AI与机制模型融合:构建可解释的肿瘤个性化治疗决策系统

1. 项目概述&#xff1a;当AI遇见机制模型&#xff0c;肿瘤治疗决策的新范式在肿瘤治疗的临床与科研一线待了十几年&#xff0c;我亲眼见证了从“一刀切”的标准化方案&#xff0c;到基于基因检测的“精准医疗”&#xff0c;再到如今方兴未艾的“个性化治疗”的演进。每一次进步…

作者头像 李华
网站建设 2026/5/9 12:38:45

CANN/catlass安全声明

CATLASS仓库 安全声明 【免费下载链接】catlass 本项目是CANN的算子模板库&#xff0c;提供NPU上高性能矩阵乘及其相关融合类算子模板样例。 项目地址: https://gitcode.com/cann/catlass 系统安全加固 用户可在运行系统配置时开启 ASLR&#xff08;级别2&#xff09;以…

作者头像 李华
网站建设 2026/5/9 12:38:44

IntelliJ IDEA JetBrains AI Assistant中使用Deekseep

背景&#xff1a;Deekseep在插件市场没有定制插件&#xff0c;只能通过Claude Code或者AI Assistant类似插件调用。本文通过AI Assistant的千问代理使用Deekseep&#xff0c;可能这种方式比较独特&#xff0c;较少人知道。千问设计、开发者也未必想到千问可以弯弯绕绕在AI Assi…

作者头像 李华
网站建设 2026/5/9 12:38:43

CANN索引器压缩后处理

custom-npu_indexer_compress_epilog 【免费下载链接】cann-recipes-infer 本项目针对LLM与多模态模型推理业务中的典型模型、加速算法&#xff0c;提供基于CANN平台的优化样例 项目地址: https://gitcode.com/cann/cann-recipes-infer 产品支持情况 产品是否支持Ascen…

作者头像 李华