文档
注册
评分
提单
论坛
小AI

GetRoundTmpBufferFactorSize

功能说明

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

推算示例如下:

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

    currentShapeSize = (currBuff - extraBuf) / maxLivedNodeCnt / typeSize

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

    currentShapeSize1 = (currBuff - extraBuf1) / maxLivedNodeCnt1 / typeSize

    currentShapeSize2 = (currBuff - extraBuf2) / maxLivedNodeCnt2 / typeSize

    currentShapeSize = min(currentShapeSize1, currentShapeSize2)

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

函数原型

1
void GetRoundTmpBufferFactorSize(const platform_ascendc::PlatformAscendC &ascendcPlatform, const uint32_t typeSize, uint32_t &maxLiveNodeCnt, uint32_t &extraBuf)

参数说明

表1 参数列表

接口

输入/输出

功能

ascendcPlatform

输入

输入的平台信息。

typeSize

输入

算子输入的数据类型大小,单位为字节。比如算子输入的数据类型为half,此处应传入2。

maxLiveNodeCnt

输出

最大存活节点数,表示临时空间是单次计算数据量所占空间的多少倍。

extraBuf

输出

使用的额外临时空间大小,单位为byte。

返回值

支持的型号

Atlas A2训练系列产品/Atlas 800I A2推理产品

Atlas推理系列产品(Ascend 310P处理器)AI Core

约束说明

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

调用示例

完整的调用样例请参考更多样例
auto plat = platform_ascendc::PlatformAscendC(context->GetPlatformInfo());
uint32_t maxLiveNodeCnt = 0;
uint32_t extraBuf = 0;
AscendC::GetRoundTmpBufferFactorSize(plat, typeSize, maxLiveNodeCnt, extraBuf);
搜索结果
找到“0”个结果

当前产品无相关内容

未找到相关内容,请尝试其他搜索词