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

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。