news 2026/7/16 16:42:00

CANN/Ascend C L1到L0B搬运函数

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
CANN/Ascend C L1到L0B搬运函数

asc_copy_l12l0b_mx

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

产品支持情况

  • Ascend 950PR/Ascend 950DT:支持
  • Atlas A3 训练系列产品/Atlas A3 推理系列产品:不支持
  • Atlas A2 训练系列产品/Atlas A2 推理系列产品:不支持
  • Atlas 200I/500 A2 推理产品:不支持
  • Atlas 推理系列产品AI Core:不支持
  • Atlas 推理系列产品Vector Core:不支持
  • Atlas 训练系列产品:不支持

功能说明

头文件路径:"c_api/cube_datamove/cube_datamove.h"

将Mx scale矩阵从L1 Buffer搬运到L0B Buffer。

函数原型

  • 常规搬运

    __aicore__ inline void asc_copy_l12l0b_mx(uint64_t dst, __cbuf__ fp8_e8m0_t* src, uint16_t x_start_pos, uint16_t y_start_pos, uint8_t x_step, uint8_t y_step, uint16_t src_stride, uint16_t dst_stride)
  • 同步搬运

    __aicore__ inline void asc_copy_l12l0b_mx_sync(uint64_t dst, __cbuf__ fp8_e8m0_t* src, uint16_t x_start_pos, uint16_t y_start_pos, uint8_t x_step, uint8_t y_step, uint16_t src_stride, uint16_t dst_stride)

参数说明

参数名输入/输出描述
dst输出目的操作数的地址。
src输入源操作数(Mx scale矩阵)的起始地址,数据类型为fp8_e8m0_t。
x_start_pos输入源操作数X轴方向的起始位置,即M维度方向,单位为1个分形(1个单位代表一个32B的分形)。
y_start_pos输入源操作数Y轴方向的起始位置,即K维度方向,单位为32B。
x_step输入源操作数X轴方向搬运长度,即M维度方向,单位为1个分形(1个单位代表一个32B的分形)。取值范围:[0, 255]。
y_step输入源操作数Y轴方向搬运长度,即K维度方向,单位为32B。取值范围:[0, 255]。
src_stride输入源操作数X轴方向前一个分形起始地址与后一个分形起始地址的间隔,单位为32B。
dst_stride输入目的操作数X轴方向前一个分形起始地址与后一个分形起始地址的间隔,单位为32B。

返回值说明

流水类型

PIPE_MTE1

约束说明

  • scale矩阵的分形固定为(16, 2, 16),对应L0B Buffer的分形为(16, 32, 16),占L0B Buffer地址的1 / 16,需要按照这种地址约束存放地址。
  • dst(L0B Buffer的地址)的数据类型支持fp4x2_e2m1_t、fp4x2_e1m2_t、fp8_e5m2_t、fp8_e4m3fn_t,src的数据类型支持fp8_e8m0_t。
  • dst、src的起始地址需要32字节对齐。

调用示例

__cbuf__ fp8_e8m0_t src[1024]; __cb__ fp8_e5m2_t dst[1024]; uint16_t x_start_pos = 0; uint16_t y_start_pos = 0; uint8_t x_step = 0; uint8_t y_step = 0; uint16_t src_stride = 8; uint16_t dst_stride = 8; uint64_t mx_dst_addr = static_cast<uint64_t>(reinterpret_cast<uintptr_t>(dst)) / 16; asc_copy_l12l0b_mx(mx_dst_addr, src, x_start_pos, y_start_pos, x_step, y_step, src_stride, dst_stride);

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

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

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

上下拉电阻取值全解析:从基础原理到工程实战技巧

在硬件工程师的笔面试中&#xff0c;上下拉电阻的取值问题几乎是必考题。很多初学者觉得"不就是个电阻嘛&#xff0c;随便选个10k、4.7k就行"&#xff0c;但实际项目中却经常因为电阻选型不当导致信号质量问题&#xff0c;甚至需要改版重来。本文将从基础概念到工程实…

作者头像 李华
网站建设 2026/7/16 16:41:21

7-Zip-Zstandard:支持Zstd、Brotli等现代压缩算法的7-Zip增强版

7-Zip-Zstandard&#xff1a;支持Zstd、Brotli等现代压缩算法的7-Zip增强版 【免费下载链接】7-Zip-zstd 7-Zip with support for Brotli, Fast-LZMA2, Lizard, LZ4, LZ5 and Zstandard 项目地址: https://gitcode.com/gh_mirrors/7z/7-Zip-zstd 7-Zip-Zstandard是经典的…

作者头像 李华
网站建设 2026/7/16 16:40:46

MultipleWindow3dScene高级技巧:窗口管理器的完整实现解析

MultipleWindow3dScene高级技巧&#xff1a;窗口管理器的完整实现解析 【免费下载链接】multipleWindow3dScene based on bgstaal/multipleWindow3dScene 项目地址: https://gitcode.com/gh_mirrors/mul/multipleWindow3dScene MultipleWindow3dScene是一个基于three.js…

作者头像 李华
网站建设 2026/7/16 16:39:52

如何提取和解析Android OTA文件:rom_extract.sh与deltaota.sh完整教程

如何提取和解析Android OTA文件&#xff1a;rom_extract.sh与deltaota.sh完整教程 【免费下载链接】android_tools Bash scripts for ROM development stuff. 项目地址: https://gitcode.com/gh_mirrors/and/android_tools Android OTA文件提取与解析是ROM开发中的关键步…

作者头像 李华
网站建设 2026/7/16 16:39:38

Python魔法方法:一元操作符背后的函数重载

1. 初识Python一元操作符重载 第一次看到 obj 这样的写法时&#xff0c;我盯着屏幕愣了三秒——这玩意儿居然能编译通过&#xff1f;后来才知道&#xff0c;这是Python魔法方法在背后悄悄施展的"障眼法"。就像魔术师总爱用 __init__ 变出对象&#xff0c;用 __s…

作者头像 李华
网站建设 2026/7/16 16:39:05

Clojure.java.jdbc高级技巧:自定义类型映射与结果集处理

Clojure.java.jdbc高级技巧&#xff1a;自定义类型映射与结果集处理 【免费下载链接】java.jdbc JDBC from Clojure (formerly clojure.contrib.sql) 项目地址: https://gitcode.com/gh_mirrors/ja/java.jdbc Clojure.java.jdbc是一个成熟稳定的Clojure JDBC数据库访问库…

作者头像 李华