鲲鹏社区首页
中文
注册
开发者
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助

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的任务。