CANN算子库Transpose API

📅 2026/7/5 18:37:35
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),仅供参考