diff --git a/paddle/fluid/framework/ir/delete_repeated_ops_pass.cc b/paddle/fluid/framework/ir/delete_repeated_ops_pass.cc index 508279b101692e7a750db660592855d661df7f1d..ea0de9759f3a01d83c56ca12a95e7206ff8d2bc4 100644 --- a/paddle/fluid/framework/ir/delete_repeated_ops_pass.cc +++ b/paddle/fluid/framework/ir/delete_repeated_ops_pass.cc @@ -122,6 +122,10 @@ void DeleteRepeatedOpsPass::DeleteRepeatedOps( Graph* graph) { VLOG(4) << "handle DeleteRepeatedOps"; GET_IR_NODE_FROM_SUBGRAPH(in_var, in_var, pattern); + // in_var node may be deleted by the previous detected subgraph + if (graph->Nodes().count(in_var) == 0) { + return; + } std::vector invalid_out_ops{ "while", "conditional_block", "fetch"}; diff --git a/paddle/phi/kernels/xpu/multiclass_nms3_kernel.cc b/paddle/phi/kernels/xpu/multiclass_nms3_kernel.cc index d33f2e793edba203acf0fe83d87fd014bf9b2743..442d972691f5a45c4c31e24eaa0bc330b5b2defe 100644 --- a/paddle/phi/kernels/xpu/multiclass_nms3_kernel.cc +++ b/paddle/phi/kernels/xpu/multiclass_nms3_kernel.cc @@ -59,10 +59,18 @@ void MultiClassNMSKernel(const Context& ctx, rois_num_vec.clear(); if (is_lod) { if (has_rois_num) { + phi::DenseTensor rois_num_host; + rois_num_host.Resize(rois_num.get_ptr()->dims()); + ctx.template HostAlloc(&rois_num_host); + phi::Copy(ctx, + *rois_num.get_ptr(), + rois_num_host.place(), + false, + &rois_num_host); n = rois_num.get_ptr()->numel(); for (int i = 0; i < n; i++) { - rois_num_vec.push_back(rois_num.get_ptr()->data()[i]); - boxes_count += rois_num.get_ptr()->data()[i]; + rois_num_vec.push_back(rois_num_host.data()[i]); + boxes_count += rois_num_host.data()[i]; } } else { auto lod = bboxes.lod().back();