news 2026/7/17 8:35:40

CANN/asc-devkit:Trunc接口临时缓冲区因子大小获取

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
CANN/asc-devkit:Trunc接口临时缓冲区因子大小获取

GetTruncTmpBufferFactorSize

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

功能说明

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

推算示例如下:

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

    currentShapeSize = (currBuff - extraBuf) / maxLiveNodeCount / typeSize

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

    currentShapeSize1 = (currBuff - extraBuf1) / maxLiveNodeCount1 / typeSize

    currentShapeSize2 = (currBuff - extraBuf2) / maxLiveNodeCount2 / typeSize

    currentShapeSize = min(currentShapeSize1, currentShapeSize2)

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

函数原型

void GetTruncTmpBufferFactorSize(const uint32_t typeSize, uint32_t& maxLiveNodeCount, uint32_t& extraBuf)

参数说明

表1参数列表

参数名输入/输出功能
typeSize输入输入的数据类型大小,单位为字节。比如输入的数据类型为half,此处应传入2。
maxLiveNodeCount输出最大存活节点数,表示临时空间是单次计算数据量所占空间的多少倍。
extraBuf输出使用的额外临时空间大小,单位为字节。

返回值说明

约束说明

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

调用示例

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

uint32_t maxLiveNodeCount = 0; uint32_t extraBuf = 0; AscendC::GetTruncTmpBufferFactorSize(typeSize, maxLiveNodeCount, extraBuf);

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

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

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

cann/asc-devkit:SoftmaxGrad Tiling接口

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

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

CANN/asc-devkit SwiGLU激活函数API

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

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

CANN/asc-devkit设置AIV核ID接口

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

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

Seraphine终极指南:5分钟快速上手英雄联盟智能数据助手

Seraphine终极指南&#xff1a;5分钟快速上手英雄联盟智能数据助手 【免费下载链接】Seraphine 英雄联盟战绩查询工具 项目地址: https://gitcode.com/gh_mirrors/se/Seraphine 还在为英雄联盟对局中信息不足而困扰吗&#xff1f;Seraphine是一款基于英雄联盟官方LCU AP…

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

PSP RS232转TTL电平转换实战:从硬件对接到稳定传输

前几天翻出一台老 PSP&#xff0c;想试试能不能通过串口直接传数据&#xff0c;结果发现 PSP 用的是 RS232 电平&#xff0c;而手头只有 USB 转 TTL 模块。这个看似简单的转换&#xff0c;背后其实是一套老设备与现代工具对接的典型问题——不只是线序对接&#xff0c;更是电平…

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

C++线程池与Python策略混合架构:实现量化交易毫秒级响应

1. 项目概述&#xff1a;为什么是C线程池Python策略&#xff1f;在量化交易这个领域&#xff0c;尤其是涉及到高频或准高频策略时&#xff0c;延迟是最大的敌人。你精心设计的策略信号&#xff0c;如果因为系统响应慢了几毫秒&#xff0c;可能就从盈利变成了亏损&#xff0c;或…

作者头像 李华