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

CANN/ascend-transformer-boost算子演示示例

TransdataOp使用说明

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

TransdataOp

功能

TransdataOp函数用于创建并执行一个transdata操作,将输入的 ND 格式的tensor转换为FRACTAL_NZ(后文简称为NZ)格式的tensor

函数介绍

atb::Status TransdataOp(atb::Context *contextPtr, aclrtStream stream, const atb::Tensor inTensor, const aclDataType tensorType, atb::Tensor &outTensor, std::vector<int64_t> shape)
输入参数
参数名称含义
contextPtr指向atb::Context的指针,用于提供上下文信息
stream用于执行操作的流
inTensor待转换的 ND 格式的tensor
tensorType输入 tensor 的数据类型
outTensor输出 tensor
outTensor输出的FRACTAL_NZ格式的 tensor,函数执行后将被填充
shape输出 tensor的维度
返回值

atb::Status: 函数执行的状态码,表示操作是否成功。如果成功,返回atb::ErrorType::NO_ERROR,否则返回相应的错误码。

GetShape

功能

GetShape函数用于根据输入的inShape判断其是 NZ格式的shape还是ND 格式的shape,然后分别计算出两种格式下的shape

函数介绍

atb::Status GetShape(const aclDataType tensorType, const std::vector<int64_t> &inShape, std::vector<int64_t> &ndShape, std::vector<int64_t> &nzShape)
输入参数
参数名称含义
tensorType输入 tensor 的数据类型,不同数据类型的tensor的格式转换方式不同
inShape输入 tensor 的维度
ndShape输出的 ND 格式的 shape
nzShape输出的 NZ 格式的 shape
返回值

atb::Status: 函数执行的状态码,表示操作是否成功。如果成功,返回atb::ErrorType::NO_ERROR,否则返回相应的错误码。

Transdata使用说明

注意:

  • 使用TransdataOp转换ND格式的tensor时,需要保证传入的tensor是ND格式,因此创建初始的tensor时,应当使用ND格式下的shape,而使用TransdataOp函数时传入最终想得到的NZ格式下tensor的shape;
  • CreateTensorFromVector中只传入了一种格式下的shape,因此需要使用GetShape函数得到ND和NZ两种数据格式下的shape

使用TransdataOp进行ND格式tensor转NZ格式tensor的CreateTensorFromVector的内容如下:

