---
title: kpccl_static_graph_add_norm_dep
description: "为kpccl静态图中的两个节点添加依赖关系。"
url: https://www.hikunpeng.com/document/detail/zh/hpchistory/hpckit/develop2400/KunoengHPCKit_developer_042.html
sourcePath: /source/zh/hpchistory/hpckit/develop2400/KunoengHPCKit_developer_042.html
indexId: f42a670819360d1d98dc2ddd5bd9d0df703f45cf3575f808e911642bcfc7d1ee73
---
# kpccl_static_graph_add_norm_dep

为kpccl静态图中的两个节点添加依赖关系。

#### 接口定义

int kpccl_static_graph_add_norm_dep(kpccl_static_graph_h sgraph, kpccl_gnode_h precede, kpccl_gnode_h succeed);


#### 参数


**表1 参数定义**

| 参数名 | 类型 | 描述 | 输入/输出 |
| --- | --- | --- | --- |
| sgraph | kpccl\_static\_graph\_h | 需要为其节点添加依赖关系的静态图 | 输入/输出 |
| precede | kpccl\_gnode\_h | 添加依赖关系的前继节点 | 输入 |
| succeed | kpccl\_gnode\_h | 添加依赖关系的后继节点 | 输入 |


#### 返回值

成功：返回KPCCL_OK

失败：返回KPCCL_ERROR


#### 示例

```
#include <stdio.h>
#include "kpccl.h"
void func1(void *args)
{
printf("gnode1 task finished\n");
}
void func2(void *args)
{
printf("gnode2 task finished\n");
}
int main()
{
kpccl_graph_h graph = kpccl_graph_create(nullptr);
kpccl_static_graph_h sgraph = kpccl_static_graph_create();
kpccl_gnode_desc_t gnode1_desc = {
.func = func1,
.args = nullptr,
};
kpccl_gnode_h gnode1 = kpccl_static_graph_add_norm_gnode(sgraph, &gnode1_desc);
kpccl_gnode_desc_t gnode2_desc = {
.func = func2,
.args = nullptr,
};
kpccl_gnode_h gnode2 = kpccl_static_graph_add_norm_gnode(sgraph, &gnode2_desc);
kpccl_static_graph_add_norm_dep
(sgraph, gnode1, gnode2);
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;
}
```

运行结果如下。

```
gnode1 task finished
gnode2 task finished
```

上述示例演示了在静态图中添加gnode1、gnode2两个节点，并且为gnode1、gnode2两个节点添加依赖关系，最终通过提交静态图执行的流程。上述kpccl_static_graph_add_norm_dep函数添加了gnode1到gnode2的依赖关系，即gnode1为前继节点、gnode2为后继节点；根据运行结果得以验证函数功能，gnode1的任务先执行完毕，再执行gnode2的任务。
