diff --git a/paddle/fluid/framework/new_executor/garbage_collector/garbage_collector.cc b/paddle/fluid/framework/new_executor/garbage_collector/garbage_collector.cc index 73e6664f66f1e04a810e4ed58d13f5b7c05e528e..8ff8b9528322f95e6be2963bc896c9c223b1ec32 100644 --- a/paddle/fluid/framework/new_executor/garbage_collector/garbage_collector.cc +++ b/paddle/fluid/framework/new_executor/garbage_collector/garbage_collector.cc @@ -60,7 +60,16 @@ CreateInterpreterCoreGarbageCollector( return std::unique_ptr( new InterpreterCoreEventGarbageCollector(vec_instruction)); } - } else if (platform::is_xpu_place(place) || platform::is_ipu_place(place)) { + } else if (platform::is_xpu_place(place)) { + // Because there is no multi-stream on XPU device, fast GC can + // be used. + // Previously, XPU used no_event GC. But `Wait` in no_event GC + // may cause GC delayed, causing no enough memory problem. + // TODO(pangyoki): Multi-stream allocator and multi-stream GC + // are needed to be adapted for XPU. + return std::unique_ptr( + new InterpreterCoreFastGarbageCollector()); + } else if (platform::is_ipu_place(place)) { return std::unique_ptr( new InterpreterCoreNoEventGarbageCollector()); } else {