/** * @brief 简单封装,拷贝vector data中数据以创建tensor * @details 用于创建outTensorType类型的tensor * @param contextPtr context指针 * @param stream stream * @param data 输入vector数据 * @param outTensorType 期望输出tensor数据类型 * @param format 输出tensor的格式,即NZ,ND等 * @param shape 输出tensor的shape * @param outTensor 返回创建的tensor */ template <typename T> atb::Status CreateTensorFromVector(atb::Context *contextPtr, aclrtStream stream, std::vector<T> data, const aclDataType outTensorType, const aclFormat format, std::vector<int64_t> shape, atb::Tensor &outTensor, const aclDataType inTensorType = ACL_DT_UNDEFINED) { atb::Tensor tensor; aclDataType intermediateType; switch (outTensorType) { case aclDataType::ACL_FLOAT16: case aclDataType::ACL_BF16: case aclDataType::ACL_DOUBLE: intermediateType = aclDataType::ACL_FLOAT; break; default: intermediateType = outTensorType; } if (inTensorType == outTensorType && inTensorType != ACL_DT_UNDEFINED) { intermediateType = outTensorType; } aclFormat tensorFormat = format; std::vector<int64_t> ndShape, nzShape; if (intermediateType != outTensorType && format == aclFormat::ACL_FORMAT_FRACTAL_NZ) { tensorFormat = aclFormat::ACL_FORMAT_ND; CHECK_STATUS(GetShape(outTensorType, shape, ndShape, nzShape)); } else { ndShape.assign(shape.begin(), shape.end()); } CHECK_STATUS(CreateTensor(intermediateType, tensorFormat, shape, tensor)); CHECK_STATUS(aclrtMemcpy(tensor.deviceData, tensor.dataSize, data.data(), sizeof(T) * data.size(), ACL_MEMCPY_HOST_TO_DEVICE)); CHECK_STATUS(CreateTensor(outTensorType, aclFormat::ACL_FORMAT_ND, ndShape, outTensor)); if (intermediateType == outTensorType) { // 原始创建的tensor类型,不需要转换 outTensor = tensor; return atb::ErrorType::NO_ERROR; } CHECK_STATUS(CastOp(contextPtr, stream, tensor, outTensorType, outTensor)); if (format == aclFormat::ACL_FORMAT_FRACTAL_NZ) { CHECK_STATUS(TransdataOp(contextPtr, stream, outTensor, outTensorType, outTensor, nzShape)); } return atb::ErrorType::NO_ERROR; }

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

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

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

相关文章:

  • GitHub中文界面终极指南:3步免费快速安装,告别英文困扰
  • Xbox成就解锁器完全指南:轻松解锁Xbox游戏成就的免费神器
  • CentOS 7 网卡没有 IP 地址的解决方法
  • AI系统设计实战指南:从RAG到Agentic Workflow的架构思维
  • 2026年5月更新:上海基站叠光解决方案官方推荐品牌盘点,汇珏科技集团入选 - 2026年企业推荐榜
  • CANN学习中心:SuperKernel技术综述
  • Neovim集成AI插件llm.nvim:本地大模型编程助手实战指南
  • Spring Cloud 为什么需要服务注册与发现中心这些东西?
  • 网络数据处理利器NadirClaw:从BPF过滤到自定义协议解析的深度实践
  • 为 Hermes Agent 框架配置 Taotoken 作为自定义模型供应商的详细步骤
  • VMware Unlocker 3.0:专业解锁工具让PC轻松运行macOS虚拟机的高效指南
  • ShellGPT:用自然语言驱动命令行,AI赋能开发运维效率革命
  • AI赋能宠物纪念册:Gemini3.1Pro的情感文案术
  • 2026年当下,为何广西万卫保安服务有限公司成为明星保安品牌首选? - 2026年企业推荐榜
  • GoAmzAI:基于大语言模型的亚马逊卖家AI助手部署与应用实战
  • 2026年近期专业之选:杭州瑞诚教育科技有限公司建筑资质升级服务解析 - 2026年企业推荐榜
  • 卷积改进与轻量化:Omni-Kernel 大核卷积设计:31×31 深度卷积搭配轴向分解,无缝接入 YOLOv11
  • R-CNN之父、何恺明前同事Ross Girshick正式加入Anthropic
  • 2026 AI大会报名通道即将关闭:3大未公开优先注册通道+5类免审资格今日解锁
  • 全球南方AI治理:从规则接受者到参与者的战略转型与安全路径
  • 2026年5月更新:四川景观灯批发厂家盘点,川灯照明综合实力解析 - 2026年企业推荐榜
  • 聚焦2026年5月新消息:苏州冲孔不锈钢板市场深度洞察与选型指南 - 2026年企业推荐榜
  • 2026年至今,杭州专业的衣橱整理收纳服务团队如何联系? - 2026年企业推荐榜
  • 构建安全多语言代码沙盒:从原理到实践
  • 多通道高时滞热真空试验温度控制与Smith预测方法【附代码】
  • 航空发动机齿轮有限元可靠性分析与齿廓修形优化【附仿真】
  • 通用人工智能系统GPAIS:从专用AI到通用智能体的架构与实战
  • 高斯过程模型在拓扑材料预测中的应用:从特征工程到物理描述符提取
  • 深度解析next-routes:Next.js早期动态路由解决方案的设计与实现
  • 刚柔耦合机械臂动力学建模与模糊PD轨迹跟踪【附程序】