昇腾CANN/asc-devkit SwiGLU临时缓冲区因子大小获取接口
GetSwiGLUTmpBufferFactorSize【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言原生支持C和C标准规范主要由类库和语言扩展层构成提供多层级API满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit功能说明kernel侧SwiGLU接口的计算需要开发者预留/申请临时空间最大临时空间maxTmpBuffer和输入所占空间inputSize * typeSize存在以下关系maxTmpBuffer maxLiveNodeCount * inputSize * typeSize extraBuffer其中maxLiveNodeCount表示最大临时空间是输入所占空间的多少倍extraBuffer表示使用的额外临时空间大小。该接口用于获取maxLiveNodeCount和extraBuffer在固定空间大小的情况下通过maxLiveNodeCount和extraBuffer可以推算算子单次最大计算元素数量。示例如下算子实现需要调用SwiGLU接口开发者为其预留currBuff大小的空间利用GetSwiGLUTmpBufferFactorSize接口得到maxLiveNodeCount、extraBuffer输出值反推SwiGLU算子单次最大计算元素数量为currentShapeSize (currBuff - extraBuffer) / maxLiveNodeCount / typeSize函数原型void GetSwiGLUTmpBufferFactorSize(const uint32_t typeSize, uint32_t maxLiveNodeCount, uint32_t extraBuffer)参数说明表1参数列表接口输入/输出功能typeSize输入输入的数据类型大小单位为字节。比如输入的数据类型为half此处应传入2。maxLiveNodeCount输出最大存活节点数最大临时空间是输入所占空间的多少倍。extraBuffer输出使用的额外临时空间大小单位为byte。返回值说明无约束说明当利用maxLiveNodeCountextraBuffer反推出的currentShapeSize * typeSize 256B时currentShapeSize按照256B/typeSize的值向上取整。调用示例uint32_t typeSize sizeof(half); uint32_t maxLiveNodeCount 0; uint32_t extraBuffer 0; AscendC::GetSwiGLUTmpBufferFactorSize(typeSize, maxLiveNodeCount, extraBuffer);【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言原生支持C和C标准规范主要由类库和语言扩展层构成提供多层级API满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考