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);
参数
参数名 |
类型 |
描述 |
输入/输出 |
|---|---|---|---|
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的任务。
父主题: 计算图编程函数