---
title: kpccl_static_graph_add_norm_gnode
description: "向kpccl静态图中添加gnode节点，即添加静态的节点。"
url: https://www.hikunpeng.com/document/detail/zh/hpchistory/hpckit/develop2400/KunoengHPCKit_developer_041.html
sourcePath: /source/zh/hpchistory/hpckit/develop2400/KunoengHPCKit_developer_041.html
indexId: 8d5d2838de2c2a29ef9e41c956026ad4def2cbb8e567e147ae2f7b1b3c86739473
---
# kpccl_static_graph_add_norm_gnode

向kpccl静态图中添加gnode节点，即添加静态的节点。

#### 接口定义

kpccl_gnode_h kpccl_static_graph_add_norm_gnode(kpccl_static_graph_h sgraph, kpccl_gnode_desc_t *desc);


#### 参数


**表1 参数定义**

| 参数名 | 类型 | 描述 | 输入/输出 |
| --- | --- | --- | --- |
| sgraph | kpccl\_static\_graph\_h | 需要向其中添加gnode的静态图 | 输入/输出 |
| desc | kpccl\_gnode\_desc\_t \* | 需要添加的gnode的描述，具体见下表 | 输入 |


**表2 kpccl_gnode_desc_t的数据结构**

| 参数名 | 类型 | 描述 |
| --- | --- | --- |
| field\_mask | uint32\_t | 掩码，用于指定结构体中哪些值有效，不设置掩码情况下仅func、args参数生效，其他需要设置掩码。 具体可设置的掩码： KPCCL\_GNODE\_DESC\_FIELD\_PRIORITY: priority生效 KPCCL\_GNODE\_DESC\_FIELD\_NAME: name生效 KPCCL\_GNODE\_DESC\_FIELD\_FLAG: flag生效 KPCCL\_GNODE\_DESC\_FIELD\_EXECUTOR\_ID:executor\_id生效 |
| func | kpccl\_gnode\_func\_t | gnode节点的函数，该节点提交执行后需要执行的具体函数 |
| args | void \* | func函数需要传入的参数 |
| priority | int | 需要配置掩码KPCCL\_GNODE\_DESC\_FIELD\_PRIORITY后才能生效；该节点的优先级，数值越大，优先级越高 |
| name | const char \* | 需要配置掩码KPCCL\_GNODE\_DESC\_FIELD\_NAME后才能生效；该节点的名字 |
| flag | uint32\_t | 需要配置掩码KPCCL\_GNODE\_DESC\_FIELD\_FLAG后才能生效；该节点的flag，可设置为KPCCL\_GNODE\_FLAG\_IMM，表示提交后将直接执行该节点 |
| executor\_id | int | 需要配置掩码KPCCL\_GNODE\_DESC\_FIELD\_EXECUTOR\_ID后才能生效；该节点task绑定的executor执行器编号 |


#### 返回值

- 成功：返回添加的gnode节点
- 失败：返回nullptr


#### 示例

```
#include <stdio.h>
#include "kpccl.h"
static inline void task_str(void *args)
{
printf("static graph task test.\n");
}
int main()
{
kpccl_graph_h graph = kpccl_graph_create(nullptr);
kpccl_static_graph_h sgraph = kpccl_static_graph_create();
kpccl_gnode_desc_t node_desc = {
.field_mask = KPCCL_GNODE_DESC_FIELD_PRIORITY,
.func = task_str,
.args = nullptr,
.priority = 1,
};
kpccl_gnode_h gnode =
kpccl_static_graph_add_norm_gnode
(sgraph, &node_desc);
kpccl_subgraph_task_desc_t subgraph_task_desc = {
.sgraph = sgraph,
};
kpccl_graph_add_subgraph_task(graph, &subgraph_task_desc, nullptr);
kpccl_graph_synchronize(graph);
kpccl_graph_destroy(graph);
kpccl_static_graph_destroy(sgraph);
return 0;
}
```

运行结果如下。
```
static graph task test.
```

上述示例演示了在静态图中添加gnode，并通过提交静态图执行的流程。上述kpccl_static_graph_add_norm_gnode函数向静态图sgraph中添加了gnode节点，该gnode节点的函数为task_str，函数不需要参数，该节点设置了priority生效且priority值设置为1。
