AnnotatedKernelLaunchInfo
产品支持情况
全量芯片支持。
头文件/库文件
- 头文件:#include <exe_graph/runtime/annotated_args_context.h>
- 库文件:liblowering.so
功能说明
gert::AnnotatedKernelLaunchInfo描述一次声明式kernel launch的元信息,作为AnnotatedArgsContext::AddLaunch的第一个参数。它只描述kernel入口、二进制、block维度和逻辑stream;kernel参数本身由AnnotatedKernelArgs提供。
函数原型
namespace gert {
struct AnnotatedKernelLaunchInfo {
const char *kernel_name = nullptr; // kernel二进制中的入口函数名称
const void *kernel_bin = nullptr; // kernel二进制数据
size_t kernel_bin_size = 0U; // kernel二进制数据大小,单位为字节
uint32_t block_dim = 0U; // kernel的block维度
uint32_t stream_id = 0U; // launch所在的逻辑stream ID
};
} // namespace gert
参数说明
| 参数名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
kernel_name |
const char * |
nullptr |
kernel二进制中的入口函数名称。传给AddLaunch时必须为非空且首字符不能是\0。 |
kernel_bin |
const void * |
nullptr |
kernel二进制数据起始地址。传给AddLaunch时必须非空。 |
kernel_bin_size |
size_t |
0U |
二进制数据大小,单位为字节;必须大于0。 |
block_dim |
uint32_t |
0U |
kernel的block维度;必须大于0。 |
stream_id |
uint32_t |
0U |
launch所在的逻辑stream ID。应使用AnnotatedArgsContext::GetStreamId的返回值,并与节点主stream一致。 |
返回值说明
不涉及。
约束说明
无
调用示例
以下kKernelBin和kKernelBinSize仅表示用户实际编译得到的kernel二进制及其大小,并非可执行的示例二进制。
extern const uint8_t kKernelBin[];
extern const size_t kKernelBinSize;
gert::AnnotatedKernelArgs args(
gert::InputAddr{0U, input_addr}, uint64_t{1U});
const gert::AnnotatedKernelLaunchInfo launch_info{
"my_kernel", kKernelBin, kKernelBinSize, 32U, ctx.GetStreamId()};
const auto ret = ctx.AddLaunch(launch_info, std::move(args));
if (ret != ge::GRAPH_SUCCESS) {
return ret;
}
return ge::GRAPH_SUCCESS;