CANN/asc-devkit ListTensorDesc数据类型

📅 2026/7/15 15:16:44
CANN/asc-devkit ListTensorDesc数据类型
ListTensorDesc产品支持情况产品是否支持Ascend 950PR/Ascend 950DTxAtlas A3 训练系列产品/Atlas A3 推理系列产品√Atlas A2 训练系列产品/Atlas A2 推理系列产品√Atlas 200I/500 A2 推理产品xAtlas 推理系列产品AI Core√Atlas 推理系列产品Vector CorexAtlas 训练系列产品x功能说明ListTensorDesc用来解析符合以下内存排布格式的数据 并在kernel侧根据索引获取储存对应数据的地址及shape信息。需要包含的头文件#include kernel_operator_list_tensor_intf.h函数原型class ListTensorDesc { ListTensorDesc(); ListTensorDesc(__gm__ void* data, uint32_t length 0xffffffff, uint32_t shapeSize 0xffffffff); void Init(__gm__ void* data, uint32_t length 0xffffffff, uint32_t shapeSize 0xffffffff); templateclass T void GetDesc(TensorDescT desc, uint32_t index); templateclass T T* GetDataPtr(uint32_t index); uint32_t GetSize(); }函数说明表 1模板参数说明参数名描述TTensor中元素的数据类型。表 2函数及参数说明函数名称入参说明含义ListTensorDesc-默认构造函数需配合Init函数使用。ListTensorDescdata待解析数据的首地址length待解析内存的长度shapeSize数据指针的个数length和shapeSize仅用于校验不填写时不进行校验ListTensorDesc类的构造函数用于解析对应的内存排布。Initdata待解析数据的首地址length待解析内存的长度shapeSize数据指针的个数length和shapeSize仅用于校验不填写时不进行校验初始化函数用于解析对应的内存排布。GetDescdesc出参解析后的Tensor描述信息index索引值根据index获得功能说明图中对应的TensorDesc信息。使用GetDesc前需要先调用TensorDesc.SetShapeAddr为desc指定用于储存shape信息的地址调用GetDesc后会将shape信息写入该地址。Atlas 推理系列产品AI Core支持该功能Atlas 训练系列产品不支持该功能Atlas A2 训练系列产品/Atlas A2 推理系列产品支持该功能Atlas A3 训练系列产品/Atlas A3 推理系列产品支持该功能Atlas 200I/500 A2 推理产品不支持该功能GetDataPtrindex索引值根据index获取储存对应数据的地址。GetSize-获取ListTensor中包含的数据指针的个数。调用示例示例中待解析的srcGm内存排布如下图所示AscendC::ListTensorDesc listTensorDesc(reinterpret_cast__gm__ void *(srcGm)); // srcGm为待解析的gm地址 uint32_t size listTensorDesc.GetSize(); // size 2 auto dataPtr0 listTensorDesc.GetDataPtrint32_t(0); // 获取ptr0 auto dataPtr1 listTensorDesc.GetDataPtrint32_t(1); // 获取ptr1 uint64_t buf[100] {0}; // 示例中Tensor的dim为3, 此处的100表示预留足够大的空间 AscendC::TensorDescint32_t desc; desc.SetShapeAddr(buf); // 为desc指定用于储存shape信息的地址 listTensorDesc.GetDesc(desc, 0); // 获取索引0的shape信息 uint64_t dim desc.GetDim(); // dim 3 uint64_t idx desc.GetIndex(); // idx 0 uint64_t shape[3] {0}; for (uint32_t i 0; i desc.GetDim(); i) { shape[i] desc.GetShape(i); // GetShape(0) 1, GetShape(1) 2, GetShape(2) 3 } auto ptr desc.GetDataPtr();创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考