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

CANN/asc-devkit asc_mul_add函数

asc_mul_add

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

产品支持情况

产品是否支持
Atlas A3 训练系列产品/Atlas A3 推理系列产品
Atlas A2 训练系列产品/Atlas A2 推理系列产品

功能说明

执行矢量的乘加运算。计算公式如下:

$$ dst_i = (src0_i * dst_i) + src1_i $$

函数原型

  • 前n个数据计算

    __aicore__ inline void asc_mul_add(__ubuf__ half* dst, __ubuf__ half* src0, __ubuf__ half* src1, uint32_t count) __aicore__ inline void asc_mul_add(__ubuf__ float* dst, __ubuf__ float* src0, __ubuf__ float* src1, uint32_t count)
  • 高维切分计算

    __aicore__ inline void asc_mul_add(__ubuf__ half* dst, __ubuf__ half* src0, __ubuf__ half* src1, uint8_t repeat, uint8_t dst_block_stride, uint8_t src0_block_stride, uint8_t src1_block_stride, uint8_t dst_repeat_stride, uint8_t src0_repeat_stride, uint8_t src1_repeat_stride) __aicore__ inline void asc_mul_add(__ubuf__ float* dst, __ubuf__ float* src0, __ubuf__ float* src1, uint8_t repeat, uint8_t dst_block_stride, uint8_t src0_block_stride, uint8_t src1_block_stride, uint8_t dst_repeat_stride, uint8_t src0_repeat_stride, uint8_t src1_repeat_stride)
  • 同步计算

    __aicore__ inline void asc_mul_add_sync(__ubuf__ half* dst, __ubuf__ half* src0, __ubuf__ half* src1, uint32_t count) __aicore__ inline void asc_mul_add_sync(__ubuf__ float* dst, __ubuf__ float* src0, __ubuf__ float* src1, uint32_t count)

参数说明

参数名输入/输出描述
dst输出目的操作数(矢量)的起始地址。
src0输入源操作数(矢量)的起始地址。
src1输入源操作数(矢量)的起始地址。
count输入参与计算的元素个数。
repeat输入迭代次数。
dst_block_stride输入目的操作数单次迭代内不同DataBlock间地址步长。
src0_block_stride输入源操作数0单次迭代内不同DataBlock间地址步长。
src1_block_stride输入源操作数1单次迭代内不同DataBlock间地址步长。
dst_repeat_stride输入目的操作数相邻迭代间相同DataBlock的地址步长。
src0_repeat_stride输入源操作数0相邻迭代间相同DataBlock的地址步长。
src1_repeat_stride输入源操作数1相邻迭代间相同DataBlock的地址步长。

返回值说明

流水类型

PIPE_V

约束说明

  • dst、src0、src1的起始地址需要32字节对齐。
  • 操作数地址重叠约束请参考通用地址重叠约束。

调用示例

constexpr uint64_t total_length = 128; // total_length指参与计算的数据长度 __ubuf__ half src0[total_length]; __ubuf__ half src1[total_length]; __ubuf__ half dst[total_length]; asc_mul_add(dst, src0, src1, total_length); // dst = (src0 * dst) + src1 // src0 [1, 2, 3, ..., 128] // src1 [1, 1, 1, ..., 1] // 计算前dst [2, 2, 2, ..., 2] // 计算后dst [3, 5, 7, ..., 257]

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

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

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

相关文章:

  • 2026武汉热水器维修实测:不加热、漏水、水温异常故障排查+价格参考 - 一步到家
  • Numix图标主题完全解析:1000+高质量SVG图标的秘密
  • purl.js与AMD模块系统:终极URL解析器在不同环境中的完整使用指南 [特殊字符]
  • 【新】5p216基于Hadoop的CBA球员数据可视化分析系统的设计3(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码
  • Node.js企业级配置管理架构深度解析:多格式配置融合与分层设计指南
  • PCSX2模拟器性能优化方法论:3大架构瓶颈与5层调优策略深度解析
  • 探索Awesome Agent Skills:如何通过1000+官方技能库提升AI助手生产力
  • OpenCV —— 角点检测实战:从Harris、Shi-Tomasi到FAST的性能对比与选型指南
  • HackberryPiCM5磁吸背板应用:如何使用MagSafe配件增强便携性
  • Insomnia:2024年最完整的开源跨平台API测试工具终极指南
  • purl.js片段解析实战:处理hash路由和URL锚点参数
  • SublimeREPL:在编辑器内构建多语言交互式编程环境的终极方案
  • Upscayl图像放大终极指南:从模糊到高清的AI魔法解密
  • 超越内置工具:为什么选择AsciiFBXExporterForUnity进行Unity模型导出?
  • CANN/asc-devkit SIMD矢量标量比较API
  • 方法耗时计算 + 匿名内部类 - -z-w-h
  • 如何在Spotcast中实现播客自动播放?最新功能全解析
  • h264_analyze工具使用指南:轻松调试H.264视频文件的实用技巧
  • StyleGAN在GenForce中的实现原理:从理论到代码的完整解析
  • ComfyUI-KJNodes:5步掌握AI工作流效率跃升的核心技术
  • 如何安装BlockParty广告拦截器?iOS与macOS平台的快速上手教程
  • DeepLabCut入门指南:5步快速掌握无标记动物姿态估计技术 [特殊字符]
  • 3步解决DeepSeek-V4模型在Atlas A2/A3硬件部署难题:AMCT量化转换实战指南
  • 解决Express.js日志难题:express-winston实战案例分析 [特殊字符]
  • CANN/asc-devkit SIMD bfloat16转fp4x2函数
  • 从零极点分布到系统行为:频率响应与稳定性的直观解析
  • 为什么LocateAnything-3B能成为视觉定位的终极解决方案:实战技巧与完整指南
  • Markoff社区与支持:获取帮助与分享使用经验
  • grunt-concurrent高级配置指南:limit、logConcurrentOutput、indent参数详解
  • TPM架构探秘(三):从可信根到主动免疫——TPM 2.0架构下的可信平台构建实践