diff --git a/mindspore/ccsrc/backend/kernel_compiler/gpu/arrays/gatherv2_gpu_kernel.cc b/mindspore/ccsrc/backend/kernel_compiler/gpu/arrays/gatherv2_gpu_kernel.cc index 78836ae394..aedf4698cb 100644 --- a/mindspore/ccsrc/backend/kernel_compiler/gpu/arrays/gatherv2_gpu_kernel.cc +++ b/mindspore/ccsrc/backend/kernel_compiler/gpu/arrays/gatherv2_gpu_kernel.cc @@ -48,6 +48,19 @@ MS_REG_GPU_KERNEL_TWO( SparseGatherV2, KernelAttr().AddInputAttr(kNumberTypeFloat16).AddInputAttr(kNumberTypeInt32).AddOutputAttr(kNumberTypeFloat16), GatherV2GpuFwdKernel, half, int) - +MS_REG_GPU_KERNEL_TWO(SparseGatherV2, + KernelAttr() + .AddInputAttr(kNumberTypeFloat32) + .AddInputAttr(kNumberTypeInt32) + .AddInputAttr(kNumberTypeInt64) + .AddOutputAttr(kNumberTypeFloat32), + GatherV2GpuFwdKernel, float, int) +MS_REG_GPU_KERNEL_TWO(SparseGatherV2, + KernelAttr() + .AddInputAttr(kNumberTypeFloat16) + .AddInputAttr(kNumberTypeInt32) + .AddInputAttr(kNumberTypeInt64) + .AddOutputAttr(kNumberTypeFloat16), + GatherV2GpuFwdKernel, half, int) } // namespace kernel } // namespace mindspore diff --git a/mindspore/ops/operations/array_ops.py b/mindspore/ops/operations/array_ops.py index be08dc829d..1c57d31012 100644 --- a/mindspore/ops/operations/array_ops.py +++ b/mindspore/ops/operations/array_ops.py @@ -778,6 +778,9 @@ class SparseGatherV2(GatherV2): Outputs: Tensor, the shape of tensor is :math:`(z_1, z_2, ..., z_N)`. + Supported Platforms: + ``GPU`` + Examples: >>> input_params = Tensor(np.array([[1, 2, 7, 42], [3, 4, 54, 22], [2, 2, 55, 3]]), mindspore.float32) >>> input_indices = Tensor(np.array([1, 2]), mindspore.int32) diff --git a/tests/st/ops/gpu/test_sparse_gather_v2_op.py b/tests/st/ops/gpu/test_sparse_gather_v2_op.py index 2b505c4366..49c401b7ba 100644 --- a/tests/st/ops/gpu/test_sparse_gather_v2_op.py +++ b/tests/st/ops/gpu/test_sparse_gather_v2_op.py @@ -20,7 +20,7 @@ import mindspore.context as context import mindspore.nn as nn from mindspore import Tensor from mindspore.ops import operations as P - +from mindspore.ops.operations import _inner_ops as inner class SparseGatherNet(nn.Cell): def __init__(self): @@ -36,802 +36,643 @@ class SparseGatherNet(nn.Cell): @pytest.mark.env_onecard def test_gather0(): x = Tensor(np.arange(2 * 3 * 4 * 5, dtype=np.float32).reshape(2, 3, 4, 5)) - indices = Tensor(np.ones((2, 2, 4, 5), dtype='i4')) + indices = Tensor(np.ones((2, 2, 4, 5), dtype=np.int32)) expect = np.array([[[[[[[20., 21., 22., 23., 24.], [25., 26., 27., 28., 29.], [30., 31., 32., 33., 34.], [35., 36., 37., 38., 39.]], - [[20., 21., 22., 23., 24.], [25., 26., 27., 28., 29.], [30., 31., 32., 33., 34.], [35., 36., 37., 38., 39.]], - [[20., 21., 22., 23., 24.], [25., 26., 27., 28., 29.], [30., 31., 32., 33., 34.], [35., 36., 37., 38., 39.]], - [[20., 21., 22., 23., 24.], [25., 26., 27., 28., 29.], [30., 31., 32., 33., 34.], [35., 36., 37., 38., 39.]], - [[20., 21., 22., 23., 24.], [25., 26., 27., 28., 29.], [30., 31., 32., 33., 34.], [35., 36., 37., 38., 39.]]], - [[[20., 21., 22., 23., 24.], [25., 26., 27., 28., 29.], [30., 31., 32., 33., 34.], [35., 36., 37., 38., 39.]], - [[20., 21., 22., 23., 24.], [25., 26., 27., 28., 29.], [30., 31., 32., 33., 34.], [35., 36., 37., 38., 39.]], - [[20., 21., 22., 23., 24.], [25., 26., 27., 28., 29.], [30., 31., 32., 33., 34.], [35., 36., 37., 38., 39.]], - [[20., 21., 22., 23., 24.], [25., 26., 27., 28., 29.], [30., 31., 32., 33., 34.], [35., 36., 37., 38., 39.]], - [[20., 21., 22., 23., 24.], [25., 26., 27., 28., 29.], [30., 31., 32., 33., 34.], [35., 36., 37., 38., 39.]]], - [[[20., 21., 22., 23., 24.], [25., 26., 27., 28., 29.], [30., 31., 32., 33., 34.], [35., 36., 37., 38., 39.]], - [[20., 21., 22., 23., 24.], [25., 26., 27., 28., 29.], [30., 31., 32., 33., 34.], [35., 36., 37., 38., 39.]], - [[20., 21., 22., 23., 24.], [25., 26., 27., 28., 29.], [30., 31., 32., 33., 34.], [35., 36., 37., 38., 39.]], - [[20., 21., 22., 23., 24.], [25., 26., 27., 28., 29.], [30., 31., 32., 33., 34.], [35., 36., 37., 38., 39.]], - [[20., 21., 22., 23., 24.], [25., 26., 27., 28., 29.], [30., 31., 32., 33., 34.], [35., 36., 37., 38., 39.]]], - [[[20., 21., 22., 23., 24.], [25., 26., 27., 28., 29.], [30., 31., 32., 33., 34.], [35., 36., 37., 38., 39.]], - [[20., 21., 22., 23., 24.], [25., 26., 27., 28., 29.], [30., 31., 32., 33., 34.], [35., 36., 37., 38., 39.]], - [[20., 21., 22., 23., 24.], [25., 26., 27., 28., 29.], [30., 31., 32., 33., 34.], [35., 36., 37., 38., 39.]], - [[20., 21., 22., 23., 24.], [25., 26., 27., 28., 29.], [30., 31., 32., 33., 34.], [35., 36., 37., 38., 39.]], - [[20., 21., 22., 23., 24.], [25., 26., 27., 28., 29.], [30., 31., 32., 33., 34.], [35., 36., 37., 38., 39.]]]], - [[[[20., 21., 22., 23., 24.], [25., 26., 27., 28., 29.], [30., 31., 32., 33., 34.], [35., 36., 37., 38., 39.]], - [[20., 21., 22., 23., 24.], [25., 26., 27., 28., 29.], [30., 31., 32., 33., 34.], [35., 36., 37., 38., 39.]], - [[20., 21., 22., 23., 24.], [25., 26., 27., 28., 29.], [30., 31., 32., 33., 34.], [35., 36., 37., 38., 39.]], - [[20., 21., 22., 23., 24.], [25., 26., 27., 28., 29.], [30., 31., 32., 33., 34.], [35., 36., 37., 38., 39.]], - [[20., 21., 22., 23., 24.], [25., 26., 27., 28., 29.], [30., 31., 32., 33., 34.], [35., 36., 37., 38., 39.]]], - [[[20., 21., 22., 23., 24.], [25., 26., 27., 28., 29.], [30., 31., 32., 33., 34.], [35., 36., 37., 38., 39.]], - [[20., 21., 22., 23., 24.], [25., 26., 27., 28., 29.], [30., 31., 32., 33., 34.], [35., 36., 37., 38., 39.]], - [[20., 21., 22., 23., 24.], [25., 26., 27., 28., 29.], [30., 31., 32., 33., 34.], [35., 36., 37., 38., 39.]], - [[20., 21., 22., 23., 24.], [25., 26., 27., 28., 29.], [30., 31., 32., 33., 34.], [35., 36., 37., 38., 39.]], - [[20., 21., 22., 23., 24.], [25., 26., 27., 28., 29.], [30., 31., 32., 33., 34.], [35., 36., 37., 38., 39.]]], - [[[20., 21., 22., 23., 24.], [25., 26., 27., 28., 29.], [30., 31., 32., 33., 34.], [35., 36., 37., 38., 39.]], - [[20., 21., 22., 23., 24.], [25., 26., 27., 28., 29.], [30., 31., 32., 33., 34.], [35., 36., 37., 38., 39.]], - [[20., 21., 22., 23., 24.], [25., 26., 27., 28., 29.], [30., 31., 32., 33., 34.], [35., 36., 37., 38., 39.]], - [[20., 21., 22., 23., 24.], [25., 26., 27., 28., 29.], [30., 31., 32., 33., 34.], [35., 36., 37., 38., 39.]], - [[20., 21., 22., 23., 24.], [25., 26., 27., 28., 29.], [30., 31., 32., 33., 34.], [35., 36., 37., 38., 39.]]], - [[[20., 21., 22., 23., 24.], [25., 26., 27., 28., 29.], [30., 31., 32., 33., 34.], [35., 36., 37., 38., 39.]], - [[20., 21., 22., 23., 24.], [25., 26., 27., 28., 29.], [30., 31., 32., 33., 34.], [35., 36., 37., 38., 39.]], - [[20., 21., 22., 23., 24.], [25., 26., 27., 28., 29.], [30., 31., 32., 33., 34.], [35., 36., 37., 38., 39.]], - [[20., 21., 22., 23., 24.], [25., 26., 27., 28., 29.], [30., 31., 32., 33., 34.], [35., 36., 37., 38., 39.]], - [[20., 21., 22., 23., 24.], [25., 26., 27., 28., 29.], [30., 31., 32., 33., 34.], [35., 36., 37., 38., 39.]]]]], - [[[[[20., 21., 22., 23., 24.], [25., 26., 27., 28., 29.], [30., 31., 32., 33., 34.], [35., 36., 37., 38., 39.]], - [[20., 21., 22., 23., 24.], [25., 26., 27., 28., 29.], [30., 31., 32., 33., 34.], [35., 36., 37., 38., 39.]], - [[20., 21., 22., 23., 24.], [25., 26., 27., 28., 29.], [30., 31., 32., 33., 34.], [35., 36., 37., 38., 39.]], - [[20., 21., 22., 23., 24.], [25., 26., 27., 28., 29.], [30., 31., 32., 33., 34.], [35., 36., 37., 38., 39.]], - [[20., 21., 22., 23., 24.], [25., 26., 27., 28., 29.], [30., 31., 32., 33., 34.], [35., 36., 37., 38., 39.]]], - [[[20., 21., 22., 23., 24.], [25., 26., 27., 28., 29.], [30., 31., 32., 33., 34.], [35., 36., 37., 38., 39.]], - [[20., 21., 22., 23., 24.], [25., 26., 27., 28., 29.], [30., 31., 32., 33., 34.], [35., 36., 37., 38., 39.]], - [[20., 21., 22., 23., 24.], [25., 26., 27., 28., 29.], [30., 31., 32., 33., 34.], [35., 36., 37., 38., 39.]], - [[20., 21., 22., 23., 24.], [25., 26., 27., 28., 29.], [30., 31., 32., 33., 34.], [35., 36., 37., 38., 39.]], - [[20., 21., 22., 23., 24.], [25., 26., 27., 28., 29.], [30., 31., 32., 33., 34.], [35., 36., 37., 38., 39.]]], - [[[20., 21., 22., 23., 24.], [25., 26., 27., 28., 29.], [30., 31., 32., 33., 34.], [35., 36., 37., 38., 39.]], - [[20., 21., 22., 23., 24.], [25., 26., 27., 28., 29.], [30., 31., 32., 33., 34.], [35., 36., 37., 38., 39.]], - [[20., 21., 22., 23., 24.], [25., 26., 27., 28., 29.], [30., 31., 32., 33., 34.], [35., 36., 37., 38., 39.]], - [[20., 21., 22., 23., 24.], [25., 26., 27., 28., 29.], [30., 31., 32., 33., 34.], [35., 36., 37., 38., 39.]], - [[20., 21., 22., 23., 24.], [25., 26., 27., 28., 29.], [30., 31., 32., 33., 34.], [35., 36., 37., 38., 39.]]], - [[[20., 21., 22., 23., 24.], [25., 26., 27., 28., 29.], [30., 31., 32., 33., 34.], [35., 36., 37., 38., 39.]], - [[20., 21., 22., 23., 24.], [25., 26., 27., 28., 29.], [30., 31., 32., 33., 34.], [35., 36., 37., 38., 39.]], - [[20., 21., 22., 23., 24.], [25., 26., 27., 28., 29.], [30., 31., 32., 33., 34.], [35., 36., 37., 38., 39.]], - [[20., 21., 22., 23., 24.], [25., 26., 27., 28., 29.], [30., 31., 32., 33., 34.], [35., 36., 37., 38., 39.]], - [[20., 21., 22., 23., 24.], [25., 26., 27., 28., 29.], [30., 31., 32., 33., 34.], [35., 36., 37., 38., 39.]]]], - [[[[20., 21., 22., 23., 24.], [25., 26., 27., 28., 29.], [30., 31., 32., 33., 34.], [35., 36., 37., 38., 39.]], - [[20., 21., 22., 23., 24.], [25., 26., 27., 28., 29.], [30., 31., 32., 33., 34.], [35., 36., 37., 38., 39.]], - [[20., 21., 22., 23., 24.], [25., 26., 27., 28., 29.], [30., 31., 32., 33., 34.], [35., 36., 37., 38., 39.]], - [[20., 21., 22., 23., 24.], [25., 26., 27., 28., 29.], [30., 31., 32., 33., 34.], [35., 36., 37., 38., 39.]], - [[20., 21., 22., 23., 24.], [25., 26., 27., 28., 29.], [30., 31., 32., 33., 34.], [35., 36., 37., 38., 39.]]], - [[[20., 21., 22., 23., 24.], [25., 26., 27., 28., 29.], [30., 31., 32., 33., 34.], [35., 36., 37., 38., 39.]], - [[20., 21., 22., 23., 24.], [25., 26., 27., 28., 29.], [30., 31., 32., 33., 34.], [35., 36., 37., 38., 39.]], - [[20., 21., 22., 23., 24.], [25., 26., 27., 28., 29.], [30., 31., 32., 33., 34.], [35., 36., 37., 38., 39.]], - [[20., 21., 22., 23., 24.], [25., 26., 27., 28., 29.], [30., 31., 32., 33., 34.], [35., 36., 37., 38., 39.]], - [[20., 21., 22., 23., 24.], [25., 26., 27., 28., 29.], [30., 31., 32., 33., 34.], [35., 36., 37., 38., 39.]]], - [[[20., 21., 22., 23., 24.], [25., 26., 27., 28., 29.], [30., 31., 32., 33., 34.], [35., 36., 37., 38., 39.]], - [[20., 21., 22., 23., 24.], [25., 26., 27., 28., 29.], [30., 31., 32., 33., 34.], [35., 36., 37., 38., 39.]], - [[20., 21., 22., 23., 24.], [25., 26., 27., 28., 29.], [30., 31., 32., 33., 34.], [35., 36., 37., 38., 39.]], - [[20., 21., 22., 23., 24.], [25., 26., 27., 28., 29.], [30., 31., 32., 33., 34.], [35., 36., 37., 38., 39.]], - [[20., 21., 22., 23., 24.], [25., 26., 27., 28., 29.], [30., 31., 32., 33., 34.], [35., 36., 37., 38., 39.]]], - [[[20., 21., 22., 23., 24.], [25., 26., 27., 28., 29.], [30., 31., 32., 33., 34.], [35., 36., 37., 38., 39.]], - [[20., 21., 22., 23., 24.], [25., 26., 27., 28., 29.], [30., 31., 32., 33., 34.], [35., 36., 37., 38., 39.]], - [[20., 21., 22., 23., 24.], [25., 26., 27., 28., 29.], [30., 31., 32., 33., 34.], [35., 36., 37., 38., 39.]], - [[20., 21., 22., 23., 24.], [25., 26., 27., 28., 29.], [30., 31., 32., 33., 34.], [35., 36., 37., 38., 39.]], - [[20., 21., 22., 23., 24.], [25., 26., 27., 28., 29.], [30., 31., 32., 33., 34.], [35., 36., 37., 38., 39.]]]]]], - [[[[[[80., 81., 82., 83., 84.], [85., 86., 87., 88., 89.], [90., 91., 92., 93., 94.], [95., 96., 97., 98., 99.]], - [[80., 81., 82., 83., 84.], [85., 86., 87., 88., 89.], [90., 91., 92., 93., 94.], [95., 96., 97., 98., 99.]], - [[80., 81., 82., 83., 84.], [85., 86., 87., 88., 89.], [90., 91., 92., 93., 94.], [95., 96., 97., 98., 99.]], - [[80., 81., 82., 83., 84.], [85., 86., 87., 88., 89.], [90., 91., 92., 93., 94.], [95., 96., 97., 98., 99.]], - [[80., 81., 82., 83., 84.], [85., 86., 87., 88., 89.], [90., 91., 92., 93., 94.], [95., 96., 97., 98., 99.]]], - [[[80., 81., 82., 83., 84.], [85., 86., 87., 88., 89.], [90., 91., 92., 93., 94.], [95., 96., 97., 98., 99.]], - [[80., 81., 82., 83., 84.], [85., 86., 87., 88., 89.], [90., 91., 92., 93., 94.], [95., 96., 97., 98., 99.]], - [[80., 81., 82., 83., 84.], [85., 86., 87., 88., 89.], [90., 91., 92., 93., 94.], [95., 96., 97., 98., 99.]], - [[80., 81., 82., 83., 84.], [85., 86., 87., 88., 89.], [90., 91., 92., 93., 94.], [95., 96., 97., 98., 99.]], - [[80., 81., 82., 83., 84.], [85., 86., 87., 88., 89.], [90., 91., 92., 93., 94.], [95., 96., 97., 98., 99.]]], - [[[80., 81., 82., 83., 84.], [85., 86., 87., 88., 89.], [90., 91., 92., 93., 94.], [95., 96., 97., 98., 99.]], - [[80., 81., 82., 83., 84.], [85., 86., 87., 88., 89.], [90., 91., 92., 93., 94.], [95., 96., 97., 98., 99.]], - [[80., 81., 82., 83., 84.], [85., 86., 87., 88., 89.], [90., 91., 92., 93., 94.], [95., 96., 97., 98., 99.]], - [[80., 81., 82., 83., 84.], [85., 86., 87., 88., 89.], [90., 91., 92., 93., 94.], [95., 96., 97., 98., 99.]], - [[80., 81., 82., 83., 84.], [85., 86., 87., 88., 89.], [90., 91., 92., 93., 94.], [95., 96., 97., 98., 99.]]], - [[[80., 81., 82., 83., 84.], [85., 86., 87., 88., 89.], [90., 91., 92., 93., 94.], [95., 96., 97., 98., 99.]], - [[80., 81., 82., 83., 84.], [85., 86., 87., 88., 89.], [90., 91., 92., 93., 94.], [95., 96., 97., 98., 99.]], - [[80., 81., 82., 83., 84.], [85., 86., 87., 88., 89.], [90., 91., 92., 93., 94.], [95., 96., 97., 98., 99.]], - [[80., 81., 82., 83., 84.], [85., 86., 87., 88., 89.], [90., 91., 92., 93., 94.], [95., 96., 97., 98., 99.]], - [[80., 81., 82., 83., 84.], [85., 86., 87., 88., 89.], [90., 91., 92., 93., 94.], [95., 96., 97., 98., 99.]]]], - [[[[80., 81., 82., 83., 84.], [85., 86., 87., 88., 89.], [90., 91., 92., 93., 94.], [95., 96., 97., 98., 99.]], - [[80., 81., 82., 83., 84.], [85., 86., 87., 88., 89.], [90., 91., 92., 93., 94.], [95., 96., 97., 98., 99.]], - [[80., 81., 82., 83., 84.], [85., 86., 87., 88., 89.], [90., 91., 92., 93., 94.], [95., 96., 97., 98., 99.]], - [[80., 81., 82., 83., 84.], [85., 86., 87., 88., 89.], [90., 91., 92., 93., 94.], [95., 96., 97., 98., 99.]], - [[80., 81., 82., 83., 84.], [85., 86., 87., 88., 89.], [90., 91., 92., 93., 94.], [95., 96., 97., 98., 99.]]], - [[[80., 81., 82., 83., 84.], [85., 86., 87., 88., 89.], [90., 91., 92., 93., 94.], [95., 96., 97., 98., 99.]], - [[80., 81., 82., 83., 84.], [85., 86., 87., 88., 89.], [90., 91., 92., 93., 94.], [95., 96., 97., 98., 99.]], - [[80., 81., 82., 83., 84.], [85., 86., 87., 88., 89.], [90., 91., 92., 93., 94.], [95., 96., 97., 98., 99.]], - [[80., 81., 82., 83., 84.], [85., 86., 87., 88., 89.], [90., 91., 92., 93., 94.], [95., 96., 97., 98., 99.]], - [[80., 81., 82., 83., 84.], [85., 86., 87., 88., 89.], [90., 91., 92., 93., 94.], [95., 96., 97., 98., 99.]]], - [[[80., 81., 82., 83., 84.], [85., 86., 87., 88., 89.], [90., 91., 92., 93., 94.], [95., 96., 97., 98., 99.]], - [[80., 81., 82., 83., 84.], [85., 86., 87., 88., 89.], [90., 91., 92., 93., 94.], [95., 96., 97., 98., 99.]], - [[80., 81., 82., 83., 84.], [85., 86., 87., 88., 89.], [90., 91., 92., 93., 94.], [95., 96., 97., 98., 99.]], - [[80., 81., 82., 83., 84.], [85., 86., 87., 88., 89.], [90., 91., 92., 93., 94.], [95., 96., 97., 98., 99.]], - [[80., 81., 82., 83., 84.], [85., 86., 87., 88., 89.], [90., 91., 92., 93., 94.], [95., 96., 97., 98., 99.]]], - [[[80., 81., 82., 83., 84.], [85., 86., 87., 88., 89.], [90., 91., 92., 93., 94.], [95., 96., 97., 98., 99.]], - [[80., 81., 82., 83., 84.], [85., 86., 87., 88., 89.], [90., 91., 92., 93., 94.], [95., 96., 97., 98., 99.]], - [[80., 81., 82., 83., 84.], [85., 86., 87., 88., 89.], [90., 91., 92., 93., 94.], [95., 96., 97., 98., 99.]], - [[80., 81., 82., 83., 84.], [85., 86., 87., 88., 89.], [90., 91., 92., 93., 94.], [95., 96., 97., 98., 99.]], - [[80., 81., 82., 83., 84.], [85., 86., 87., 88., 89.], [90., 91., 92., 93., 94.], [95., 96., 97., 98., 99.]]]]], - [[[[[80., 81., 82., 83., 84.], [85., 86., 87., 88., 89.], [90., 91., 92., 93., 94.], [95., 96., 97., 98., 99.]], - [[80., 81., 82., 83., 84.], [85., 86., 87., 88., 89.], [90., 91., 92., 93., 94.], [95., 96., 97., 98., 99.]], - [[80., 81., 82., 83., 84.], [85., 86., 87., 88., 89.], [90., 91., 92., 93., 94.], [95., 96., 97., 98., 99.]], - [[80., 81., 82., 83., 84.], [85., 86., 87., 88., 89.], [90., 91., 92., 93., 94.], [95., 96., 97., 98., 99.]], - [[80., 81., 82., 83., 84.], [85., 86., 87., 88., 89.], [90., 91., 92., 93., 94.], [95., 96., 97., 98., 99.]]], - [[[80., 81., 82., 83., 84.], [85., 86., 87., 88., 89.], [90., 91., 92., 93., 94.], [95., 96., 97., 98., 99.]], - [[80., 81., 82., 83., 84.], [85., 86., 87., 88., 89.], [90., 91., 92., 93., 94.], [95., 96., 97., 98., 99.]], - [[80., 81., 82., 83., 84.], [85., 86., 87., 88., 89.], [90., 91., 92., 93., 94.], [95., 96., 97., 98., 99.]], - [[80., 81., 82., 83., 84.], [85., 86., 87., 88., 89.], [90., 91., 92., 93., 94.], [95., 96., 97., 98., 99.]], - [[80., 81., 82., 83., 84.], [85., 86., 87., 88., 89.], [90., 91., 92., 93., 94.], [95., 96., 97., 98., 99.]]], - [[[80., 81., 82., 83., 84.], [85., 86., 87., 88., 89.], [90., 91., 92., 93., 94.], [95., 96., 97., 98., 99.]], - [[80., 81., 82., 83., 84.], [85., 86., 87., 88., 89.], [90., 91., 92., 93., 94.], [95., 96., 97., 98., 99.]], - [[80., 81., 82., 83., 84.], [85., 86., 87., 88., 89.], [90., 91., 92., 93., 94.], [95., 96., 97., 98., 99.]], - [[80., 81., 82., 83., 84.], [85., 86., 87., 88., 89.], [90., 91., 92., 93., 94.], [95., 96., 97., 98., 99.]], - [[80., 81., 82., 83., 84.], [85., 86., 87., 88., 89.], [90., 91., 92., 93., 94.], [95., 96., 97., 98., 99.]]], - [[[80., 81., 82., 83., 84.], [85., 86., 87., 88., 89.], [90., 91., 92., 93., 94.], [95., 96., 97., 98., 99.]], - [[80., 81., 82., 83., 84.], [85., 86., 87., 88., 89.], [90., 91., 92., 93., 94.], [95., 96., 97., 98., 99.]], - [[80., 81., 82., 83., 84.], [85., 86., 87., 88., 89.], [90., 91., 92., 93., 94.], [95., 96., 97., 98., 99.]], - [[80., 81., 82., 83., 84.], [85., 86., 87., 88., 89.], [90., 91., 92., 93., 94.], [95., 96., 97., 98., 99.]], - [[80., 81., 82., 83., 84.], [85., 86., 87., 88., 89.], [90., 91., 92., 93., 94.], [95., 96., 97., 98., 99.]]]], - [[[[80., 81., 82., 83., 84.], [85., 86., 87., 88., 89.], [90., 91., 92., 93., 94.], [95., 96., 97., 98., 99.]], - [[80., 81., 82., 83., 84.], [85., 86., 87., 88., 89.], [90., 91., 92., 93., 94.], [95., 96., 97., 98., 99.]], - [[80., 81., 82., 83., 84.], [85., 86., 87., 88., 89.], [90., 91., 92., 93., 94.], [95., 96., 97., 98., 99.]], - [[80., 81., 82., 83., 84.], [85., 86., 87., 88., 89.], [90., 91., 92., 93., 94.], [95., 96., 97., 98., 99.]], - [[80., 81., 82., 83., 84.], [85., 86., 87., 88., 89.], [90., 91., 92., 93., 94.], [95., 96., 97., 98., 99.]]], - [[[80., 81., 82., 83., 84.], [85., 86., 87., 88., 89.], [90., 91., 92., 93., 94.], [95., 96., 97., 98., 99.]], - [[80., 81., 82., 83., 84.], [85., 86., 87., 88., 89.], [90., 91., 92., 93., 94.], [95., 96., 97., 98., 99.]], - [[80., 81., 82., 83., 84.], [85., 86., 87., 88., 89.], [90., 91., 92., 93., 94.], [95., 96., 97., 98., 99.]], - [[80., 81., 82., 83., 84.], [85., 86., 87., 88., 89.], [90., 91., 92., 93., 94.], [95., 96., 97., 98., 99.]], - [[80., 81., 82., 83., 84.], [85., 86., 87., 88., 89.], [90., 91., 92., 93., 94.], [95., 96., 97., 98., 99.]]], - [[[80., 81., 82., 83., 84.], [85., 86., 87., 88., 89.], [90., 91., 92., 93., 94.], [95., 96., 97., 98., 99.]], - [[80., 81., 82., 83., 84.], [85., 86., 87., 88., 89.], [90., 91., 92., 93., 94.], [95., 96., 97., 98., 99.]], - [[80., 81., 82., 83., 84.], [85., 86., 87., 88., 89.], [90., 91., 92., 93., 94.], [95., 96., 97., 98., 99.]], - [[80., 81., 82., 83., 84.], [85., 86., 87., 88., 89.], [90., 91., 92., 93., 94.], [95., 96., 97., 98., 99.]], - [[80., 81., 82., 83., 84.], [85., 86., 87., 88., 89.], [90., 91., 92., 93., 94.], [95., 96., 97., 98., 99.]]], - [[[80., 81., 82., 83., 84.], [85., 86., 87., 88., 89.], [90., 91., 92., 93., 94.], [95., 96., 97., 98., 99.]], - [[80., 81., 82., 83., 84.], [85., 86., 87., 88., 89.], [90., 91., 92., 93., 94.], [95., 96., 97., 98., 99.]], - [[80., 81., 82., 83., 84.], [85., 86., 87., 88., 89.], [90., 91., 92., 93., 94.], [95., 96., 97., 98., 99.]], - [[80., 81., 82., 83., 84.], [85., 86., 87., 88., 89.], [90., 91., 92., 93., 94.], [95., 96., 97., 98., 99.]], - [[80., 81., 82., 83., 84.], [85., 86., 87., 88., 89.], [90., 91., 92., 93., 94.], @@ -860,32 +701,27 @@ class SparseGatherNet1(nn.Cell): @pytest.mark.env_onecard def test_gather1(): x = Tensor(np.arange(2 * 3 * 4 * 5, dtype=np.float32).reshape(2, 3, 4, 5)) - indices = Tensor(np.array([1, 3, 4], dtype='i4')) + indices = Tensor(np.array([1, 3, 4], dtype=np.int32)) expect = np.array([[[[1., 3., 4.], [6., 8., 9.], [11., 13., 14.], [16., 18., 19.]], - [[21., 23., 24.], [26., 28., 29.], [31., 33., 34.], [36., 38., 39.]], - [[41., 43., 44.], [46., 48., 49.], [51., 53., 54.], [56., 58., 59.]]], - [[[61., 63., 64.], [66., 68., 69.], [71., 73., 74.], [76., 78., 79.]], - [[81., 83., 84.], [86., 88., 89.], [91., 93., 94.], [96., 98., 99.]], - [[101., 103., 104.], [106., 108., 109.], [111., 113., 114.], @@ -924,7 +760,6 @@ def test_gather2(): [3., 7., 2., 7., 4.,], [4., 2., 8., 2., 9.,]] ).astype(np.float32)) - indices = Tensor(np.array([[4000, 1, 300000]]).astype(np.int32)) expect = np.array([[[0., 0., 0., 0., 0.], [4., 9., 5., 6., 4.], @@ -937,3 +772,117 @@ def test_gather2(): diff = output.asnumpy() - expect assert np.all(diff < error) assert np.all(-diff < error) + + +class SparseGatherDynamicNet(nn.Cell): + def __init__(self): + super(SparseGatherDynamicNet, self).__init__() + self.gather = P.SparseGatherV2() + self.test_dynamic = inner.GpuConvertToDynamicShape() + + def construct(self, x, indices): + out = self.test_dynamic(x) + return self.gather(out, indices, 0) + + +@pytest.mark.level0 +@pytest.mark.platform_x86_gpu_training +@pytest.mark.env_onecard +def test_gather_d(): + context.set_context(mode=context.GRAPH_MODE, device_target="GPU") + x = Tensor(np.array([[4., 5., 4., 1., 5.,], + [4., 9., 5., 6., 4.,], + [9., 8., 4., 3., 6.,], + [0., 4., 2., 2., 8.,], + [1., 8., 6., 2., 8.,], + [8., 1., 9., 7., 3.,], + [7., 9., 2., 5., 7.,], + [9., 8., 6., 8., 5.,], + [3., 7., 2., 7., 4.,], + [4., 2., 8., 2., 9.,]] + ).astype(np.float32)) + indices = Tensor(np.array([[4000, 1, 300000]]).astype(np.int32)) + expect = np.array([[[0., 0., 0., 0., 0.], + [4., 9., 5., 6., 4.], + [0., 0., 0., 0., 0.]]]) + + context.set_context(mode=context.GRAPH_MODE, device_target="GPU") + gather = SparseGatherDynamicNet() + output = gather(x, indices) + error = np.ones(shape=output.asnumpy().shape) * 1.0e-6 + diff = output.asnumpy() - expect + assert np.all(diff < error) + assert np.all(-diff < error) + + +class SparseGatherDynamicNet2(nn.Cell): + def __init__(self): + super(SparseGatherDynamicNet2, self).__init__() + self.gather = P.SparseGatherV2() + self.test_dynamic = inner.GpuConvertToDynamicShape() + + def construct(self, x_1, x_2, indices_1, indices_2): + out_1 = self.test_dynamic(x_1) + out_1 = self.gather(out_1, indices_1, 0) + out_2 = self.test_dynamic(x_2) + out_2 = self.gather(out_2, indices_2, -1) + return (out_1, out_2) + + +@pytest.mark.level0 +@pytest.mark.platform_x86_gpu_training +@pytest.mark.env_onecard +def test_gather_d_two_inputs(): + x_1 = Tensor(np.array([[4., 5., 4., 1., 5.,], + [4., 9., 5., 6., 4.,], + [9., 8., 4., 3., 6.,], + [0., 4., 2., 2., 8.,], + [1., 8., 6., 2., 8.,], + [8., 1., 9., 7., 3.,], + [7., 9., 2., 5., 7.,], + [9., 8., 6., 8., 5.,], + [3., 7., 2., 7., 4.,], + [4., 2., 8., 2., 9.,]] + ).astype(np.float32)) + indices_1 = Tensor(np.array([[4000, 1, 300000]]).astype(np.int32)) + expect_1 = np.array([[[0., 0., 0., 0., 0.], + [4., 9., 5., 6., 4.], + [0., 0., 0., 0., 0.]]]) + x_2 = Tensor(np.arange(2 * 3 * 4 * 5, dtype=np.float32).reshape(2, 3, 4, 5)) + indices_2 = Tensor(np.array([1, 3, 4], dtype=np.int32)) + expect_2 = np.array([[[[1., 3., 4.], + [6., 8., 9.], + [11., 13., 14.], + [16., 18., 19.]], + [[21., 23., 24.], + [26., 28., 29.], + [31., 33., 34.], + [36., 38., 39.]], + [[41., 43., 44.], + [46., 48., 49.], + [51., 53., 54.], + [56., 58., 59.]]], + [[[61., 63., 64.], + [66., 68., 69.], + [71., 73., 74.], + [76., 78., 79.]], + [[81., 83., 84.], + [86., 88., 89.], + [91., 93., 94.], + [96., 98., 99.]], + [[101., 103., 104.], + [106., 108., 109.], + [111., 113., 114.], + [116., 118., 119.]]]]) + + context.set_context(mode=context.GRAPH_MODE, device_target="GPU") + gather = SparseGatherDynamicNet2() + output_1, output_2 = gather(x_1, x_2, indices_1, indices_2) + error_1 = np.ones(shape=output_1.asnumpy().shape) * 1.0e-6 + error_2 = np.ones(shape=output_2.asnumpy().shape) * 1.0e-6 + diff_1 = output_1.asnumpy() - expect_1 + diff_2 = output_2.asnumpy() - expect_2 + assert np.all(diff_1 < error_1) + assert np.all(-diff_1 < error_1) + assert np.all(diff_2 < error_2) + assert np.all(-diff_2 < error_2)