MakeLayout
产品支持情况
产品 |
是否支持 |
---|---|
√ |
|
√ |
|
x |
|
x |
|
x |
|
x |
|
x |
功能说明
将传入的Shape和Stride数据打包成Layout数据结构。
函数原型
1 2 | template <typename ShapeType, typename StrideType> __aicore__ inline constexpr auto MakeLayout(const ShapeType& shape, const StrideType& stride) |
参数说明
参数名 |
输入/输出 |
描述 |
---|---|---|
shape |
输入 |
Std::tuple结构类型,用于定义数据的逻辑形状,例如二维矩阵的行数和列数或多维张量的各维度大小。 |
stride |
输入 |
Std::tuple结构类型,用于定义各维度在内存中的步长,即同维度相邻元素在内存中的间隔,间隔的单位为元素,与Shape的维度信息一一对应。 |
返回值说明
返回Layout对象。
约束说明
构造Layout对象时传入的Shape和Stride结构,需是Std::tuple结构类型,且满足Std::tuple结构类型的使用约束。
调用示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | // 初始化Layout数据结构,获取对应数值 AscendC::Shape<int,int,int> shape = AscendC::MakeShape(10, 20, 30); AscendC::Stride<int,int,int> stride = AscendC::MakeStride(1, 100, 200); auto layoutMake = AscendC::MakeLayout(shape, stride); AscendC::Layout<AscendC::Shape<int, int, int>, AscendC::Stride<int, int, int>> layoutInit(shape, stride); int value = AscendC::Std::get<0>(layoutMake.GetShape()); // value = 10 value = AscendC::Std::get<1>(layoutMake.GetShape()); // value = 20 value = AscendC::Std::get<2>(layoutMake.GetShape()); // value = 30 value = AscendC::Std::get<0>(layoutInit.GetStride()); // value = 1 value = AscendC::Std::get<1>(layoutInit.GetStride()); // value = 100 value = AscendC::Std::get<2>(layoutInit.GetStride()); // value = 200 |
父主题: Layout