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

📅 2026/7/17 18:48:25 👁️ 阅读次数 📝 编程学习
CANN/asc-devkit Atanh临时缓冲区因子大小获取接口

GetAtanhTmpBufferFactorSize

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

功能说明

kernel侧Atanh接口的计算需要开发者预留/申请临时空间,最大临时空间(maxTmpBuffer)和输入所占空间(inputSize * typeSize)存在以下关系:

maxTmpBuffer = maxLiveNodeCount * inputSize * typeSize + extraBuffer

其中maxLiveNodeCount表示最大临时空间是输入所占空间的多少倍;extraBuffer表示使用的额外临时空间大小。

该接口用于获取maxLiveNodeCount和extraBuffer,在固定空间大小的情况下,通过maxLiveNodeCount和extraBuffer可以推算算子单次最大计算元素数量。

示例如下:

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

currentShapeSize = (currBuff - extraBuffer) / maxLiveNodeCount / typeSize

函数原型

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

参数说明

表1参数列表

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

返回值说明

约束说明

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

调用示例

// 获取输入类型为half的Atanh操作的maxLiveNodeCount和extraBuffer uint32_t typeSize = sizeof(half); uint32_t maxLiveNodeCount = 0; uint32_t extraBuffer = 0; AscendC::GetAtanhTmpBufferFactorSize(typeSize, maxLiveNodeCount, extraBuffer);

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

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