diff --git a/src/opr/impl/tensor_manip.cpp b/src/opr/impl/tensor_manip.cpp index 9cbae01e..03e453bc 100644 --- a/src/opr/impl/tensor_manip.cpp +++ b/src/opr/impl/tensor_manip.cpp @@ -1410,11 +1410,8 @@ SymbolVar ParamPackConcat::make(const SmallVector& inp, void ParamPackConcat::scn_do_execute() { mgb_assert(m_opr.comp_node() == comp_node()); auto&& inputs = input(); - if (!m_inp_ptr) { - void** raw_inp_ptr = (void**)comp_node().alloc_host(sizeof(void*)*inputs.size()); - m_inp_ptr = {raw_inp_ptr, [comp_node=comp_node()](void** ptr){comp_node.free_host(ptr);}}; - } - auto ptr = m_inp_ptr.get(); + m_inp_ptr.resize(inputs.size() - 1); + auto ptr = m_inp_ptr.data(); for (size_t i = 0; i < inputs.size() - 1; i++) { ptr[i] = inputs[i]->dev_tensor().as_megdnn().raw_ptr; } diff --git a/src/opr/include/megbrain/opr/tensor_manip.h b/src/opr/include/megbrain/opr/tensor_manip.h index 74d4f2ed..dd3713e3 100644 --- a/src/opr/include/megbrain/opr/tensor_manip.h +++ b/src/opr/include/megbrain/opr/tensor_manip.h @@ -544,7 +544,7 @@ MGB_DEFINE_OPR_CLASS(Concat, cg::SingleCNOutshapePureByInshapeOprBase) // { */ MGB_DEFINE_OPR_CLASS(ParamPackConcat, cg::SingleCNOperatorNodeBase) // { //! input pointer buffer - std::shared_ptr m_inp_ptr; + SmallVector m_inp_ptr; std::vector m_offsets; intl::UniqPtrWithCN m_opr;