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

CANN/pyasc昇腾SoftMax算子API文档

asc.language.adv.softmax

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

asc.language.adv.softmax(dst: LocalTensor, sum: LocalTensor, max: LocalTensor, src: LocalTensor, tiling: SoftmaxTiling, temp_buffer: LocalTensor | None = None, reuse_source: bool = False, basic_block: bool = False, data_format_nz: bool = False) → None

将输入tensor[m0, m1, …mt, n](t大于等于0)的非尾轴长度相乘的结果看作m,则输入tensor的shape看作[m, n]。 为方便理解,通过Python脚本实现的方式,表达其计算公式(以输入为ND格式为例)如下,其中src是源操作数(输入),dst、sum、max为目的操作数(输出)。

def softmax(src): # 基于last轴进行rowmax(按行取最大值)处理 max = np.max(src, axis=-1, keepdims=True) sub = src - max exp = np.exp(sub) # 基于last轴进行rowsum(按行求和)处理 sum = np.sum(exp, axis=-1, keepdims=True) dst = exp / sum return dst, max, sum

对应的Ascend C函数原型

  • 接口框架申请临时空间
    • LocalTensor的数据类型相同
      template <typename T, bool isReuseSource = false, bool isBasicBlock = false, bool isDataFormatNZ = false, const SoftmaxConfig& config = SOFTMAX_DEFAULT_CFG> __aicore__ inline void SoftMax(const LocalTensor<T>& dstTensor, const LocalTensor<T>& sumTensor, const LocalTensor<T>& maxTensor, const LocalTensor<T>& srcTensor, const SoftMaxTiling& tiling, const SoftMaxShapeInfo& softmaxShapeInfo = {})
    • LocalTensor的数据类型不同
      template <typename T, bool isReuseSource = false, bool isBasicBlock = false, bool isDataFormatNZ = false, const SoftmaxConfig& config = SOFTMAX_DEFAULT_CFG> __aicore__ inline void SoftMax(const LocalTensor<half>& dstTensor, const LocalTensor<float>& sumTensor, const LocalTensor<float>& maxTensor, const LocalTensor<half>& srcTensor, const SoftMaxTiling& tiling, const SoftMaxShapeInfo& softmaxShapeInfo = {})
    • 不带sumTensor和maxTensor参数
      template <typename T, bool isReuseSource = false, bool isBasicBlock = false, const SoftmaxConfig& config = SOFTMAX_DEFAULT_CFG> __aicore__ inline void SoftMax(const LocalTensor<T>& dstTensor, const LocalTensor<T>& srcTensor, const SoftMaxTiling& tiling, const SoftMaxShapeInfo& softmaxShapeInfo = {})
  • 通过sharedTmpBuffer入参传入临时空间
    • LocalTensor的数据类型相同
      template <typename T, bool isReuseSource = false, bool isBasicBlock = false, bool isDataFormatNZ = false, const SoftmaxConfig& config = SOFTMAX_DEFAULT_CFG> __aicore__ inline void SoftMax(const LocalTensor<T>& dstTensor, const LocalTensor<T>& sumTensor, const LocalTensor<T>& maxTensor, const LocalTensor<T>& srcTensor, const LocalTensor<uint8_t>& sharedTmpBuffer, const SoftMaxTiling& tiling, const SoftMaxShapeInfo& softmaxShapeInfo = {})
    • LocalTensor的数据类型不同
      template <typename T, bool isReuseSource = false, bool isBasicBlock = false, bool isDataFormatNZ = false, const SoftmaxConfig& config = SOFTMAX_DEFAULT_CFG> __aicore__ inline void SoftMax(const LocalTensor<half>& dstTensor, const LocalTensor<float>& sumTensor, const LocalTensor<float>& maxTensor, const LocalTensor<half>& srcTensor, const LocalTensor<uint8_t>& sharedTmpBuffer, const SoftMaxTiling& tiling, const SoftMaxShapeInfo& softmaxShapeInfo = {})
    • 不带sumTensor和maxTensor参数
      template <typename T, bool isReuseSource = false, bool isBasicBlock = false, const SoftmaxConfig& config = SOFTMAX_DEFAULT_CFG> __aicore__ inline void SoftMax(const LocalTensor<T>& dstTensor, const LocalTensor<T>& srcTensor, const LocalTensor<uint8_t>& sharedTmpBuffer, const SoftMaxTiling& tiling, const SoftMaxShapeInfo& softmaxShapeInfo = {})

