diff --git a/src/opr/impl/tensor_manip.cpp b/src/opr/impl/tensor_manip.cpp index 9cbae01e731e627da63f20572c7a5e431d15e0b3..03e453bcb113097d844df3c5958cfb1c4d0fb466 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 74d4f2edf02c48824226452b144462059c4bebee..dd3713e33902d487e841a1a6428f57f3b6d3ff9f 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;