Skip to content
版本

MakeLayout

产品支持情况

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

功能说明

需要包含的头文件为:#include "tensor_api/tensor.h"。

MakeLayout用于根据Shape和Stride构造Layout对象,描述数据张量在逻辑维度上的形状以及各维对应的步长信息。

MakeLayout支持以下两种构造方式:

  • 传入shape和stride,直接按用户指定的布局信息构造Layout。
  • 仅传入shape,接口会根据shape自动推导stride并构造紧凑布局。当shape为一维或多维普通元组时,按连续行优先存储方式推导步长。

函数原型

C++
template <typename T, typename U>
__aicore__ inline constexpr auto MakeLayout(const T& shape, const U& stride)

template <typename ShapeType>
__aicore__ inline constexpr auto MakeLayout(const ShapeType& shape)

参数说明

表1 模板参数说明

参数名称类型描述
T输入shape的类型,要求为元组(tuple)类型。
U输入stride的类型,要求为元组(tuple)类型。
ShapeType输入单参数重载中shape的类型,要求为元组(tuple)类型。

表2 参数说明

参数名称输入/输出描述
shape输入描述逻辑形状的元组对象,可由MakeShape构造。
stride输入描述各维步长的元组对象,可由MakeStride构造。

返回值说明

  • 返回Layout<Shape, Stride>类型对象。

约束说明

MakeLayout构造的Layout类型不显式携带LayoutPattern和LayoutTrait信息。对于Shape和Stride类型结构可识别的标准布局,可通过GetLayoutPattern自动推导LayoutPattern;无法推导或需要显式指定完整类型信息时,请使用MakePatternLayout

调用示例

C++
using namespace AscendC::Te;

// 示例1:显式指定Shape和Stride
auto layout1 = MakeLayout(MakeShape(8, 16), MakeStride(16, 1));

// 示例2:仅指定Shape,自动推导连续布局的Stride
auto layout2 = MakeLayout(MakeShape(8, 16, 32));
// 推导得到stride = (16 * 32, 32, 1) = (512, 32, 1)

// 示例3:嵌套Shape自动推导嵌套Stride
auto layout3 = MakeLayout(MakeShape(MakeShape(2, 4), MakeShape(8, 16)));
// 推导得到stride为嵌套结构,用于描述FrameLayout

免责声明:本站内容由 asc-devkit 仓 master 分支自动编译生成,属于持续开发版本,可能存在缺陷,仅供预览与参考。如需稳定及商用资料,请查阅官方 昇腾社区