news 2026/5/9 17:37:51

CANN/asc-devkit Add进位API文档

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
CANN/asc-devkit Add进位API文档

Add(支持进位)

【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C++标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit

产品支持情况

产品

是否支持

Ascend 950PR/Ascend 950DT

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

x

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

x

功能说明

根据mask对输入数据src0、src1进行按元素相加操作,将结果写入dst。如果src0, src1输入转换为uint32类型相加时超出uint32_t最大值,在carry(存放进位的MaskReg寄存器)中对应位置每4bit大小写1,否则写0。

计算公式如下:

操作carry的示例如下:

  • int32_t类型,a_i, b_i ∈[-2147483648, 2147483647]

    • 假设a_i = -2147483648, b_i = -2

      (uint32_t)a_i + (uint32_t)b_i = (uint64_t)uint_dst_i

      因为uint_dst_i >> 32 大于0,所以carry[(i%64):4*(i%64)] = 1

    • 假设a_i = -4, b_i = -2

      (uint32_t)a_i + (uint32_t)b_i = (uint64_t)uint_dst_i

      因为uint_dst_i >> 32 等于0,所以carry[(i%64):4*(i%64)] = 0

  • uint32_t类型,a_i, b_i ∈[0, 4294967295]

    • 假设a_i = 4294967295, b_i = 2

      (uint32_t)a_i + (uint32_t)b_i = (uint64_t)uint_dst_i

      因为uint_dst_i >> 32 大于0,所以carry[(i%64):4*(i%64)] = 1

    • 假设a_i = 4, b_i = 2

      (uint32_t)a_i + (uint32_t)b_i = (uint64_t)uint_dst_i

      因为uint_dst_i >> 32 等于0,所以carry[(i%64):4*(i%64)] = 0

函数原型

template <typename T = DefaultType, typename U> __simd_callee__ inline void Add(MaskReg& carry, U& dstReg, U& srcReg0, U& srcReg1, MaskReg& mask)

参数说明

表 1模板参数说明

参数名

描述

T

操作数数据类型。

Ascend 950PR/Ascend 950DT,支持的数据类型为:uint32_t/int32_t

U

srcReg0/srcReg1/dstReg RegTensor类型, 例如RegTensor<uint32_t>,由编译器自动推导,用户不需要填写。

表 2参数说明

参数名

输入/输出

描述

carry

输出

目的操作数。存放进位的MaskReg寄存器。

类型为MaskReg。

dstReg

输出

目的操作数。

类型为RegTensor。

srcReg0

输入

源操作数。

类型为RegTensor。

两个源操作数的数据类型需要与目的操作数保持一致。

srcReg1

输入

源操作数。

类型为RegTensor。

两个源操作数的数据类型需要与目的操作数保持一致。

mask

输入

源操作数元素操作的有效指示,详细说明请参考MaskReg。

返回值说明

约束说明

调用示例

template <typename T> static __simd_vf__ inline void AddVF(__ubuf__ T* dst0Addr, __ubuf__ T* dst1Addr, __ubuf__ T* src0Addr, __ubuf__ T* src1Addr, uint32_t count, uint16_t repeatTimes, uint32_t oneRepeatSize){ AscendC::Reg::RegTensor<T> srcReg0; AscendC::Reg::RegTensor<T> srcReg1; AscendC::Reg::RegTensor<T> dstReg0; AscendC::Reg::RegTensor<T> dstReg1; AscendC::Reg::MaskReg mask; AscendC::Reg::MaskReg carry = AscendC::Reg::CreateMask<uint8_t>(); for (uint16_t i = 0; i < repeatTimes; i++) { mask = AscendC::Reg::UpdateMask<T>(count); AscendC::Reg::LoadAlign(srcReg0, src0Addr + i * oneRepeatSize); AscendC::Reg::LoadAlign(srcReg1, src1Addr + i * oneRepeatSize); AscendC::Reg::Add(carry, dstReg0, srcReg0, srcReg1, mask); // 8*4B=32B align AscendC::Reg::StoreAlign<uint32_t, AscendC::Reg::MaskDist::DIST_NORM>(dst1Addr + i * 8, carry); AscendC::Reg::StoreAlign(dst0Addr + i * oneRepeatSize, dstReg0, mask); } }

【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C++标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit

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

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

CANN/GE DataFlow UDF错误码

UDF错误码 【免费下载链接】ge GE&#xff08;Graph Engine&#xff09;是面向昇腾的图编译器和执行器&#xff0c;提供了计算图优化、多流并行、内存复用和模型下沉等技术手段&#xff0c;加速模型执行效率&#xff0c;减少模型内存占用。 GE 提供对 PyTorch、TensorFlow 前端…

作者头像 李华
网站建设 2026/5/9 17:33:09

POSIX内存对齐分配函数posix_memalign()详解与应用

1. POSIX内存对齐分配函数posix_memalign()详解在C语言开发中&#xff0c;特别是在高性能计算和嵌入式系统领域&#xff0c;内存对齐是一个经常被忽视但极其重要的概念。当我们需要处理SIMD指令集&#xff08;如ARM的NEON或x86的SSE/AVX&#xff09;或者直接与硬件交互时&#…

作者头像 李华
网站建设 2026/5/9 17:32:59

CANN/atvc ATVC样例介绍

样例介绍 【免费下载链接】atvc ATVC&#xff08;Ascend C Templates for Vector Compute&#xff09;&#xff0c;是为基于Ascend C开发的典型Vector算子封装的一系列模板头文件的集合&#xff0c;可帮助用户快速开发典型Vector算子。 项目地址: https://gitcode.com/cann/a…

作者头像 李华
网站建设 2026/5/9 17:32:09

CANN/HCCL集群信息校验失败问题

集群信息校验失败问题 【免费下载链接】hccl 集合通信库&#xff08;Huawei Collective Communication Library&#xff0c;简称HCCL&#xff09;是基于昇腾AI处理器的高性能集合通信库&#xff0c;为计算集群提供高性能、高可靠的通信方案 项目地址: https://gitcode.com/ca…

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

空间智能体集群协同,构建智慧港口人机混行全域自治生态

空间智能体集群协同&#xff0c;构建智慧港口人机混行全域自治生态副标题&#xff1a;目标连续追踪 跨区域轨迹无缝拼接&#xff0c;保障港区高密度作业安全有序超大型港口作为人机混行、多设备联动、高密度作业的复杂开放场景&#xff0c;集卡、AGV、岸桥、场桥与作业人员交叉…

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

CANN/cann-bench 分组矩阵乘量化融合算子评测

GroupedMatmulSwigluQuant 算子 API 描述 【免费下载链接】cann-bench 评测AI在处理CANN领域代码任务的能力&#xff0c;涵盖算子生成、算子优化等领域&#xff0c;支撑模型选型、训练效果评估&#xff0c;统一量化评估标准&#xff0c;识别Agent能力短板&#xff0c;构建CANN领…

作者头像 李华