CANN/asc-devkit Tensor容量计算

📅 2026/7/16 19:35:36
CANN/asc-devkit Tensor容量计算
Capacity【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言原生支持C和C标准规范主要由类库和语言扩展层构成提供多层级API满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit产品支持情况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。Capacity用于计算Layout所需的实际内存容量。与Size有效元素个数不同Capacity包含了因非连续步长导致的无效数据区域。对于连续排列stride紧凑Capacity与Size相等对于有间隔的排列Capacity通常大于Size。函数原型template size_t... Is, typename Shape, typename Stride __aicore__ inline constexpr auto Capacity(const LayoutShape, Stride layout)参数说明表1模板参数说明参数名类型描述Shape输入组成Layout的shape的类型即元组tuple类型。Stride输入组成Layout的stride的类型即元组tuple类型。Is...size_t索引序列指定子维度范围仅对选定维度计算容量。表2参数说明参数名类型描述layout输入用于描述张量的布局。返回值说明返回Layout实际所占面积大小包括有效数据和脏数据。约束说明Is...必须为有效范围内的索引。调用示例using namespace AscendC::Te; // 示例1紧凑排列Capacity Size auto layout1 MakeLayout(MakeShape(10, 20), MakeStride(20, 1)); auto cap1 Capacity(layout1); // dim0: 10 * 20 200; dim1: 20 * 1 20; max 200 // Size 10 * 20 200 // 示例2非连续排列Capacity Size auto layout2 MakeLayout(MakeShape(10, 20), MakeStride(1, 100)); auto cap2 Capacity(layout2); // dim0: 10 * 1 10; dim1: 20 * 100 2000; max 2000 // Size 10 * 20 200 // 示例3指定子维度 auto layout3 MakeLayout(MakeShape(10, 20, 30), MakeStride(1, 10, 200)); auto cap3All Capacity(layout3); // max(10*1, 20*10, 30*200) max(10, 200, 6000) 6000 auto cap3_0_1 Capacity0, 1(layout3); // max(10*1, 20*10) max(10, 200) 200【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言原生支持C和C标准规范主要由类库和语言扩展层构成提供多层级API满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考