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

CANN算子库Transpose API

Transpose

【免费下载链接】docs该仓库用于维护cann公共文档项目地址: https://gitcode.com/cann/docs

产品支持情况

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

功能说明

该函数不改变tensor数据的值,而是对tensor进行转置操作。

通过Transpose算子,可以改变tensor在不同维度上的排列顺序,实现对tensor的维度重排。

具体的是将用户传入的输入tensor x的shape按指定维度的排列顺序perm进行转置并输出。

函数原型

  • 输入和输出为不同地址

    const aclTensor *Transpose(const aclTensor *x, const aclTensor *y, const aclTensor *perm, aclOpExecutor *executor)
  • 输入和输出同一地址

    const aclTensor *Transpose(const aclTensor *x, const aclIntArray *perm, aclOpExecutor *executor)

参数说明

参数输入/输出说明
x输入/输出原始输入tensor。输入tensor x需是连续内存数据。数据类型支持FLOAT16、FLOAT、INT8、INT16、INT32、INT64、UINT8、UINT16、UINT32、UINT64、BOOL、BFLOAT16。数据格式支持ND。
y输出转置后输出tensor。数据类型和数据格式同x。
perm输入整型数组,代表输入tensor x的维度,支持aclIntArray*、aclTensor*类型。最多支持8维转置,取值需在[0, x的维度数量-1]范围内。数据类型支持INT32、INT64。数据格式支持ND。
executor输入op执行器,包含了算子计算流程。

说明:BFLOAT16仅适用于如下产品

  • Atlas A2 训练系列产品/Atlas A2 推理系列产品
  • Atlas A3 训练系列产品/Atlas A3 推理系列产品

返回值说明

转置成功,返回转置后的tensor;转置失败,返回nullptr。

约束说明

  • 最多支持8维转置,即输入x和perm的dim至多为8。
  • 输入x和perm的dim维度需要一致。

调用示例

// 标准写法,创建OpExecutor,参数检查 auto uniqueExecutor = CREATE_EXECUTOR(); CHECK_RET(uniqueExecutor.get() != nullptr, ACLNN_ERR_INNER_CREATE_EXECUTOR); // 标准写法,将输入self转换成连续的tensor auto selfContiguous = l0op::Contiguous(self, uniqueExecutor.get()); CHECK_RET(selfContiguous != nullptr, ACLNN_ERR_INNER_NULLPTR); int64_t dims = selfContiguous->GetViewShape().GetDimNum(); int64_t valuePerm[dims] = {0, 2, 1, 3}; // 表示对原始4维的中间2维做转置,即交换1轴和2轴 auto perm = executor->AllocIntArray(valuePerm, dims); selfContiguous = l0op::Transpose(selfContiguous, perm, uniqueExecutor.get());

【免费下载链接】docs该仓库用于维护cann公共文档项目地址: https://gitcode.com/cann/docs

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

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

相关文章:

  • CANN/ops-sparse稀疏算子测试工程师
  • cann/docs CANN产品文档仓库
  • Colfer安全最佳实践:防范二进制数据解析漏洞的关键策略
  • vCheck-vSphere社区贡献指南:如何参与开源项目开发
  • PasteMD社区贡献指南:如何参与开源项目开发、提交PR和报告问题的完整流程
  • w64devkit:为什么这款轻量级Windows开发套件成为C/C++开发者的终极选择?
  • Si5351A时钟发生器与TM4C129微控制器的应用指南
  • RESPX性能优化指南:如何高效管理大量模拟请求和响应
  • 从 0 到 1 开发 CLI 工具:ConfigArgParse 新手入门实例教程
  • 从论文到产品:Denoising Diffusion GANs在计算机视觉领域的7大应用场景
  • ECDICT:76万词条英汉词典数据库的架构设计与性能优化指南
  • Rain多语言任务开发终极指南:Python、C++、Rust任务编写与集成教程
  • CANN / cannbot-skills 代理文档
  • activerecord-multi-tenant 终极指南:如何在 Rails 应用中轻松实现多租户架构
  • 初学者指南:在Linux系统上运行MiniMax-M3-NVFP4的5个关键步骤
  • WavTap开发者指南:深入了解音频捕获的实现原理
  • CANN/asc-devkit:设置L1 3D格式Feature矩阵
  • 计算机视觉实战:使用SageMaker Studio Lab训练图像分类模型的完整指南
  • FineTuningLLMs部署实战:GGUF格式转换与本地服务完整教程
  • SageMaker Studio Lab环境配置终极教程:Conda环境创建与管理详解
  • CANN/ops-math掩码缩放算子
  • 天赐范式第94天:从断裂到新技术的“内燃机“——TDP-CP与DRR-R方法论边界规范
  • 换手机数据迁移太麻烦?这款iPhone、安卓和平板电脑互传工具,一键搞定不丢数据!
  • Halcon函数封装实战:从工业视觉流程到可复用算子库
  • Subliminal:终极iOS集成测试框架完整指南
  • JMeter阶梯线程组实战:精准模拟真实业务负载模型
  • Twitter API Client认证详解:OAuth 1.0与OAuth 2.0完整实现指南
  • 从入门到精通:vb-android-app-quality项目的多渠道构建与测试策略
  • RESPX安全测试:使用模拟库进行API安全测试的实践方法
  • Opslane最佳实践:10个技巧提升AI并行开发效率