Skip to content
版 本

MakeLayout

产 品 支 持 情 况

产 品是 否 支 持
Ascend 950PR/Ascend 950DT支 持

功 能 说 明

需 要 包 含 的 头 文 件 为:#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>类 型 对 象。

约 束 说 明

构 造 的Layout类 型 不 含 有LayoutPattern和LayoutTrait信 息,需 要 通 过MakePatternLayout造 带 有 完 整 类 型 信 息 的Layout对 象。

调 用 示 例

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 分 支 自 动 编 译 生 成,属 于 持 续 开 发 版 本,可 能 存 在 缺 陷,仅 供 预 览 与 参 考。如 需 稳 定 及 商 用 资 料,请 查 阅 官 方 昇 腾 社 区