参数说明

  • dst:目的操作数。
  • sum:目的操作数。
  • max:目的操作数。
  • src:源操作数。
  • tiling:SoftMax计算所需Tiling信息。
  • tmp_buffer:临时空间。
  • reuse_source:该参数预留,传入默认值false即可。
  • basic_block:src和dst的shape信息和Tiling切分策略满足基本块要求的情况下,可以使能该参数用于提升性能,默认不使能。
  • data_format_nz:当前输入输出的数据格式是否为NZ格式,默认数据格式为ND,即默认取值为false。

约束说明

  • src和dst的Tensor空间可以复用。
  • sum和max为输出,并且last轴长度必须固定32Byte,非last轴大小需要和src以及dst保持一致。
  • sum和max的数据类型需要保持一致。
  • 操作数地址对齐要求请参见 《Ascend C算子开发接口》 中的“通用说明和约束-通用地址对齐约束”。
  • 不支持tmp_buffer与源操作数和目的操作数地址重叠。

开发者需要对GM上的原始输入(ori_src_M, ori_src_K)在M或K方向补齐数据到(src_M, src_K),补齐的数据会参与部分运算, 在输入输出复用的场景下,API的计算结果会覆盖src中补齐的原始数据,在输入输出不复用的场景下, API的计算结果会覆盖dst中对应src补齐位置的数据。

调用示例

src_local = in_queue_src.deque(T) sum_temp_local = sum_queue.alloc_tensor(T) max_temp_local = max_queue.alloc_tensor(T) dst_local = out_queue_dst.alloc_tensor(T) src_shape = asc.SoftMaxShapeInfo(height, width, height, width); asc.adv.softmax(dst_local, sum_temp_local, max_temp_local, srcLocal, tiling, src_shape); out_queue_dst.EnQue(dstLocal) max_queue.free_tensor(max_temp_local) sum_queue.free_tensor(sum_temp_local) in_queue_src.free_tensor(src_local)

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

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

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

相关文章:

  • 工程教育中基于角色的AI能力框架:从认知到协同的整合路径
  • 多模态大模型赋能港口,从视频孪生迈向空间原生智能
  • 2026年半导体超纯水夹钳流量传感器推荐:五家优选深度对比 - 科技焦点
  • 【图像处理】基于数学形态学的数字视网膜图像血管提取 (DRIVE) 数据集分割方法附matlab代码
  • 多智能体协作框架设计:从需求到交付的自动化产品开发实践
  • 2026年亦缇玻尿酸综合评测:品牌现状与市场表现 - 江湖评测
  • CANN/pto-isa通信测试问题诊断手册
  • AI赋能敏捷开发:从需求到部署的智能化实践与效率革命
  • cann/runtime初始化指南
  • 包头就近入学政策解读:昆区城区小学教学水平究竟如何? - 品牌推荐大师
  • AI智能增长如何影响其自我设计能力?比例论与收益递减论之争
  • 构建企业级MLOps平台:从数据湖到实验管理的全流程实践
  • AI赋能非洲农业:技术落地挑战与可持续路径实践
  • 集成学习在濒危语言文本分类中的实践:小样本场景下的NLP解决方案
  • pH计(酸度计)选型参考:2026年5月国内外笔式pH 计,台式pH 计,实验室pH 计知名品牌与正规生产厂家汇总 - 品牌推荐大师1
  • 内容创作团队如何利用Taotoken多模型能力提升稿件生成效率
  • 强化学习在精准健康干预中的应用:从多臂老虎机到个性化策略优化
  • HarmonyOS 6 实战:首页标题栏右上角智能体入口接入指南
  • CANN DeepSeek-V3.2-Exp推理优化实践
  • CANN MXFP4量化矩阵乘算子
  • 体验Taotoken多模型聚合端点的低延迟与高稳定性连接
  • CANN/graph-autofusion SuperKernel开发指南
  • 图片翻译高精度软件有哪些?高精度的AI图片翻译工具盘点 - 三年美工五年设计
  • AI赋能复合材料声发射源定位:从物理模型到数据驱动的毫米级精度突破
  • 从簧下质量优化看极氪9X性能重构:碳陶制动系统的工程逻辑 - RF_RACER
  • 江西安羿环境科技:南昌灭蟑螂怎么联系 - LYL仔仔
  • CANN/ge GE架构文档
  • React 19 + TypeScript + Zod 构建现代化天气查询应用实战
  • AEC行业AI与机器人应用的九大伦理挑战与应对策略
  • 端边云协同空间大模型,镜像视界重构智慧港口感知新基座