# CalcSize

## 函数功能

用于计算算子对应的ComputeNodeInfo需要预分配的内存空间大小。

ComputeNodeInfo的内存空间是平铺式的，内存依次存放ComputeNodeInfo自身的数据成员、算子IR定义输入个数的Anchor信息、实际输入个数和输出个数的编译阶段的Tensor描述信息以及属性信息。该函数的计算结果不包含属性信息所占的内存空间大小。

## 函数原型

```cpp
static ge::graphStatus CalcSize(const size_t ir_inputs_num, const size_t inputs_num, const size_t outputs_num, size_t &total_size);
static ge::graphStatus CalcSize(const size_t ir_inputs_num, const size_t ir_outputs_num, const size_t inputs_num, const size_t outputs_num, size_t &total_size);
```

## 参数说明

|参数|输入/输出|说明|
|:-------------|:----|:-----------------------------------------------------|
|ir_inputs_num|输入|算子IR原型定义的输入个数。|
|ir_outputs_num|输出|算子IR原型定义的输出个数。|
|inputs_num|输入|算子实际的输入个数。|
|outputs_num|输出|算子实际的输出个数。|
|total_size|输出|需要预分配的ComputeNodeInfo和相关信息的内存总大小，不包含RuntimeAttrs的内存大小。|

## 返回值

返回值为graphStatus类型（uint32_t），其不同的状态取值说明如下。

|状态|值|说明|
|:----------------------|:-------|:---------------|
|ge::GRAPH_SUCCESS|0|执行成功。|
|ge::GRAPH_PARAM_INVALID|50331649|执行失败，参数无效，校验未通过。|

## 约束说明

无

## 调用示例

```cpp
auto ir_input_num = node->GetOpDesc()->GetIrInputs().size();
auto input_num = node->GetInDataNodesAndAnchors().size();
auto output_num = node->GetAllOutDataAnchorsSize();
GE_ASSERT_SUCCESS(ComputeNodeInfo::CalcSize(ir_input_num, input_num, output_num, total_size));
```

