news 2026/5/10 7:21:57

CANN/ascend-transformer-boost ReshapeAndCache C++示例

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
CANN/ascend-transformer-boost ReshapeAndCache C++示例

加速库ReshapeAndCacheOperation C++ Demo

【免费下载链接】ascend-transformer-boost本项目是CANN提供的是一款高效、可靠的Transformer加速库,基于华为Ascend AI处理器,提供Transformer定制化场景的高性能融合算子。项目地址: https://gitcode.com/cann/ascend-transformer-boost

介绍

该目录下为加速库ReshapeAndCacheOperation C++调用示例。

使用说明

  • 首先source 对应的CANN和nnal包的安装路径

    1. source [cann安装路径]/set_env.sh 默认:source /usr/local/Ascend/ascend-toolkit/set_env.sh
    2. source [nnal安装路径]/set_env.sh
      默认:source /usr/local/Ascend/nnal/atb/set_env.sh
      ①. 如果使用加速库源码编译,source [加速库源码路径]/output/atb/set_env.sh
      例如: source ./ascend-transformer-boost/output/atb/set_env.sh
  • 运行demo

    bash build.sh

    注意

    • 使用cxx_abi=0(默认)时,设置D_GLIBCXX_USE_CXX11_ABI为0,即:

      g++ -D_GLIBCXX_USE_CXX11_ABI=0 -I ...
    • 使用cxx_abi=1时,更改D_GLIBCXX_USE_CXX11_ABI为1,即:

      g++ -D_GLIBCXX_USE_CXX11_ABI=1 -I ...
    • 提供的build脚本仅用于编译和运行reshape_and_cache_demo.cpp,如需编译其他demo,需要替换“reshape_and_cache_demo”为对应的cpp文件名

额外说明

示例中生成的数据不代表实际场景,如需数据生成参考请查看根目录下的python用例目录: tests/apitest/opstest/python/operations/reshape_and_cache/

产品支持情况

本op在Atlas A2/A3系列和Atlas 推理系列产品上实现有所区别

场景说明

提供demo分别对应不同产品的基础场景,编译运行时需要对应更改build脚本:

  1. Atlas A2/A3:

    参数设置:

    成员名称取值
    compressTypeCOMPRESS_TYPE_UNDEFINED
    kvCacheCfgK_CACHE_V_CACHE

    以下demo仅支持在Atlas A2/A3系列上运行。

    • reshape_and_cache_demo.cpp

      tensor名字数据类型数据格式维度信息
      keyfloat16nd[2, 32, 128]
      valuefloat16nd[2, 32, 128]
      keyCachefloat16nd[512, 128, 32, 128]
      valueCachefloat16nd[512, 128, 32, 128]
      slotMappingint32nd[2]
      keyCacheOutfloat16nd[512, 128, 32, 128]
      valueCacheOutfloat16nd[512, 128, 32, 128]
    • reshape_and_cache_demo_ds1.cpp

      tensor名字数据类型数据格式维度信息
      keybf16nd[5, 1, 128]
      valuebf16nd[5, 1, 128]
      keyCachebf16nd[9, 128, 1, 128]
      valueCachebf16nd[9, 128, 1, 128]
      slotMappingint32nd[5]
      keyCacheOutbf16nd[9, 128, 1, 128]
      valueCacheOutbf16nd[9, 128, 1, 128]
    • reshape_and_cache_demo_ds2.cpp

      tensor名字数据类型数据格式维度信息
      keybf16nd[1024, 1, 128]
      valuebf16nd[1024, 1, 128]
      keyCachebf16nd[9, 128, 1, 128]
      valueCachebf16nd[9, 128, 1, 128]
      slotMappingint32nd[1024]
      keyCacheOutbf16nd[9, 128, 1, 128]
      valueCacheOutbf16nd[9, 128, 1, 128]
    • reshape_and_cache_demo_ds3.cpp

      tensor名字数据类型数据格式维度信息
      keybf16nd[1, 1, 128]
      valuebf16nd[1, 1, 128]
      keyCachebf16nd[9, 128, 1, 128]
      valueCachebf16nd[9, 128, 1, 128]
      slotMappingint32nd[1]
      keyCacheOutbf16nd[9, 128, 1, 128]
      valueCacheOutbf16nd[9, 128, 1, 128]
  2. Atlas推理系列产品: reshape_and_cache_inference_demo.cpp

    • 相较于A2/A3的demo,本示例主要有以下修改点:

      • kvCache shape改为:[block_num, head_size \times head_num / 16, block_size, 16]。
      • kvCache数据格式改为:ACL_FORMAT_FRACTAL_NZ。

      参数设置:

      成员名称取值
      compressTypeCOMPRESS_TYPE_UNDEFINED
      kvCacheCfgK_CACHE_V_CACHE
      tensor名字数据类型数据格式维度信息
      keybf16nd[3, 4, 128]
      valuebf16nd[3, 4, 128]
      keyCachebf16nd[512, 32, 128, 16]
      valueCachebf16nd[512, 32, 128, 16]
      slotMappingint32nd[3]
      keyCacheOutbf16nd[512, 32, 128, 16]
      valueCacheOutbf16nd[512, 32, 128, 16]
    • 更改编译脚本为:g++ -D_GLIBCXX_USE_CXX11_ABI=$cxx_abi -I "${ATB_HOME_PATH}/include" -I "${ASCEND_HOME_PATH}/include" -L "${ATB_HOME_PATH}/lib" -L "${ASCEND_HOME_PATH}/lib64" reshape_and_cache_inference_demo.cpp demo_util.h -l atb -l ascendcl -o reshape_and_cache_inference_demo

    • 运行时调用:./reshape_and_cache_inference_demo

    • 该demo仅支持在Atlas 推理系列产品上运行

