#pragma once
#include "ggml-et-common.h"
#include <string>
#include <utility>
#include <vector>
#define ET_TRACE_BUFFER_SIZE (1024 * 1024 * 8UL)
bool ggml_et_load_kernel(ggml_backend_et_device_context * dev_ctx, const std::string & kernel_name);
bool ggml_et_launch_kernel(ggml_backend_et_device_context * dev_ctx,
const std::string & kernel_name,
void * params,
size_t params_size,
uint64_t shire_mask = 0xFFFFFFFF,
bool enable_print = false,
bool sync_error_check = false);
void ggml_et_uberkernel_begin_graph(ggml_backend_et_uberkernel_context * uk_ctx);
bool ggml_et_uberkernel_end_graph(ggml_backend_et_device_context * dev_ctx);
void ggml_et_uberkernel_abort_graph(ggml_backend_et_uberkernel_context * uk_ctx);
bool ggml_et_uberkernel_failed(const ggml_backend_et_uberkernel_context * uk_ctx);
void ggml_et_unload_kernel(ggml_backend_et_device_context * dev_ctx, const std::string & kernel_name);
void ggml_et_unload_all_kernels(ggml_backend_et_device_context * dev_ctx);
std::vector<std::pair<std::string, rt::KernelId>> ggml_et_get_loaded_kernels(ggml_backend_et_device_context * dev_ctx);