diff --git a/paddle/fluid/memory/allocation/allocator.h b/paddle/fluid/memory/allocation/allocator.h index 693c1cd47b0de0..9d960845198f7a 100644 --- a/paddle/fluid/memory/allocation/allocator.h +++ b/paddle/fluid/memory/allocation/allocator.h @@ -147,7 +147,10 @@ static T&& FillValue(T&& allocation) { #if defined(PADDLE_WITH_CUDA) if (allocation != nullptr) { if (FLAGS_sync_after_alloc || FLAGS_alloc_fill_value >= 0) { - PADDLE_ENFORCE_GPU_SUCCESS(cudaDeviceSynchronize()); + bool need_sync = !platform::is_cpu_place(allocation->place()); + if (need_sync) { + PADDLE_ENFORCE_GPU_SUCCESS(cudaDeviceSynchronize()); + } if (FLAGS_alloc_fill_value >= 0) { VLOG(10) << "Set " << FLAGS_alloc_fill_value << " on " << allocation->ptr() << " " << allocation->place() << " " @@ -159,7 +162,9 @@ static T&& FillValue(T&& allocation) { std::memset( allocation->ptr(), FLAGS_alloc_fill_value, allocation->size()); } - PADDLE_ENFORCE_GPU_SUCCESS(cudaDeviceSynchronize()); + if (need_sync) { + PADDLE_ENFORCE_GPU_SUCCESS(cudaDeviceSynchronize()); + } } } }