文档
注册

aclopInferShape

函数功能

根据算子的输入Shape、输入值推导出算子的输出Shape。

约束说明

  • 推导算子的输出Shape包含三种场景:
    • 根据Shape推导,可以得到算子的准确输出Shape,则返回准确输出Shape;
    • 根据Shape推导,无法得到算子的准确输出Shape,但可以得到输出Shape的范围,则在输出参数outputDesc中将算子输出tensor描述中的动态维度的维度值记为-1。该场景下,用户可调用aclGetTensorDescDimRange接口获取tensor描述中指定维度的范围值。
    • (该场景预留)根据Shape推导,无法得到算子的准确输出Shape以及Shape范围,则在输出参数outputDesc中将算子输出tensor描述中的动态维度的维度值记为-2。
  • 如果算子有动态输入DYNAMIC_INPUT或动态输出DYNAMIC_OUTPUT,在调用aclopInferShape接口推导算子的输出Shape前,需先调用aclSetTensorDescName接口设置所有输入和输出的tensor描述的名称,且名称必须按照如下要求(算子IR原型中定义的输入/输出名称请参见算子清单。)
    • 对于必选输入、可选输入、必选输出,名称必须与算子IR原型中定义的输入/输出名称保持一致。
    • 对于动态输入、动态输出,名称必须是:算子IR原型中定义的输入/输出名称+编号。编号根据动态输入/输出的个数确定,从0开始,0对应第一个动态输入/输出,1对应第二个动态输入/输出,以此类推。

    例如某个算子有2个输入(第1个是必选输入x,第二个是动态输入y且输入个数为2)、1个必选输出z,则调用aclSetTensorDescName接口设置名称的代码示例如下:

    aclSetTensorDescName(inputTensorDesc[0], "x");
    aclSetTensorDescName(inputTensorDesc[1], "y0");
    aclSetTensorDescName(inputTensorDesc[2], "y1");
    aclSetTensorDescName(outputTensorDesc[0], "z");

函数原型

aclError aclopInferShape(const char *opType,

int numInputs,

aclTensorDesc *inputDesc[],

aclDataBuffer *inputs[],

int numOutputs,

aclTensorDesc *outputDesc[],

aclopAttr *attr)

参数说明

参数名

输入/输出

说明

opType

输入

算子类型名称的指针。

numInputs

输入

算子输入tensor的数量。

inputDesc

输入

算子输入tensor描述的指针数组。

需提前调用aclCreateTensorDesc接口创建aclTensorDesc类型。

inputDesc数组中的元素个数必须与numInputs参数值保持一致。

inputs

输入

算子输入tensor的指针数组。

需提前调用aclCreateDataBuffer接口创建aclDataBuffer类型的数据。

numOutputs

输入

算子输出tensor的数量。

outputDesc

输出

算子输出tensor描述的指针数组。

需提前调用aclCreateTensorDesc接口创建aclTensorDesc类型。

outputDesc数组中的元素个数必须与numOutputs参数值保持一致

attr

输入

算子属性。

返回值说明

返回0表示成功,返回其它值表示失败。

参考资源

接口调用示例,参见执行动态Shape算子示例代码

搜索结果
找到“0”个结果

当前产品无相关内容

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