【免费下载链接】ascend-transformer-boost本项目是CANN提供的是一款高效、可靠的Transformer加速库,基于华为Ascend AI处理器,提供Transformer定制化场景的高性能融合算子。项目地址: https://gitcode.com/cann/ascend-transformer-boost

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

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

非线性状态空间模型的并行化与优化实践

1. 非线性状态空间模型的并行化挑战非线性状态空间模型(Nonlinear State Space Models, nSSMs)是时间序列分析和递归神经网络(RNN)中的核心工具,广泛应用于计算神经科学、金融预测和自然语言处理等领域。传统上&#x…

作者头像 李华
网站建设 2026/5/10 7:20:19

Go语言Kafka实战:高性能消息队列开发指南

Go语言Kafka实战:高性能消息队列开发指南 1. Kafka概述 Apache Kafka是分布式流处理平台,具有高吞吐量、低延迟、可持久化、可横向扩展等优点,广泛用于日志收集、实时数据管道、流处理等场景。 2. 生产者实现 package kafkaimport ("con…

作者头像 李华
网站建设 2026/5/10 7:17:13

CANN/metadef自动映射函数

AutoMappingFn 【免费下载链接】metadef Ascend Metadata Definition 项目地址: https://gitcode.com/cann/metadef 函数功能 自动映射回调函数。 函数原型 Status AutoMappingFn(const google::protobuf::Message *op_src, ge::Operator &op)参数说明 参数 输入…

作者头像 李华
网站建设 2026/5/10 7:15:53

技术招聘内卷化:如何在疯狂的市场中识别真人才?

在软件测试这个领域深耕多年,我亲眼见证了招聘市场从“求贤若渴”到“泥沙俱下”的剧烈转变。当“内卷”成为常态,简历上的技术栈越来越华丽,面试回答越来越像标准答案,我们这些身处其中的测试人,反而陷入了一种集体性…

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

ARM架构HFGRTR_EL2寄存器与虚拟化陷阱机制详解

1. ARM架构中的异常级别与虚拟化基础在深入探讨HFGRTR_EL2寄存器之前,我们需要先理解ARMv8/v9架构中的异常级别(Exception Levels)概念。异常级别是ARM处理器实现特权隔离和安全控制的核心机制,类似于x86架构中的Ring 0-Ring 3&am…

作者头像 李华
网站建设 2026/5/10 7:10:38

MockGPS虚拟定位深度解析:Android位置模拟终极方案

MockGPS虚拟定位深度解析:Android位置模拟终极方案 【免费下载链接】MockGPS Android application to fake GPS 项目地址: https://gitcode.com/gh_mirrors/mo/MockGPS 在移动应用开发测试、隐私保护和地理定位功能验证等场景中,精准的位置模拟需…

作者头像 李华