---
title: 函数：create_and_get_op_desc
description: "获取指定算子的描述信息，包括算子名、输入Tensor描述、输出Tensor描述，如果查询不到指定算子，则返回报错。该接口不支持动态Shape场景。"
url: https://www.hiascend.com/document/detail/zh/canncommercial/latest/API/ascendgraphapi/aclpythondevg_01_0153.html
sourcePath: /source/zh/canncommercial/900/API/ascendgraphapi/aclpythondevg_01_0153.html
indexId: e16ed390a07a9cd2d8408ddc633c0f95518dbded3ee448e1f3c21489b808098b75
---
# 函数：create_and_get_op_desc

#### 功能说明

获取指定算子的描述信息，包括算子名、输入Tensor描述、输出Tensor描述，如果查询不到指定算子，则返回报错。该接口不支持动态Shape场景。


#### 函数原型

- C函数原型
  1 aclError aclmdlCreateAndGetOpDesc(uint32_t deviceId, uint32_t streamId, uint32_t taskId, char *opName, size_t opNameLen, aclTensorDesc **inputDesc, size_t *numInputs, aclTensorDesc **outputDesc, size_t *numOutputs)

- python函数
  1 op_name, input_desc, num_inputs, output_desc, num_outputs, ret = acl.mdl.create_and_get_op_desc(device_id, stream_id, task_id, op_name_len)


#### 参数说明

| 参数名 | 说明 |
| --- | --- |
| device\_id | int，指定Device ID。 调用acl.rt.get\_device\_id\_from\_exception\_info(https://www.hiascend.comdocument/detail/zh/canncommercial/900/API/runtimeapi/aclpythondevg\_01\_0135.html)接口获取异常信息中的Device ID，作为本接口的输入。 |
| stream\_id | int，指定Stream ID。 调用acl.rt.get\_stream\_id\_from\_exception\_info(https://www.hiascend.comdocument/detail/zh/canncommercial/900/API/runtimeapi/aclpythondevg\_01\_0133.html)接口获取异常信息中的Stream ID，作为本接口的输入。 |
| task\_id | int，指定Task ID。 调用acl.rt.get\_task\_id\_from\_exception\_info(https://www.hiascend.comdocument/detail/zh/canncommercial/900/API/runtimeapi/aclpythondevg\_01\_0132.html)接口获取异常信息中的Task ID，作为本接口的输入。 |
| op\_name\_len | int，算子名称字符串长度。 若用户指定的长度比实际算子名称的长度短，则返回报错。 |


#### 返回值说明

| 返回值 | 说明 |
| --- | --- |
| op\_name | string，算子名称字符串。 |
| input\_desc | int，算子所有输入的Tensor描述，指向一块连续内存的首地址。 |
| num\_inputs | int，输入个数。 |
| output\_desc | int，算子所有输出的Tensor描述，指向一块连续内存的首地址。 |
| num\_outputs | int，输出个数。 |
| ret | int，错误码，返回0表示成功，返回其它值表示失败。 |


#### 约束说明

使用场景举例：执行整网模型推理时（不支持动态Shape场景），如果产生AI Core报错，可以调用本接口获取报错算子的描述信息，再做进一步错误排查。

推荐的接口调用顺序如下：1. 定义并实现异常回调函数fn
aclrtExceptionInfoCallback类型，回调函数原型请参见acl.rt.set_exception_info_callback(https://www.hiascend.comdocument/detail/zh/canncommercial/900/API/runtimeapi/aclpythondevg_01_0131.html)。
实现回调函数的关键步骤如下：

  a. 在异常回调函数fn内调用    acl.rt.get_device_id_from_exception_info(https://www.hiascend.comdocument/detail/zh/canncommercial/900/API/runtimeapi/aclpythondevg_01_0135.html)
、    acl.rt.get_stream_id_from_exception_info(https://www.hiascend.comdocument/detail/zh/canncommercial/900/API/runtimeapi/aclpythondevg_01_0133.html)
、    acl.rt.get_task_id_from_exception_info(https://www.hiascend.comdocument/detail/zh/canncommercial/900/API/runtimeapi/aclpythondevg_01_0132.html)
接口分别获取Device ID、Stream ID、Task ID。
  b. 在异常回调函数fn内调用    acl.mdl.create_and_get_op_desc
接口获取算子的描述信息。
  c. 在异常回调函数fn内调用    acl.get_tensor_desc_by_index
接口获取指定算子输入/输出的Tensor描述。
  d. 在异常回调函数fn内参考如下接口获取Tensor描述中的数据，进行进一步分析。
    例如，调用acl.get_tensor_desc_address接口获取Tensor数据的内存地址（用户可从该内存地址中获取Tensor数据）、调用acl.get_tensor_desc_type接口获取Tensor描述中的数据类型、调用acl.get_tensor_desc_format接口获取Tensor描述中的Format、调用acl.get_tensor_desc_num_dims接口获取Tensor描述中的Shape维度个数、调用acl.get_tensor_desc_dim_v2接口获取Shape中指定维度的大小。

2. 调用  acl.rt.set_exception_info_callback(https://www.hiascend.comdocument/detail/zh/canncommercial/900/API/runtimeapi/aclpythondevg_01_0131.html)
接口设置异常回调函数。
3. 执行模型推理。
  如果存在AI Core报错，则触发回调函数fn，获取算子的信息，进行进一步分析。
