#pragma once
#include "megbrain/graph/operator_node.h"
namespace mgb {
namespace cg {
class AsyncExecutable;
namespace event {
struct OprInserted {
bool is_dedup;
OperatorNodeBase* opr;
MegBrainError* exc;
MGB_TYPEINFO_OBJ_DECL_WITH_EXPORT;
};
struct OprExecStart {
OperatorNodeBase* opr;
GraphExecutable::ExecEnv* env;
MGB_TYPEINFO_OBJ_DECL_WITH_EXPORT;
};
struct AfterWait {
CompNode comp_node;
OperatorNodeBase* opr;
MGB_TYPEINFO_OBJ_DECL_WITH_EXPORT;
};
struct OprExecKernelStart {
OperatorNodeBase* opr;
GraphExecutable::ExecEnv* env;
MGB_TYPEINFO_OBJ_DECL_WITH_EXPORT;
};
struct OprExecKernelEnd {
OperatorNodeBase* opr;
GraphExecutable::ExecEnv* env;
MGB_TYPEINFO_OBJ_DECL_WITH_EXPORT;
};
struct OprExecFinished {
OperatorNodeBase* opr;
GraphExecutable::ExecEnv* env;
MGB_TYPEINFO_OBJ_DECL_WITH_EXPORT;
};
struct BeforeKernel {
OperatorNodeBase* opr;
CompNode comp_node;
MGB_TYPEINFO_OBJ_DECL_WITH_EXPORT;
};
struct AfterKernel {
OperatorNodeBase* opr;
CompNode comp_node;
MGB_TYPEINFO_OBJ_DECL_WITH_EXPORT;
};
struct StaticMemAlloc {
bool* need_realloc;
CompNode comp_node;
size_t alloc_size;
MGB_TYPEINFO_OBJ_DECL_WITH_EXPORT;
};
struct CompSeqOrderDetermined {
ComputingGraph* graph;
AsyncExecutable* exec;
MGB_TYPEINFO_OBJ_DECL_WITH_EXPORT;
};
struct CompSeqExecBeforeStart {
ComputingGraph* graph;
AsyncExecutable* exec;
CleanupCallback* after_kern_dispatch;
const CompNode::UnorderedSet* used_comp_node;
size_t seq_version;
MGB_TYPEINFO_OBJ_DECL_WITH_EXPORT;
};
struct CompSeqExecFinished {
bool explicit_user_wait;
bool device_actually_finished;
ComputingGraph* graph;
AsyncExecutable* exec;
MGB_TYPEINFO_OBJ_DECL_WITH_EXPORT;
};
struct CompSeqExecError {
ComputingGraph* grah;
AsyncExecutable* exec;
MGB_TYPEINFO_OBJ_DECL_WITH_EXPORT;
};
struct SubgraphAssociated {
ComputingGraph* par_graph;
ComputingGraph* sub_graph;
MGB_TYPEINFO_OBJ_DECL_WITH_EXPORT;
};
#if MGB_ENABLE_VAR_DEV_MEM_DEFRAGMENTER
struct BeforeMemDefrag {
MGB_TYPEINFO_OBJ_DECL_WITH_EXPORT;
};
#endif
} } }