news 2026/5/9 21:33:14

CANN/opbase aclCreateTensor API文档

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
CANN/opbase aclCreateTensor API文档

aclCreateTensor

【免费下载链接】opbase本项目是CANN算子库的基础框架库,为算子提供公共依赖文件和基础调度能力。项目地址: https://gitcode.com/cann/opbase

功能说明

根据Tensor的数据类型、数据排布格式、维度、步长、偏移、Device侧存储地址等数据,创建aclTensor对象,作为单算子API执行接口的入参。

aclTensor是框架定义的一种用来管理和存储张量数据的结构,开发者无需关注其内部实现,直接使用即可。

函数原型

aclTensor *aclCreateTensor(const int64_t *viewDims, uint64_t viewDimsNum, aclDataType dataType, const int64_t *stride, int64_t offset, aclFormat format, const int64_t *storageDims, uint64_t storageDimsNum, void *tensorData)

参数说明

关于aclTensor的StorageShape和ViewShape:

  • ViewShape表示Tensor的逻辑shape,是Tensor在实际使用时需要用到的大小。
  • StorageShape表示Tensor的实际物理排布shape,是Tensor在内存上实际存在的大小。 举例如下:
  • StorageShape为[10, 20]:表示该Tensor在内存上是按照[10, 20]排布的。
  • ViewShape为[2, 5, 20]:在算子使用时,表示该Tensor可被视为一块[2, 5, 20]的数据使用。
参数名输入/输出说明
viewDims输入tensor的ViewShape维度值,为非负整数。
viewDimsNum输入tensor的ViewShape维度数。
dataType输入tensor的数据类型。
stride输入tensor各维度元素的访问步长,为非负整数。
offset输入tensor首元素相对于storage的偏移,为非负整数。
format输入tensor的数据排布格式。
storageDims输入tensor的StorageShape维度值,为非负整数。
storageDimsNum输入tensor的StorageShape维度数。
tensorData输入tensor在Device侧的存储地址,该地址必须32字节对齐,否则可能会出现未定义错误。

返回值说明

成功则返回创建好的aclTensor,否则返回nullptr。

约束说明

  • 本接口需与aclDestroyTensor接口配套使用,分别完成aclTensor的创建与销毁。
  • 如需创建多个aclTensor对象,可调用aclCreateTensorList接口来存储张量列表。
  • 调用aclGetDataType接口可以获取aclTensor的DataType。
  • 调用aclGetFormat接口可以获取aclTensor的format。
  • 调用aclGetStorageShape接口可以获取aclTensor的StorageShape。
  • 调用aclGetViewOffset接口可以获取aclTensor的ViewOffset,即ViewShape对应的offset。
  • 调用aclGetViewShape接口可以获取aclTensor的ViewShape。
  • 调用aclGetViewStrides接口可以获取aclTensor的ViewStrides,即ViewShape对应的stride。
  • 调用aclInitTensor接口初始化给定tensor的参数。
  • 调用如下接口可刷新或获取不同场景下aclTensor中记录的Device内存地址。
    • aclSetInputTensorAddr
    • aclSetOutputTensorAddr
    • aclSetTensorAddr
    • aclGetRawTensorAddr
    • aclSetRawTensorAddr

调用示例

aclTensor的定义与torch.Tensor相似,由一块连续或非连续的内存地址和一系列描述信息(如stride、offset等)组成。Tensor根据shape、stride、offset信息,可自由取出内存中的数据,也可获得非连续的内存(如图中y)。

图 1tensor逻辑结构

