该结构体为ContextBuilder类最终的构造结果,可通过指定的接口获取内部算子信息或获取KernelContext类的对象。
struct KernelRunContextHolder { KernelRunContextHolder(); ~KernelRunContextHolder(); template<typename T> T *GetContext() const { return reinterpret_cast<T*>(context); } gert::ComputeNodeInfo *MutableComputeNodeInfo() { return reinterpret_cast<gert::ComputeNodeInfo *>(computeNodeExtendHolder.get()); } std::unique_ptr<ValueHolderImpl> valueHolder; std::unique_ptr<uint8_t[]> computeNodeExtendHolder; KernelRunContext *context {nullptr}; };
函数名称 |
入参说明 |
含义 |
---|---|---|
GetContext |
无 |
获取context成员变量转化为模板T的指针,T可选值为 KernelContext以及它的子类如TilingContext |
MutableComputeNodeInfo |
无 |
返回构造的gert::ComputeNodeInfo类指针 |
变量名称 |
变量含义 |
---|---|
valueHolder |
保证KernelRunContextHolder内部值不析构的智能指针 |
computeNodeExtendHolder |
可转化成ComputeNodeInfo类的智能指针 |
context |
指向KernelRunContext类的指针 |
无
auto holder = context_ascendc::ContextBuilder().Inputs().Outputs().BuildKernelRunContext(); if (holder != nullptr) { gert::KernelContext tilingParseContext = holder->GetContext<gert::KernelContext>(); gert::ComputeNodeInfo* info = holder->MutableComputeNodeInfo(); }