CANN/asc-devkit MakeLayout API

MakeLayout

【免费下载链接】asc-devkit 本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C++标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。 【免费下载链接】asc-devkit 项目地址: https://gitcode.com/cann/asc-devkit

产品支持情况

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

功能说明

将传入的Shape和Stride数据打包成Layout数据结构。

函数原型

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

参数说明

表 1 模板参数说明

参数名输入/输出描述
ShapeType输入Shape类型,需为Std::tuple结构类型。
StrideType输入Stride类型,需为Std::tuple结构类型。

表 2 参数说明

参数名输入/输出描述
shape输入Std::tuple结构类型,用于定义数据的逻辑形状,例如二维矩阵的行数和列数或多维张量的各维度大小。
stride输入Std::tuple结构类型,用于定义各维度在内存中的步长,即同维度相邻元素在内存中的间隔,间隔的单位为元素,与Shape的维度信息一一对应。

返回值说明

返回Layout对象。

约束说明

构造Layout对象时传入的Shape和Stride结构,需是Std::tuple结构类型,且满足Std::tuple结构类型的使用约束。

调用示例

// 初始化Layout数据结构,获取对应数值
using namespace AscendC::Te;

auto shape = MakeShape(10, 20, 30);
auto stride = MakeStride(1, 100, 200);
auto layoutMake = MakeLayout(shape, stride);
Layout<decltype(shape), decltype(stride)> layoutInit(shape, stride);

int value = Std::get<0>(layoutMake.Shape()); // value = 10
value = Std::get<1>(layoutMake.Shape()); // value = 20
value = Std::get<2>(layoutMake.Shape()); // value = 30

value = Std::get<0>(layoutInit.Stride()); // value = 1
value = Std::get<1>(layoutInit.Stride()); // value = 100
value = Std::get<2>(layoutInit.Stride()); // value = 200

【免费下载链接】asc-devkit 本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C++标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。 【免费下载链接】asc-devkit 项目地址: https://gitcode.com/cann/asc-devkit

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

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值