GetDigammaTmpBufferFactorSize
功能说明
kernel侧Digamma接口的计算需要开发者预留/申请临时空间,最大临时空间(maxTmpBuffer)和输入所占空间(inputSize * typeSize)存在以下关系:
maxTmpBuffer = maxLivedNodeCount * inputSize * typeSize + extraBuffer
其中maxLivedNodeCount表示最大临时空间是输入所占空间的多少倍;extraBuffer表示使用的额外临时空间大小。
该接口用于获取maxLivedNodeCount和extraBuffer,在固定空间大小的情况下,通过maxLivedNodeCount和extraBuffer可以推算算子单次最大计算元素数量;另外,接口获取的maxLivedNodeCnt值可能为0,计算时需要判断该值非0,避免除0错误。
示例如下:
算子实现需要调用Digamma接口,开发者为其预留currBuff大小的空间,利用GetDigammaTmpBufferFactorSize接口得到maxLivedNodeCount 、extraBuffer输出值,反推Digamma算子单次最大计算元素数量为:
currentShapeSize = (currBuff - extraBuffer) / maxLivedNodeCount / typeSize
函数原型
1
|
void GetDigammaTmpBufferFactorSize(const uint32_t typeSize, uint32_t &maxLiveNodeCount, uint32_t &extraBuffer) |
参数说明
接口 |
输入/输出 |
功能 |
---|---|---|
typeSize |
输入 |
算子输入的数据类型大小,单位为字节。比如算子输入的数据类型为half,此处应传入2。 |
maxLiveNodeCount |
输出 |
最大存活节点数,最大临时空间是输入所占空间的多少倍。 |
extraBuffer |
输出 |
使用的额外临时空间大小,单位为byte。 |
返回值
无
支持的型号
Atlas A2训练系列产品/Atlas 800I A2推理产品
Atlas推理系列产品(Ascend 310P处理器)AI Core
约束说明
当利用maxLiveNodeCount,extraBuffer反推出的currentShapeSize * typeSize < 256B时,currentShapeSize按照256B/ typeSize的值向上取整。
调用示例
// 获取输入类型为half的digamma操作的maxLiveNodeCount和extraBuffer uint32_t typeSize = sizeof(half); uint32_t maxLiveNodeCount = 0; uint32_t extraBuffer = 0; AscendC::GetDigammaTmpBufferFactorSize(typeSize, maxLiveNodeCount, extraBuffer);