diff --git a/paddle/phi/kernels/cpu/flip_kernel.cc b/paddle/phi/kernels/cpu/flip_kernel.cc index d53ffaa3df439b..d6c8637399b2de 100644 --- a/paddle/phi/kernels/cpu/flip_kernel.cc +++ b/paddle/phi/kernels/cpu/flip_kernel.cc @@ -42,6 +42,9 @@ void FlipKernel(const Context& dev_ctx, auto numel = x.numel(); const T* x_data = x.data(); T* out_data = dev_ctx.template Alloc(out); + if (out->numel() == 0) { + return; + } #ifdef PADDLE_WITH_MKLML #pragma omp parallel for #endif diff --git a/paddle/phi/kernels/gpu/flip_kernel.cu b/paddle/phi/kernels/gpu/flip_kernel.cu index 4b73fd48d95985..22fb297d0a5f98 100644 --- a/paddle/phi/kernels/gpu/flip_kernel.cu +++ b/paddle/phi/kernels/gpu/flip_kernel.cu @@ -68,6 +68,9 @@ void FlipKernel(const Context& dev_ctx, DenseTensor* out) { auto* in_data = x.data(); auto* out_data = dev_ctx.template Alloc(out); + if (out->numel() == 0) { + return; + } auto x_dims = x.dims(); const int rank = x_dims.size(); diff --git a/test/legacy_test/test_reverse_op.py b/test/legacy_test/test_reverse_op.py index ded51a261721e0..3cab066fde9155 100644 --- a/test/legacy_test/test_reverse_op.py +++ b/test/legacy_test/test_reverse_op.py @@ -91,6 +91,26 @@ def initTestCase(self): self.axis = [-1, -2] +class TestCase4(TestReverseOp): + def initTestCase(self): + self.x = np.random.random((3, 0, 10)).astype('float64') + self.axis = [1, 2] + + +class TestCase5(TestReverseOp): + def initTestCase(self): + self.x = np.random.random((2, 0, 3)).astype('float32') + self.axis = [0] + + +class TestCase6(TestReverseOp): + def initTestCase(self): + self.x = np.random.random((2, 0, 0)).astype('float32') + self.axis = [ + 0, + ] + + if __name__ == '__main__': paddle.enable_static() unittest.main()