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的任务。
父主题: 计算图编程函数