From ee9d25bff9d77ca7a8ff1a7f5cb0cc1a2662f5ee Mon Sep 17 00:00:00 2001 From: liangyongxiong Date: Sat, 21 Aug 2021 16:17:00 +0800 Subject: [PATCH] add Ascend and CPU ST for enabling RDR --- tests/st/networks/models/lenet.py | 50 +++++++++++++++++++ .../networks/test_ascend_lenet_enable_rdr.py | 28 +++++++++++ .../st/networks/test_cpu_lenet_enable_rdr.py | 28 +++++++++++ tests/st/networks/test_network_main.py | 4 +- 4 files changed, 108 insertions(+), 2 deletions(-) create mode 100644 tests/st/networks/models/lenet.py create mode 100644 tests/st/networks/test_ascend_lenet_enable_rdr.py create mode 100644 tests/st/networks/test_cpu_lenet_enable_rdr.py diff --git a/tests/st/networks/models/lenet.py b/tests/st/networks/models/lenet.py new file mode 100644 index 00000000000..9f78a948867 --- /dev/null +++ b/tests/st/networks/models/lenet.py @@ -0,0 +1,50 @@ +# Copyright 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. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================ +import numpy as np + +import mindspore.nn as nn +from mindspore import Tensor +from mindspore.ops import operations as P + +class LeNet(nn.Cell): + def __init__(self): + super(LeNet, self).__init__() + self.relu = P.ReLU() + self.batch_size = 1 + weight1 = Tensor(np.ones([6, 3, 5, 5]).astype(np.float32) * 0.01) + weight2 = Tensor(np.ones([16, 6, 5, 5]).astype(np.float32) * 0.01) + self.conv1 = nn.Conv2d(3, 6, (5, 5), weight_init=weight1, stride=1, padding=0, pad_mode='valid') + self.conv2 = nn.Conv2d(6, 16, (5, 5), weight_init=weight2, pad_mode='valid', stride=1, padding=0) + self.pool = nn.MaxPool2d(kernel_size=2, stride=2, pad_mode="valid") + + self.reshape = P.Reshape() + self.reshape1 = P.Reshape() + + self.fc1 = nn.Dense(400, 120) + self.fc2 = nn.Dense(120, 84) + self.fc3 = nn.Dense(84, 10) + + def construct(self, input_x): + output = self.conv1(input_x) + output = self.relu(output) + output = self.pool(output) + output = self.conv2(output) + output = self.relu(output) + output = self.pool(output) + output = self.reshape(output, (self.batch_size, -1)) + output = self.fc1(output) + output = self.fc2(output) + output = self.fc3(output) + return output diff --git a/tests/st/networks/test_ascend_lenet_enable_rdr.py b/tests/st/networks/test_ascend_lenet_enable_rdr.py new file mode 100644 index 00000000000..370a8831f64 --- /dev/null +++ b/tests/st/networks/test_ascend_lenet_enable_rdr.py @@ -0,0 +1,28 @@ +import os +import tempfile +import json +import pytest + +import mindspore.context as context +from .test_network_main import test_lenet + +# create config file for RDR +def create_config_file(path): + data_dict = {'rdr': {'enable': True, 'path': path}} + filename = os.path.join(path, "mindspore_config.json") + with open(filename, "w") as f: + json.dump(data_dict, f) + return filename + +def test_train(device_type): + context.set_context(mode=context.GRAPH_MODE, device_target=device_type) + with tempfile.TemporaryDirectory() as tmpdir: + config_file = create_config_file(tmpdir) + context.set_context(env_config_path=config_file) + test_lenet() + +@pytest.mark.level0 +@pytest.mark.platform_arm_ascend_training +@pytest.mark.env_onecard +def test_train_with_Ascend(): + test_train("Ascend") diff --git a/tests/st/networks/test_cpu_lenet_enable_rdr.py b/tests/st/networks/test_cpu_lenet_enable_rdr.py new file mode 100644 index 00000000000..5c358f188ad --- /dev/null +++ b/tests/st/networks/test_cpu_lenet_enable_rdr.py @@ -0,0 +1,28 @@ +import os +import tempfile +import json +import pytest + +import mindspore.context as context +from .test_network_main import test_lenet + +# create config file for RDR +def create_config_file(path): + data_dict = {'rdr': {'enable': True, 'path': path}} + filename = os.path.join(path, "mindspore_config.json") + with open(filename, "w") as f: + json.dump(data_dict, f) + return filename + +def test_train(device_type): + context.set_context(mode=context.GRAPH_MODE, device_target=device_type) + with tempfile.TemporaryDirectory() as tmpdir: + config_file = create_config_file(tmpdir) + context.set_context(env_config_path=config_file) + test_lenet() + +@pytest.mark.level0 +@pytest.mark.platform_x86_cpu_training +@pytest.mark.env_onecard +def test_train_with_CPU(): + test_train("CPU") diff --git a/tests/st/networks/test_network_main.py b/tests/st/networks/test_network_main.py index 1a8fed1fc11..bca9ece156c 100644 --- a/tests/st/networks/test_network_main.py +++ b/tests/st/networks/test_network_main.py @@ -56,9 +56,9 @@ def test_resnet50(): def test_lenet(): - data = Tensor(np.ones([32, 1, 32, 32]).astype(np.float32) * 0.01) - label = Tensor(np.ones([32]).astype(np.int32)) net = LeNet() + data = Tensor(np.ones([net.batch_size, 3, 32, 32]).astype(np.float32) * 0.01) + label = Tensor(np.ones([net.batch_size]).astype(np.int32)) train(net, data, label)