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);
参数
参数名 |
类型 |
描述 |
输入/输出 |
|---|---|---|---|
sgraph |
kpccl_static_graph_h |
需要向其中添加gnode的静态图 |
输入/输出 |
desc |
kpccl_gnode_desc_t * |
需要添加的gnode的描述,具体见下表 |
输入 |
参数名 |
类型 |
描述 |
|---|---|---|
field_mask |
uint32_t |
掩码,用于指定结构体中哪些值有效,不设置掩码情况下仅func、args参数生效,其他需要设置掩码。 具体可设置的掩码:
|
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。