From adfa468899cbf176f5445810734ce8a354c45613 Mon Sep 17 00:00:00 2001 From: Megvii Engine Team Date: Thu, 4 Jun 2020 13:03:21 +0800 Subject: [PATCH] fix(mge/functional): fix scatter doctest failed for GPU platform issue GitOrigin-RevId: b5f92c39dd46f13aee07e9cad441e017069aaa3a --- python_module/megengine/functional/tensor.py | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/python_module/megengine/functional/tensor.py b/python_module/megengine/functional/tensor.py index 1dc0b6b70..b9a14ee2b 100644 --- a/python_module/megengine/functional/tensor.py +++ b/python_module/megengine/functional/tensor.py @@ -236,6 +236,14 @@ def scatter(inp: Tensor, axis: int, index: Tensor, source: Tensor) -> Tensor: Moreover, the values of :attr:`index` must be between ``0`` and ``inp.shape(axis) - 1`` inclusive. + .. note:: + Please notice that, due to performance issues, the result is uncertain on the GPU device + if scatter difference positions from source to the same destination position + regard to index tensor. + + Show the case using the following examples, the oup[0][2] is maybe + from source[0][2] which value is 0.2256 or source[1][2] which value is 0.5339 + if set the index[1][2] from 1 to 0. :param inp: the inp tensor which to be scattered :param axis: the axis along which to index @@ -252,17 +260,16 @@ def scatter(inp: Tensor, axis: int, index: Tensor, source: Tensor) -> Tensor: inp = tensor(np.zeros(shape=(3,5),dtype=np.float32)) source = tensor([[0.9935,0.9465,0.2256,0.8926,0.4396],[0.7723,0.0718,0.5939,0.357,0.4576]]) - index = tensor([[0,2,0,2,1],[2,0,0,1,2]]) + index = tensor([[0,2,0,2,1],[2,0,1,1,2]]) oup = F.scatter(inp, 0, index,source) print(oup.numpy()) Outputs: .. testoutput:: - :options: +SKIP - [[0.9935 0.0718 0.5939 0. 0. ] - [0. 0. 0. 0.357 0.4396] + [[0.9935 0.0718 0.2256 0. 0. ] + [0. 0. 0.5939 0.357 0.4396] [0.7723 0.9465 0. 0.8926 0.4576]] """ -- GitLab