news 2026/5/10 0:12:34

CANN/pyasc向量乘加运算API

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
CANN/pyasc向量乘加运算API

asc.language.basic.axpy

【免费下载链接】pyasc本项目为Python用户提供算子编程接口,支持在昇腾AI处理器上加速计算,接口与Ascend C一一对应并遵守Python原生语法。项目地址: https://gitcode.com/cann/pyasc

asc.language.basic.axpy(dst: LocalTensor, src: LocalTensor, scalar: int | float, mask: int, repeat_times: int, repeat_params: UnaryRepeatParams, is_set_mask: bool = True) → None

asc.language.basic.axpy(dst: LocalTensor, src: LocalTensor, scalar: int | float, mask: List[int], repeat_times: int, repeat_params: UnaryRepeatParams, is_set_mask: bool = True) → None

asc.language.basic.axpy(dst: LocalTensor, src: LocalTensor, scalar: int | float, count: int) → None

源操作数src中每个元素与标量求积后和目的操作数dst中的对应元素相加,计算公式如下: dst[i] = src[i] * scalar + dst[i]

对应的Ascend C函数原型

  • tensor前n个数据计算
    template <typename T, typename U> __aicore__ inline void Axpy(const LocalTensor<T>& dst, const LocalTensor<U>& src, const U& scalarValue, const int32_t& count)
  • tensor高维切分计算
    • mask逐bit模式
      template <typename T, typename U, bool isSetMask = true> __aicore__ inline void Axpy(const LocalTensor<T>& dst, const LocalTensor<U>& src, const U& scalarValue, uint64_t mask[], const uint8_t repeatTime, const UnaryRepeatParams& repeatParams)
    • mask连续模式
      template <typename T, typename U, bool isSetMask = true> __aicore__ inline void Axpy(const LocalTensor<T>& dst, const LocalTensor<U>& src, const U& scalarValue, uint64_t mask, const uint8_t repeatTime, const UnaryRepeatParams& repeatParams)

参数说明

  • is_set_mask:是否在接口内部设置mask。
    • True,表示在接口内部设置mask。
    • False,表示在接口外部设置mask,开发者需要使用set_vector_mask接口设置mask值。这种模式下,本接口入参中的mask值必须设置为占位符MASK_PLACEHOLDER。
  • dst:目的操作数。类型为LocalTensor,支持的TPosition为VECIN/VECCALC/VECOUT。LocalTensor的起始地址需要32字节对齐。
  • src: 源操作数。类型为LocalTensor,支持的TPosition为VECIN/VECCALC/VECOUT。LocalTensor的起始地址需要32字节对齐。
  • scalar:源操作数,scalar标量。scalar的数据类型需要和src保持一致。
  • count:参与计算的元素个数。
  • mask: 控制每次迭代内参与计算的元素。
    • 逐bit模式:mask为数组形式。数组长度和数组元素的取值范围和操作数的数据类型有关。可以按位控制哪些元素参与计算,bit位的值为1表示参与计算,0表示不参与。
      • 操作数 16 位:数组长度 2,mask[0], mask[1] ∈ [0, 2⁶⁴-1],且不能同时为 0
      • 操作数 32 位:数组长度 1,mask[0] ∈ (0, 2⁶⁴-1]
      • 操作数 64 位:数组长度 1,mask[0] ∈ (0, 2³²-1]
      • 例如:mask = [8, 0],表示仅第 4 个元素参与计算
    • 连续模式:mask为整数形式。表示前面连续多少个元素参与计算。取值范围和操作数的数据类型有关,数据类型不同,每次迭代内能够处理的元素个数最大值不同。
      • 操作数 16 位:mask ∈ [1, 128]
      • 操作数 32 位:mask ∈ [1, 64]
      • 操作数 64 位:mask ∈ [1, 32]
  • repeat_time:重复迭代次数。矢量计算单元,每次读取连续的256Bytes数据进行计算,为完成对输入数据的处理, 必须通过多次迭代(repeat)才能完成所有数据的读取与计算。repeat_time表示迭代的次数。
  • repeat_params:控制操作数地址步长的参数。UnaryRepeatParams类型,包含操作数相邻迭代间相同data_block的地址步长,操作数同一迭代内不同data_block的地址步长等参数。

