news 2026/5/10 0:46:13

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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),仅供参考

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

无人机集群自主编队控制与路径规划仿真技术【附仿真】

✨ 本团队擅长数据搜集与处理、建模仿真、程序设计、仿真代码、EI、SCI写作与指导&#xff0c;毕业论文、期刊论文经验交流。 ✅ 专业定制毕设、代码 ✅ 如需沟通交流&#xff0c;可以私信&#xff0c;或者点击《获取方式》 &#xff08;1&#xff09;基于动态启发权重的改进A*…

作者头像 李华
网站建设 2026/5/10 0:41:09

深度强化学习优化量子比特反馈控制:从DQN原理到实验部署

1. 项目概述与核心价值最近在实验室里折腾一个挺有意思的课题&#xff0c;就是怎么用强化学习去优化量子比特的测量和反馈控制。听起来有点跨界&#xff0c;对吧&#xff1f;量子计算和强化学习&#xff0c;一个在微观世界玩叠加和纠缠&#xff0c;一个在宏观世界搞决策和优化&…

作者头像 李华
网站建设 2026/5/10 0:40:26

ComfyUI-Manager终极指南:轻松管理您的AI绘画工作流节点

ComfyUI-Manager终极指南&#xff1a;轻松管理您的AI绘画工作流节点 【免费下载链接】ComfyUI-Manager ComfyUI-Manager is an extension designed to enhance the usability of ComfyUI. It offers management functions to install, remove, disable, and enable various cus…

作者头像 李华
网站建设 2026/5/10 0:37:42

基于Tauri+React+TS构建跨平台开发者效率工具:集成AI编程与Git Worktree

1. 项目概述&#xff1a;一个为现代开发者打造的桌面效率工具 如果你和我一样&#xff0c;每天的工作流都离不开终端、代码编辑器和各种AI助手&#xff0c;那你一定也经历过这种场景&#xff1a;在多个项目间频繁切换&#xff0c;终端里塞满了十几个标签页&#xff0c;想找个昨…

作者头像 李华
网站建设 2026/5/10 0:31:56

金融AI风险管理实战:构建可解释、可干预、可审计的智能系统

1. 项目概述&#xff1a;当AI深入金融心脏&#xff0c;我们如何为它“上保险”&#xff1f;干了十几年金融科技&#xff0c;从早期的量化模型到现在的生成式AI&#xff0c;我亲眼看着算法从后台的辅助工具&#xff0c;一步步走向前台&#xff0c;开始直接处理信贷审批、市场交易…

作者头像 李华
网站建设 2026/5/10 0:30:40

DAO技能工具箱:模块化智能合约与可组合治理实践

1. 项目概述&#xff1a;一个DAO的“技能”工具箱最近在梳理一些去中心化自治组织&#xff08;DAO&#xff09;的治理工具时&#xff0c;偶然看到了一个名为tomorrowDAO-skill的项目。这个标题很有意思&#xff0c;它没有直接叫“治理平台”或者“投票系统”&#xff0c;而是用…

作者头像 李华