From f800e1fc5ecc5bd5a8d9237f71dd97882975f820 Mon Sep 17 00:00:00 2001 From: Wang Huan Date: Sat, 10 Oct 2020 11:32:43 +0000 Subject: [PATCH 1/3] add load_op_xpu for Baidu Kunlun, test=kunlun --- paddle/fluid/operators/load_op_xpu.cc | 28 +++++++++ .../fluid/tests/unittests/test_load_op_xpu.py | 60 +++++++++++++++++++ 2 files changed, 88 insertions(+) create mode 100644 paddle/fluid/operators/load_op_xpu.cc create mode 100644 python/paddle/fluid/tests/unittests/test_load_op_xpu.py diff --git a/paddle/fluid/operators/load_op_xpu.cc b/paddle/fluid/operators/load_op_xpu.cc new file mode 100644 index 0000000000000..e56586552e498 --- /dev/null +++ b/paddle/fluid/operators/load_op_xpu.cc @@ -0,0 +1,28 @@ +/* Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. + +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. */ + +#ifdef PADDLE_WITH_XPU + +#include "paddle/fluid/operators/load_op.h" + +namespace ops = paddle::operators; + +REGISTER_OP_XPU_KERNEL( + load, ops::LoadOpKernel, + ops::LoadOpKernel, + ops::LoadOpKernel, + ops::LoadOpKernel, + ops::LoadOpKernel); + +#endif // PADDLE_WITH_XPU diff --git a/python/paddle/fluid/tests/unittests/test_load_op_xpu.py b/python/paddle/fluid/tests/unittests/test_load_op_xpu.py new file mode 100644 index 0000000000000..6763e4ba4829a --- /dev/null +++ b/python/paddle/fluid/tests/unittests/test_load_op_xpu.py @@ -0,0 +1,60 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# 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. + +from __future__ import print_function + +import unittest +import numpy as np +from op_test import OpTest, randomize_probability +import paddle.fluid as fluid +import paddle.fluid.layers as layers + + +class TestLoadOpXpu(unittest.TestCase): + """ Test load operator. + """ + + def setUp(self): + self.ones = np.ones((4, 4)).astype('float32') + main_prog = fluid.Program() + start_prog = fluid.Program() + with fluid.program_guard(main_prog, start_prog): + input = fluid.data('input', shape=[-1, 4], dtype='float32') + output = layers.fc( + input, + 4, + param_attr=fluid.ParamAttr( + name='w', + initializer=fluid.initializer.NumpyArrayInitializer( + self.ones))) + exe = fluid.Executor(fluid.XPUPlace(0)) + exe.run(start_prog) + fluid.io.save_persistables( + exe, dirname="/tmp/model", main_program=main_prog) + + def test_load_xpu(self): + main_prog = fluid.Program() + start_prog = fluid.Program() + with fluid.program_guard(main_prog, start_prog): + var = layers.create_tensor(dtype='float32') + layers.load(var, file_path='/tmp/model/w') + + exe = fluid.Executor(fluid.XPUPlace(0)) + exe.run(start_prog) + ret = exe.run(main_prog, fetch_list=[var.name]) + self.assertTrue(np.array_equal(self.ones, ret[0])) + + +if __name__ == "__main__": + unittest.main() From f33960d4ead489a36326cebee0f16b8a03457a35 Mon Sep 17 00:00:00 2001 From: Wang Huan Date: Mon, 12 Oct 2020 01:03:31 +0000 Subject: [PATCH 2/3] add is_compiled_with_xpu for unit test, test=kunlun --- python/paddle/fluid/tests/unittests/test_load_op_xpu.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/python/paddle/fluid/tests/unittests/test_load_op_xpu.py b/python/paddle/fluid/tests/unittests/test_load_op_xpu.py index 6763e4ba4829a..6891cd2b71a17 100644 --- a/python/paddle/fluid/tests/unittests/test_load_op_xpu.py +++ b/python/paddle/fluid/tests/unittests/test_load_op_xpu.py @@ -21,6 +21,8 @@ import paddle.fluid.layers as layers +@unittest.skipIf(not paddle.is_compiled_with_xpu(), + "core is not compiled with XPU") class TestLoadOpXpu(unittest.TestCase): """ Test load operator. """ From 805746a94984d56485a0083996bc0fd501646ed3 Mon Sep 17 00:00:00 2001 From: Wang Huan Date: Mon, 12 Oct 2020 03:20:23 +0000 Subject: [PATCH 3/3] add is_compiled_with_xpu for unit test, test=kunlun --- python/paddle/fluid/tests/unittests/test_load_op_xpu.py | 1 + 1 file changed, 1 insertion(+) diff --git a/python/paddle/fluid/tests/unittests/test_load_op_xpu.py b/python/paddle/fluid/tests/unittests/test_load_op_xpu.py index 6891cd2b71a17..1d7f986507ca9 100644 --- a/python/paddle/fluid/tests/unittests/test_load_op_xpu.py +++ b/python/paddle/fluid/tests/unittests/test_load_op_xpu.py @@ -19,6 +19,7 @@ from op_test import OpTest, randomize_probability import paddle.fluid as fluid import paddle.fluid.layers as layers +import paddle @unittest.skipIf(not paddle.is_compiled_with_xpu(),