约束说明

  • 操作数地址对齐要求请参见 《Ascend C算子开发接口》 中的“通用说明和约束-通用地址对齐约束”。
  • 操作数地址重叠约束请参考 《Ascend C算子开发接口》 中的“通用说明和约束-通用地址重叠约束”。

使用tensor高维切分计算接口时,src和scalar的数据类型为half、dst的数据类型为float的情况下, 一个迭代处理的源操作数元素个数需要和目的操作数保持一致,所以每次迭代选取前4个data_block参与计算。 设置repeat_stride参数和mask参数以及地址重叠时,需要考虑该限制。

调用示例

  • tensor高维切分计算样例-mask连续模式
    params = asc.UnaryRepeatParams(1, 1, 8, 8) asc.axpy(dst, src, 2.0, mask=128, repeat_time=4, repeat_params=params)
  • tensor高维切分计算样例-mask逐bit模式
    uint64_max = 2**64 - 1 mask = [uint64_max, uint64_max] params = asc.UnaryRepeatParams(1, 1, 8, 8) asc.axpy(dst, src, 2.0, mask=mask, repeat_time=4, repeat_params=params)
  • tensor前n个数据计算样例
    asc.axpy(dst, src, 2.0, count=512)

【免费下载链接】pyasc本项目为Python用户提供算子编程接口,支持在昇腾AI处理器上加速计算,接口与Ascend C一一对应并遵守Python原生语法。项目地址: https://gitcode.com/cann/pyasc

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

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

《龙虾OpenClaw系列:从嵌入式裸机到芯片级系统深度实战60课》041、虚拟内存与MMU——页表管理与地址转换

OpenClaw系列041:虚拟内存与MMU——页表管理与地址转换 一次让我熬夜到凌晨三点的MMU故障 去年做一款基于Cortex-A7的工业控制器,板子跑起来后,DMA搬运的数据总是莫名其妙地错位。用逻辑分析仪抓总线,发现DMA写的是物理地址0x8000_0000,但CPU读到的却是0x8000_1000——整…

作者头像 李华
网站建设 2026/5/10 0:09:58

CANN/metadef:数据类型转换

AscendStringToDataType 【免费下载链接】metadef Ascend Metadata Definition 项目地址: https://gitcode.com/cann/metadef 函数功能 将DataType字符串表达转化为DataType类型值。 使用该接口需要包含type_utils.h头文件。 #include "graph/utils/type_utils.…

作者头像 李华
网站建设 2026/5/10 0:08:05

Hermes Agent项目中集成Taotoken多模型API的步骤

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 Hermes Agent项目中集成Taotoken多模型API的步骤 1. 准备工作&#xff1a;获取Taotoken API Key与模型ID 在开始配置之前&#xf…

作者头像 李华
网站建设 2026/5/10 0:07:54

AI 后台 MCP 工具调用静默跳过:从链路断层到分层校验的治理实践

问题现象 在 AI 后台任务执行过程中&#xff0c;用户侧观察到部分本应由 MCP 协议调用的外部工具未被实际执行&#xff0c;但任务状态仍被标记为“成功”。前端无报错提示&#xff0c;日志中无异常堆栈&#xff0c;仅能在部分链路追踪片段中发现工具调用请求未发出。该问题在长…

作者头像 李华
网站建设 2026/5/10 0:07:14

短网址生成系统源码 短链接生成 网址缩短

内容目录一、详细介绍二、效果展示1.部分代码2.效果图展示三、学习资料下载一、详细介绍 短网址生成系统是一个功能完善、高性能的企业级短链接服务平台&#xff0c;支持多域名、AB测试、用户管理、实时统计等功能。 功能特性&#xff1a; 1、核心功能 短链接生成: 支持自定义…

作者头像 李华
网站建设 2026/5/10 0:04:23

VR+AI赋能科学发现:从量子光学到沉浸式数据探索

1. 项目概述&#xff1a;当VR遇见AI科学发现最近几年&#xff0c;我一直在关注一个特别有意思的交叉领域&#xff1a;如何把虚拟现实&#xff08;VR&#xff09;这种沉浸感极强的技术&#xff0c;和人工智能&#xff08;AI&#xff09;驱动的科学发现过程结合起来。听起来有点科…

作者头像 李华