![](https://raw.gitcode.com/cann/opbase/raw/098870b257ce2fdcc6fb51cde90d4859cdd2675a/docs/zh/figures/aclTensor.png "tensor逻辑结构"?utm_source=gitcode_repo_files)

  • 以上图为例,x tensor创建过程如下:

    aclTensor *CreateXTensor() { std::vector<int64_t> viewDims = {2, 4}; std::vector<int64_t> stride = {4, 1}; // 第1维步长4,第2维步长1 std::vector<int64_t> storageDims = {2, 4}; return aclCreateTensor(viewDims.data(), 2, ACL_FLOAT16, stride.data(), 0, ACL_FORMAT_ND, storageDims.data(), 2, nullptr); }
  • 以上图为例,x对应的转置x^T tensor创建过程如下:

    aclTensor *CreateXTransposedTensor() { std::vector<int64_t> viewDims = {4, 2}; std::vector<int64_t> stride = {1, 4}; // 转置跨度通过stride表示 std::vector<int64_t> storageDims = {2, 4}; return aclCreateTensor(viewDims.data(), 2, ACL_FLOAT16, stride.data(), 0, ACL_FORMAT_ND, storageDims.data(), 2, nullptr); }

基于上述举例,将aclTensor作为单算子API执行接口入参的示例代码如下,仅供参考,不支持直接拷贝运行。

// 创建aclTensor aclTensor *xTensor = CreateXTensor(); aclTensor *xTransposedTensor = CreateXTransposedTensor(); // aclTensor作为单算子API执行接口的入参 auto ret = aclxxXxxGetWorkspaceSize(xTensor, xTransposedTensor, ..., outTensor, ..., &workspaceSize, &executor); ret = aclxxXxx(...); ... // 销毁aclTensor ret = aclDestroyTensor(xTensor); ret = aclDestroyTensor(xTransposedTensor);

【免费下载链接】opbase本项目是CANN算子库的基础框架库,为算子提供公共依赖文件和基础调度能力。项目地址: https://gitcode.com/cann/opbase

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/9 21:32:56

Datasette与ChatGPT插件:用自然语言查询数据库的实践指南

1. 项目概述&#xff1a;当数据API遇上智能对话 如果你是一个经常和数据打交道的人&#xff0c;无论是数据分析师、开发者还是产品经理&#xff0c;可能都经历过这样的场景&#xff1a;面对一个功能强大的数据查询API&#xff0c;你需要反复查阅文档、构造复杂的查询语句&#…

作者头像 李华
网站建设 2026/5/9 21:32:56

CktEvo框架:LLM驱动的RTL仓库级优化技术解析

1. CktEvo框架概述&#xff1a;仓库级RTL优化的技术突破在芯片设计领域&#xff0c;寄存器传输级&#xff08;RTL&#xff09;代码的质量直接影响最终芯片的功耗、性能和面积&#xff08;PPA&#xff09;。传统优化方法主要依赖EDA工具的门级优化&#xff0c;但这种方式存在明显…

作者头像 李华
网站建设 2026/5/9 21:31:48

ChatdollKit:基于大语言模型的虚拟角色对话引擎开发指南

1. 项目概述&#xff1a;一个为虚拟角色注入灵魂的对话引擎 如果你正在开发一个虚拟数字人、智能客服助手&#xff0c;或者任何需要与用户进行自然语言对话的3D/2D角色&#xff0c;那么你很可能正面临一个核心难题&#xff1a;如何将强大的大语言模型&#xff08;LLM&#xff0…

作者头像 李华
网站建设 2026/5/9 21:29:35

对比直接使用厂商API在Taotoken平台计费透明度的直观感受

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 对比直接使用厂商API在Taotoken平台计费透明度的直观感受 对于需要调用多种大语言模型的开发者或团队而言&#xff0c;管理来自不同…

作者头像 李华
网站建设 2026/5/9 21:28:27

2026年降AI率提示词top6:一句话去除论文ai痕迹,通过aigc检测!

2026年各个学校都要求论文得通过AIGC检测&#xff0c;大家一定要重视&#xff0c;按照学术规范撰写论文&#xff0c;保持AI率达到学校要求。1. 以博士生视角重写提示词原文&#xff1a; 请以一名即将毕业的博士研究生的身份重写以下内容。要求&#xff1a;使用学术圈的行话和习…

作者头像 李华
网站建设 2026/5/9 21:27:39

AI如何革新系统文献综述:从自动化筛选到智能知识发现

1. 项目概述&#xff1a;当AI遇见文献综述&#xff0c;一场效率革命正在发生 作为一名在学术研究和信息科学领域摸爬滚打了十几年的“老炮儿”&#xff0c;我亲眼见证了系统文献综述&#xff08;Systematic Literature Review, SLR&#xff09;从一项纯粹依赖人工、耗时数月的“…

作者头像 李华