news 2026/7/17 8:36:44

CANN/asc-devkit SinCos缓冲区计算

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
CANN/asc-devkit SinCos缓冲区计算

GetSinCosTmpBufferFactorSize

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

功能说明

该接口用于获取maxLivedNodeCount和extraBuf,在固定空间大小的情况下,通过maxLivedNodeCount和extraBuf可以推算算子单次最大计算元素数量。maxLivedNodeCount表示临时空间是单次计算数据量所占空间的多少倍;extraBuf表示使用的额外临时空间大小。

推算示例如下:

  • 算子实现需要调用SinCos接口,开发者为其预留currBuff大小的空间,利用GetSinCosTmpBufferFactorSize接口得到maxLivedNodeCount、extraBuf输出值,可推导算子单次最大计算元素数量为:

    currentShapeSize = (currBuff - extraBuf) / maxLivedNodeCount / typeSize

  • 算子实现需要调用两个kernel侧API KernelIntf1、KernelIntf2,利用两个GetXxxTmpBufferFactorSize(其中Xxx为需要调用的两个高阶API)接口的两组输出值(maxLivedNodeCount、extraBuf)以及当前现有的临时空间,推导单次最大计算元素数量currentShapeSize为:

    currentShapeSize1 = (currBuff - extraBuf1) / maxLivedNodeCount1 / typeSize

    currentShapeSize2 = (currBuff - extraBuf2) / maxLivedNodeCount2 / typeSize

    currentShapeSize = min(currentShapeSize1, currentShapeSize2)

注意上文中的currBuff表示接口计算可用的空间,需要去除用户输入输出等空间;另外,接口获取的maxLivedNodeCount值可能为0,计算时需要判断该值非0,避免除零错误。

函数原型

void GetSinCosTmpBufferFactorSize(const platform_ascendc::PlatformAscendC& ascendcPlatform, const uint32_t typeSize, uint32_t& maxLivedNodeCount, uint32_t& extraBuf)

参数说明

表1参数列表

参数名输入/输出功能
ascendcPlatform输入输入的平台信息。PlatformAscendC的定义请参见构造及析构函数。
typeSize输入输入的数据类型大小,单位为字节。比如输入的数据类型为half,此处应传入2。
maxLivedNodeCount输出最大存活节点数,表示临时空间是单次计算数据量所占空间的多少倍。
extraBuf输出使用的额外临时空间大小,单位为字节。

返回值说明

约束说明

当利用maxLivedNodeCount、extraBuf反推出的currentShapeSize * typeSize < 256B时,currentShapeSize按照256B/typeSize的值向上取整。

调用示例

完整的调用样例请参考更多样例。

uint32_t maxLivedNodeCount = 0; uint32_t extraBuf = 0; auto plat = platform_ascendc::PlatformAscendC(context->GetPlatformInfo()); AscendC::GetSinCosTmpBufferFactorSize(plat, typeSize, maxLivedNodeCount, extraBuf);

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

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

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

免U盘安装Windows双系统:原理与实战指南

1. 为什么选择无U盘/PE的Windows双系统方案传统双系统安装通常需要准备U盘启动盘或PE系统&#xff0c;这对很多用户来说存在几个实际痛点&#xff1a;首先&#xff0c;优质U盘并非人人常备&#xff0c;临时购买可能遇到扩容盘等质量问题&#xff1b;其次&#xff0c;制作启动盘…

作者头像 李华
网站建设 2026/7/17 8:34:25

CANN/asc-devkit Xor接口文档

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

作者头像 李华
网站建设 2026/7/17 8:32:55

CANN/Ascend C Gelu激活函数接口文档

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

作者头像 李华
网站建设 2026/7/17 8:32:48

电源设计中驱动电路的核心作用与设计要点

1. 驱动电路在电源设计中的核心地位 第一次接触电源设计时&#xff0c;我犯了个典型错误——把所有注意力都放在主功率拓扑上&#xff0c;结果样机调试时MOSFET频繁炸管。直到 mentor 指着驱动波形说"问题出在这里"&#xff0c;我才真正理解&#xff1a;驱动电路就像…

作者头像 李华
网站建设 2026/7/17 8:32:35

实用高效的Unity游戏自动翻译插件:5分钟快速汉化指南

实用高效的Unity游戏自动翻译插件&#xff1a;5分钟快速汉化指南 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator 你是否曾因为语言障碍而错过精彩的Unity游戏&#xff1f;XUnity.AutoTranslator正是解决这…

作者头像 李华
网站建设 2026/7/17 8:31:49

Linux包管理利器YUM详解:从原理到企业实践

1. YUM包管理器概述 yum&#xff08;Yellowdog Updater Modified&#xff09;是Red Hat系列Linux发行版&#xff08;如CentOS、RHEL、Fedora&#xff09;中广泛使用的包管理工具。作为RPM包管理的前端工具&#xff0c;yum通过自动解决软件依赖关系&#xff0c;极大简化了软件安…

作者头像 李华