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

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),仅供参考

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

相关文章:

  • Copy4AI:智能代码复制工具,优化AI编程助手上下文交互
  • WarcraftHelper终极指南:魔兽争霸III现代化优化完整方案
  • Go语言RabbitMQ实战:企业级消息队列开发
  • WAF拦不住?一篇搞懂SQL注入绕过原理与实战
  • 2026年上饶GEO优化公司排行:本土服务商客观盘点 - 打我的的
  • 量子启发优化在信用评分模型中的应用与优化
  • CUDA内核内存安全验证:挑战与Model2Kernel解决方案
  • 终极指南:3分钟解锁iOS应用自由,TrollInstallerX完整安装教程
  • Go语言NSQ实战:轻量级高性能消息系统
  • UltraScale+架构解析:FPGA技术演进与核心创新
  • Page Assist:5分钟快速上手,让本地AI模型成为你的网页助手
  • 使用Mergoo开源库实现LLM专家混合:原理、配置与实战指南
  • Linux 系统中怎么查看磁盘使用情况?
  • Linux Deadline 调度器的 sched_setattr:Deadline 参数配置
  • 2026年论文AIGC率高达90%?亲测5个去AI痕迹妙招,保姆级降重教程(附降低AI工具) - 降AI实验室
  • 计算机专业必看:从 “普通学生” 到校园大神,没毕业就经济独立的 3 个方法
  • 2026届最火的降AI率工具解析与推荐
  • 如何理解hph的构造与设计要点
  • 钉钉群助手与钉钉工作通知消息在到达率上有什么对比差异?
  • 山水有相逢,仙居聚友居——神仙居畔的实力民宿推荐 - 品牌策略师
  • Linux Deadline 调度器的参数验证:内核对三参数的合法性检查
  • LeaguePrank终极指南:快速免费打造个性化英雄联盟界面
  • AutoResearch:基于LLM的代码自动化优化实践与核心机制解析
  • 利用Taotoken模型广场为AIGC应用选择最佳文本生成模型
  • 艺术史视角下的生成式AI创作:审美框架如何重塑技术认知与工作流
  • HPH构造内部结构图解
  • OpenClaw实战案例库:13个落地场景解析与AI Agent构建指南
  • 跳槽面试高频题:AI/测试/开发岗2026版——软件测试从业者的破局指南
  • Linux Deadline 调度器的动态参数调整:运行时的参数更新
  • 2026年3月必看:市场认可的氪85生产厂家大盘点,同位素气体/氪85/碳13气体/氘代甲醇,氪85源头厂家选哪家 - 品牌推荐师