Browse Source

adding dynamic shape testcase to all reduce

tags/v1.2.0-rc1
TFBunny 5 years ago
parent
commit
f260e11c0f
1 changed files with 46 additions and 5 deletions
  1. +46
    -5
      tests/st/nccl/test_nccl_all_reduce_op.py

+ 46
- 5
tests/st/nccl/test_nccl_all_reduce_op.py View File

@@ -1,4 +1,4 @@
# Copyright 2019 Huawei Technologies Co., Ltd
# Copyright 2019-2021 Huawei Technologies Co., Ltd
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@@ -21,6 +21,7 @@ from mindspore.common.initializer import initializer
from mindspore.common.parameter import Parameter
from mindspore.communication.management import init, NCCL_WORLD_COMM_GROUP, get_rank, get_group_size
from mindspore.ops import operations as P
from mindspore.ops.operations import _inner_ops as inner

context.set_context(mode=context.GRAPH_MODE, device_target='GPU')

@@ -28,7 +29,7 @@ init()
rank = get_rank()
size = get_group_size()
x = np.ones([3, 1, 3, 3]).astype(np.float32) * 0.01 * (rank + 1)
y = np.ones([3, 4, 6, 3]).astype(np.float32) * 0.01 * (rank + 1)

class Net(nn.Cell):
def __init__(self):
@@ -92,9 +93,9 @@ class Net2(nn.Cell):

def construct(self):
x_ = self.all_reduce1(self.x1)
y = self.all_reduce2(x_)
z = self.all_reduce3(y)
return (x_, y, z)
y_ = self.all_reduce2(x_)
z_ = self.all_reduce3(y_)
return (x_, y_, z_)


def test_AllReduce2():
@@ -121,3 +122,43 @@ def test_AllReduce2():
error2 = np.ones(shape=expect2.shape) * 1.0e-5
assert np.all(diff2 < error2)
assert output[2].shape == expect2.shape


class DynamicAllReduceNet(nn.Cell):
def __init__(self):
super(DynamicAllReduceNet, self).__init__()
self.op = "sum"
self.all_reduce = P.AllReduce(self.op, group=NCCL_WORLD_COMM_GROUP)
self.d = inner.GpuConvertToDynamicShape()

def construct(self, input_x):
out = self.d(input_x)
out = self.all_reduce(out)
return out


def test_all_reduce_dynamic():
context.set_context(mode=context.GRAPH_MODE, device_target='GPU')
input1 = Tensor(x)
input2 = Tensor(y)
net = DynamicAllReduceNet()

output1 = net(input1)
expect1 = np.ones([3, 1, 3, 3]).astype(np.float32) * 0
for i in range(size):
part = np.ones([3, 1, 3, 3]).astype(np.float32) * 0.01 * (i + 1)
expect1 += part
diff1 = abs(output1.asnumpy() - expect1)
error1 = np.ones(shape=expect1.shape) * 1.0e-5
assert np.all(diff1 < error1)
assert output1.shape == expect1.shape

output2 = net(input2)
expect2 = np.ones([3, 4, 6, 3]).astype(np.float32) * 0
for i in range(size):
part = np.ones([3, 4, 6, 3]).astype(np.float32) * 0.01 * (i + 1)
expect2 += part
diff2 = abs(output2.asnumpy() - expect2)
error2 = np.ones(shape=expect2.shape) * 1.0e-5
assert np.all(diff2 < error2)
assert output2.shape == expect2.shape

Loading…
Cancel
Save