diff --git a/paddle/phi/kernels/gpu/argsort_grad_kernel.cu b/paddle/phi/kernels/gpu/argsort_grad_kernel.cu index f28da8704cbffb06a3fb76f11f36f3abcfd6a2cc..b8d9df64c23efb54fcc81a3ff43fb26051edd850 100644 --- a/paddle/phi/kernels/gpu/argsort_grad_kernel.cu +++ b/paddle/phi/kernels/gpu/argsort_grad_kernel.cu @@ -150,7 +150,7 @@ void ArgsortGradKernel(const Context& dev_ctx, int64_t size = in_grad->numel(); if (rank == 0) { - phi::funcs::set_constant(dev_ctx, in_grad, 1.0); + phi::Copy(dev_ctx, out_grad, dev_ctx.GetPlace(), false, in_grad); return; } diff --git a/paddle/phi/kernels/xpu/argsort_grad_kernel.cc b/paddle/phi/kernels/xpu/argsort_grad_kernel.cc index 00c679f0ab999e4539d4fc8886ddec1cb475c301..96cce0461783444e71459e50a1aa775d4b9efb90 100644 --- a/paddle/phi/kernels/xpu/argsort_grad_kernel.cc +++ b/paddle/phi/kernels/xpu/argsort_grad_kernel.cc @@ -43,7 +43,7 @@ void ArgsortGradKernel(const Context& dev_ctx, if (out_grad.numel() == 0) return; if (rank == 0) { - phi::funcs::set_constant(dev_ctx, in_grad, 1.0); + phi::Copy(dev_ctx, out_grad, dev_ctx.GetPlace(), false, in_grad); return; } diff --git a/python/paddle/fluid/tests/unittests/test_zero_dim_tensor.py b/python/paddle/fluid/tests/unittests/test_zero_dim_tensor.py index 5aec0c8010f3f350fd648a1be7546a1902f31829..546c0c48f9b585c6b3a1549a9288fe386a1392d2 100644 --- a/python/paddle/fluid/tests/unittests/test_zero_dim_tensor.py +++ b/python/paddle/fluid/tests/unittests/test_zero_dim_tensor.py @@ -868,10 +868,14 @@ class TestSundryAPI(unittest.TestCase): self.assertEqual(out1.shape, []) self.assertEqual(out2.shape, []) + self.assertEqual(out1.numpy(), x1.numpy()) + self.assertEqual(out2.numpy(), x2.numpy()) self.assertEqual(out1.grad.shape, []) self.assertEqual(out2.grad.shape, []) self.assertEqual(x1.grad.shape, []) self.assertEqual(x2.grad.shape, []) + self.assertEqual(x1.grad.numpy(), 1) + self.assertEqual(x2.grad.numpy(), 1) def test_argsort(self): x1 = paddle.rand([]) @@ -886,10 +890,14 @@ class TestSundryAPI(unittest.TestCase): self.assertEqual(out1.shape, []) self.assertEqual(out2.shape, []) + self.assertEqual(out1.numpy(), 0) + self.assertEqual(out2.numpy(), 0) self.assertEqual(out1.grad.shape, []) self.assertEqual(out2.grad.shape, []) self.assertEqual(x1.grad.shape, []) self.assertEqual(x2.grad.shape, []) + self.assertEqual(x1.grad.numpy(), 0) + self.assertEqual(x2.grad.numpy(), 0) class TestSundryAPIStatic(unittest.TestCase): diff --git a/python/paddle/fluid/tests/unittests/xpu/test_zero_dim_tensor_xpu.py b/python/paddle/fluid/tests/unittests/xpu/test_zero_dim_tensor_xpu.py index 8cb27ecf0992ad534b590946a1734d4947340e5e..221c46228ea9a3f4625a608b58b2f9b80684f26a 100644 --- a/python/paddle/fluid/tests/unittests/xpu/test_zero_dim_tensor_xpu.py +++ b/python/paddle/fluid/tests/unittests/xpu/test_zero_dim_tensor_xpu.py @@ -659,10 +659,14 @@ class TestSundryAPI(unittest.TestCase): self.assertEqual(out1.shape, []) self.assertEqual(out2.shape, []) + self.assertEqual(out1.numpy(), x1.numpy()) + self.assertEqual(out2.numpy(), x2.numpy()) self.assertEqual(out1.grad.shape, []) self.assertEqual(out2.grad.shape, []) self.assertEqual(x1.grad.shape, []) self.assertEqual(x2.grad.shape, []) + self.assertEqual(x1.grad.numpy(), 1) + self.assertEqual(x2.grad.numpy(), 1) def test_argsort(self): x1 = paddle.rand([])