kernel侧ReduceProd接口的计算需要开发者预留/申请临时空间,本接口用于在host侧获取预留/申请的最大最小临时空间大小,开发者基于此范围选择合适的空间大小作为Tiling参数传递到kernel侧使用。
1
|
void GetReduceProdMaxMinTmpSize(const ge::Shape &srcShape, const ge::DataType dataType, ReducePattern pattern, bool isSrcInnerPad, bool isReuseSource, uint32_t &maxValue, uint32_t &minValue) |
接口 |
输入/输出 |
功能 |
||
---|---|---|---|---|
srcShape |
输入 |
输入数据的shape大小,参数取值与ReduceProd接口的srcShape参数保持一致。 |
||
dataType |
输入 |
输入的数据类型,ge::DataType类型,该类型的具体定义请参考DataType,当前只支持float数据类型的输入。 |
||
pattern |
输入 |
用于指定ReduceProd的计算轴。ReducePattern类型,该类型的定义如下,包括Reduce轴和Normal轴。pattern由与输入向量维度数量相同的A、R字母组合形成,字母A表示Normal轴,R表示Reduce轴。该参数的取值与ReduceProd接口的pattern参数保持一致,当前只支持取值为AscendC::ReducePattern::AR,AscendC::ReducePattern::RA。
|
||
isSrcInnerPad |
输入 |
表示实际需要计算的最内层轴数据是否32Bytes对齐,参数取值与ReduceProd接口的isSrcInnerPad参数保持一致。 |
||
isReuseSource |
输入 |
是否复用源操作数输入的空间,参数取值与ReduceProd接口的isReuseSource参数保持一致。 |
||
maxValue |
输出 |
ReduceProd接口能完成计算所需的最大临时空间大小,超出该值的空间不会被该接口使用。
说明:
maxValue仅作为参考值,有可能大于Unified Buffer剩余空间的大小,该场景下,开发者需要根据Unified Buffer剩余空间的大小来选取合适的临时空间大小。 |
||
minValue |
输出 |
ReduceProd接口能完成计算所需最小临时空间大小。为保证功能正确,接口计算时预留/申请的临时空间不能小于该数值。 |
无
完整的调用样例请参考更多样例。
1 2 3 4 5 |
// 输入shape为16*32的矩阵;算子输入的数据类型为float;isReuseSource传入默认值false uint32_t maxSize; uint32_t minSize; auto shape = ge::Shape({ 16, 32 }); AscendC::GetReduceProdMaxMinTmpSize(shape, ge::DataType::DT_FLOAT, AscendC::ReducePattern::AR, true, false, maxSize, minSize); |