From e7b4fbe9eca4e0b4b043ce41ca014abf58e47377 Mon Sep 17 00:00:00 2001 From: Wang Huan Date: Thu, 6 Jun 2024 09:32:42 +0000 Subject: [PATCH 1/2] pir fix ir/pir --- test/deprecated/ir/pir/test_pass_manager.py | 65 -- .../ir/pir/test_special_op_translator.py | 555 ----------------- test/ir/pir/CMakeLists.txt | 1 + test/{deprecated => }/ir/pir/test_build_op.py | 27 +- .../ir/pir/test_ir_backward.py | 90 ++- .../{deprecated => }/ir/pir/test_ir_pybind.py | 92 +-- test/{deprecated => }/ir/pir/test_ir_vjp.py | 118 ++-- test/ir/pir/test_pass_manager.py | 66 ++ test/ir/pir/test_special_op_translator.py | 586 ++++++++++++++++++ .../ir/pir/test_standalone_pir.py | 56 +- .../ir/pir/translator/CMakeLists.txt | 0 .../translator/test_all_reduce_translator.py | 2 + .../pir/translator/test_barrier_translator.py | 2 + .../test_c_allreduce_min_translator.py | 2 + .../test_c_allreduce_prod_translator.py | 2 + .../test_c_reduce_max_translator.py | 2 + .../test_c_reduce_min_translator.py | 2 + .../test_c_reduce_prod_translator.py | 2 + .../translator/test_c_scatter_translator.py | 2 + .../pir/translator/test_c_split_translator.py | 2 + .../test_dgc_momentum_translator.py | 2 + .../ir/pir/translator/test_dgc_translator.py | 2 + .../translator/test_distributed_fused_lamb.py | 2 + .../test_distributed_fused_lamb_init.py | 2 + ...test_distributed_lookup_table_translate.py | 2 + ...test_distributed_push_sparse_translator.py | 2 + .../test_global_gather_translator.py | 2 + .../test_global_scatter_translator.py | 2 + .../test_limit_by_capacity_translator.py | 2 + .../ir/pir/translator/test_nop_translator.py | 2 + .../ir/pir/translator/test_op_translator.py | 2 + .../test_partial_allgather_translator.py | 2 + .../test_partial_recv_translator.py | 2 + .../test_partial_send_translator.py | 2 + .../test_prune_gate_by_capacity_translator.py | 2 + .../test_pull_box_sparse_translator.py | 2 + .../test_pull_gpups_sparse_translator.py | 2 + .../test_pull_sparse_v2_translator.py | 2 + .../translator/test_push_dense_translator.py | 2 + .../test_random_routing_translator.py | 2 + .../test_send_and_recv_translator.py | 2 + 41 files changed, 908 insertions(+), 808 deletions(-) delete mode 100644 test/deprecated/ir/pir/test_pass_manager.py delete mode 100644 test/deprecated/ir/pir/test_special_op_translator.py rename test/{deprecated => }/ir/pir/test_build_op.py (88%) rename test/{deprecated => }/ir/pir/test_ir_backward.py (85%) rename test/{deprecated => }/ir/pir/test_ir_pybind.py (80%) rename test/{deprecated => }/ir/pir/test_ir_vjp.py (62%) create mode 100644 test/ir/pir/test_pass_manager.py create mode 100644 test/ir/pir/test_special_op_translator.py rename test/{deprecated => }/ir/pir/test_standalone_pir.py (91%) rename test/{deprecated => }/ir/pir/translator/CMakeLists.txt (100%) rename test/{deprecated => }/ir/pir/translator/test_all_reduce_translator.py (97%) rename test/{deprecated => }/ir/pir/translator/test_barrier_translator.py (97%) rename test/{deprecated => }/ir/pir/translator/test_c_allreduce_min_translator.py (97%) rename test/{deprecated => }/ir/pir/translator/test_c_allreduce_prod_translator.py (97%) rename test/{deprecated => }/ir/pir/translator/test_c_reduce_max_translator.py (97%) rename test/{deprecated => }/ir/pir/translator/test_c_reduce_min_translator.py (97%) rename test/{deprecated => }/ir/pir/translator/test_c_reduce_prod_translator.py (97%) rename test/{deprecated => }/ir/pir/translator/test_c_scatter_translator.py (97%) rename test/{deprecated => }/ir/pir/translator/test_c_split_translator.py (97%) rename test/{deprecated => }/ir/pir/translator/test_dgc_momentum_translator.py (98%) rename test/{deprecated => }/ir/pir/translator/test_dgc_translator.py (98%) rename test/{deprecated => }/ir/pir/translator/test_distributed_fused_lamb.py (99%) rename test/{deprecated => }/ir/pir/translator/test_distributed_fused_lamb_init.py (99%) rename test/{deprecated => }/ir/pir/translator/test_distributed_lookup_table_translate.py (97%) rename test/{deprecated => }/ir/pir/translator/test_distributed_push_sparse_translator.py (97%) rename test/{deprecated => }/ir/pir/translator/test_global_gather_translator.py (97%) rename test/{deprecated => }/ir/pir/translator/test_global_scatter_translator.py (97%) rename test/{deprecated => }/ir/pir/translator/test_limit_by_capacity_translator.py (97%) rename test/{deprecated => }/ir/pir/translator/test_nop_translator.py (96%) rename test/{deprecated => }/ir/pir/translator/test_op_translator.py (98%) rename test/{deprecated => }/ir/pir/translator/test_partial_allgather_translator.py (97%) rename test/{deprecated => }/ir/pir/translator/test_partial_recv_translator.py (97%) rename test/{deprecated => }/ir/pir/translator/test_partial_send_translator.py (96%) rename test/{deprecated => }/ir/pir/translator/test_prune_gate_by_capacity_translator.py (97%) rename test/{deprecated => }/ir/pir/translator/test_pull_gpups_sparse_translator.py (97%) rename test/{deprecated => }/ir/pir/translator/test_pull_sparse_v2_translator.py (97%) rename test/{deprecated => }/ir/pir/translator/test_push_dense_translator.py (97%) rename test/{deprecated => }/ir/pir/translator/test_random_routing_translator.py (97%) rename test/{deprecated => }/ir/pir/translator/test_send_and_recv_translator.py (97%) diff --git a/test/deprecated/ir/pir/test_pass_manager.py b/test/deprecated/ir/pir/test_pass_manager.py deleted file mode 100644 index 852b3595ba492..0000000000000 --- a/test/deprecated/ir/pir/test_pass_manager.py +++ /dev/null @@ -1,65 +0,0 @@ -# Copyright (c) 2023 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. - -import unittest - -import paddle -from paddle import pir -from paddle.base import core -from paddle.framework import LayerHelper - -paddle.enable_static() - - -class TestShadowOutputSlice(unittest.TestCase): - def test_op(self): - place = core.Place() - place.set_place(paddle.CPUPlace()) - new_scope = paddle.static.Scope() - main_program = paddle.static.Program() - with paddle.static.scope_guard(new_scope): - with paddle.static.program_guard(main_program): - x = paddle.ones([3, 9, 5], dtype='float32') - y = paddle.static.data( - name="y", shape=[3, 9, 5], dtype="float32" - ) - z = x * y # will be eliminated - - _, out, _ = paddle.split(x, num_or_sections=3, axis=1) - helper = LayerHelper('shadow_output') - helper.append_op( - type="shadow_output", - inputs={"x": [out.name]}, - outputs={"out": [y.name]}, - attrs={"name": out.name}, - ) - - new_program = pir.translate_to_pir(main_program.desc) - op_names = [op.name() for op in new_program.global_block().ops] - self.assertTrue('pd_op.multiply' in op_names) - pm = pir.PassManager() - pm.add_pass( - 'dead_code_elimination_pass', {} - ) # apply pass to eliminate dead code - pm.run(new_program) - op_names = [op.name() for op in new_program.global_block().ops] - self.assertEqual(pm.passes(), ['dead_code_elimination_pass']) - self.assertFalse(pm.empty()) - self.assertTrue( - 'pd_op.multiply' not in op_names - ) # multiply is eliminated because its output is not used - - -if __name__ == "__main__": - unittest.main() diff --git a/test/deprecated/ir/pir/test_special_op_translator.py b/test/deprecated/ir/pir/test_special_op_translator.py deleted file mode 100644 index 687f0248535ed..0000000000000 --- a/test/deprecated/ir/pir/test_special_op_translator.py +++ /dev/null @@ -1,555 +0,0 @@ -# Copyright (c) 2023 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. - -import unittest - -import numpy as np - -import paddle -from paddle import pir -from paddle.base import core -from paddle.framework import LayerHelper - -paddle.enable_static() - - -class TestCastOpTranscriber(unittest.TestCase): - def test_op(self): - place = core.Place() - place.set_place(paddle.CPUPlace()) - new_scope = paddle.static.Scope() - main_program = paddle.static.Program() - with paddle.static.scope_guard(new_scope): - with paddle.static.program_guard(main_program): - x = paddle.to_tensor([2, 3, 4], 'float64') - y = paddle.cast(x, 'uint8') - - _, mappings = pir.translate_to_pir_with_param_map(main_program.desc) - assert len(str(mappings)) > 0, "no mapping found" - - -class TestCondWithInplace(unittest.TestCase): - def test_op(self): - def cond_with_inplace(): - x = paddle.ones(shape=[2, 1, 2, 3], dtype="float32") - y = paddle.ones(shape=[2, 1, 2, 3], dtype="float32") - running_mean = paddle.to_tensor([0], dtype="float32") - running_variance = paddle.to_tensor([1], dtype="float32") - weight = paddle.to_tensor([2], dtype="float32") - bias = paddle.to_tensor([1], dtype="float32") - if x > y: - y = paddle.nn.functional.batch_norm( - x, running_mean, running_variance, weight, bias - ) - else: - y = paddle.nn.functional.batch_norm( - x, running_mean, running_variance, weight, bias - ) - - legacy_program = paddle.jit.to_static( - cond_with_inplace, - input_spec=[], - full_graph=True, - ) - - l = pir.translate_to_pir(legacy_program.main_program.desc) - assert l is not None - - def test_nested_op(self): - def cond_with_inplace(): - x = paddle.ones(shape=[2, 1, 2, 3], dtype="float32") - y = paddle.ones(shape=[2, 1, 2, 3], dtype="float32") - z = paddle.ones(shape=[2, 1, 2, 3], dtype="float32") - running_mean = paddle.to_tensor([0], dtype="float32") - running_variance = paddle.to_tensor([1], dtype="float32") - weight = paddle.to_tensor([2], dtype="float32") - bias = paddle.to_tensor([1], dtype="float32") - if x > y: - if y > z: - z = paddle.nn.functional.batch_norm( - z, running_mean, running_variance, weight, bias - ) - else: - y = paddle.nn.functional.batch_norm( - x, running_mean, running_variance, weight, bias - ) - else: - if y > z: - z = paddle.nn.functional.batch_norm( - z, running_mean, running_variance, weight, bias - ) - else: - y = paddle.nn.functional.batch_norm( - x, running_mean, running_variance, weight, bias - ) - - legacy_program = paddle.jit.to_static( - cond_with_inplace, - input_spec=[], - full_graph=True, - ) - - l = pir.translate_to_pir(legacy_program.main_program.desc) - assert l is not None - - -class TestElementwiseOpTranscriber(unittest.TestCase): - def test_elementwise_without_y_grad(self): - place = core.Place() - place.set_place(paddle.CPUPlace()) - exe = paddle.static.Executor(place) - - new_scope = paddle.static.Scope() - main_program = paddle.static.Program() - with paddle.static.scope_guard(new_scope): - with paddle.static.program_guard(main_program): - x_data = np.random.rand(100, 2, 3) - y_data = np.random.rand(100) - x = paddle.to_tensor(x_data, dtype='float32') - x.stop_gradient = False - y = paddle.to_tensor(y_data, dtype='float32') - - out1 = paddle.tensor.math._elementwise_op( - LayerHelper('elementwise_add', x=x, y=y, axis=0) - ) - out1.stop_gradient = False - mean = paddle.mean(out1) - paddle.static.append_backward(mean) - - out = exe.run(main_program, {}, fetch_list=[out1]) - np.testing.assert_allclose( - out[0], - x_data + y_data.reshape(100, 1, 1), - rtol=1e-6, - atol=1e-6, - ) - - def test_elementwise_with_y_grad(self): - place = core.Place() - place.set_place(paddle.CPUPlace()) - exe = paddle.static.Executor(place) - - new_scope = paddle.static.Scope() - main_program = paddle.static.Program() - with paddle.static.scope_guard(new_scope): - with paddle.static.program_guard(main_program): - x_data = np.random.rand(100, 2, 3) - y_data = np.random.rand(100) - x = paddle.to_tensor(x_data, dtype='float32') - x.stop_gradient = False - y = paddle.to_tensor(y_data, dtype='float32') - y.stop_gradient = False - - out1 = paddle.tensor.math._elementwise_op( - LayerHelper('elementwise_add', x=x, y=y, axis=0) - ) - out1.stop_gradient = False - mean = paddle.mean(out1) - paddle.static.append_backward(mean) - - out = exe.run(main_program, {}, fetch_list=[out1]) - np.testing.assert_allclose( - out[0], - x_data + y_data.reshape(100, 1, 1), - rtol=1e-6, - atol=1e-6, - ) - - def test_add_inplace(self): - place = core.Place() - place.set_place(paddle.CPUPlace()) - exe = paddle.static.Executor(place) - - new_scope = paddle.static.Scope() - main_program = paddle.static.Program() - with paddle.static.scope_guard(new_scope): - with paddle.static.program_guard(main_program): - x = paddle.ones(shape=(100, 2, 3), dtype='float32') - y = paddle.ones(shape=(100, 2, 3), dtype='float32') - - helper = LayerHelper('elementwise_add') - helper.append_op( - type="elementwise_add", - inputs={"X": x, "Y": y}, - outputs={"Out": y}, - attrs={"axis": -1}, - ) - _ = pir.translate_to_pir(main_program.desc) - - -class TestEmbeddingOpTranscriber(unittest.TestCase): - def test_op(self): - place = core.Place() - place.set_place(paddle.CPUPlace()) - new_scope = paddle.static.Scope() - main_program = paddle.static.Program() - with paddle.static.scope_guard(new_scope): - with paddle.static.program_guard(main_program): - x = paddle.static.data(name="x", shape=[2, 4], dtype=np.int64) - embedding = paddle.nn.Embedding( - 10, 3, weight_attr=paddle.nn.initializer.Constant(value=1.0) - ) - output = embedding(x) - - _ = pir.translate_to_pir(main_program.desc) - - -class TestIncrementOpTranscriber(unittest.TestCase): - def test_op(self): - place = core.Place() - place.set_place(paddle.CPUPlace()) - new_scope = paddle.static.Scope() - main_program = paddle.static.Program() - with paddle.static.scope_guard(new_scope): - with paddle.static.program_guard(main_program): - data = paddle.zeros(shape=[1], dtype='float32') - counter = paddle.increment(data) - - _ = pir.translate_to_pir(main_program.desc) - - -class TestAssignValueOpTranscriber(unittest.TestCase): - def test_op(self): - place = core.Place() - place.set_place(paddle.CPUPlace()) - new_scope = paddle.static.Scope() - main_program = paddle.static.Program() - with paddle.static.scope_guard(new_scope): - with paddle.static.program_guard(main_program): - x = paddle.to_tensor( - [[0.1, 0.2], [0.3, 0.4]], - place=paddle.CPUPlace(), - stop_gradient=False, - ) - - _ = pir.translate_to_pir(main_program.desc) - - -class TestRnnOpTranscriber(unittest.TestCase): - def test_op(self): - place = core.Place() - place.set_place(paddle.CPUPlace()) - new_scope = paddle.static.Scope() - main_program = paddle.static.Program() - with paddle.static.scope_guard(new_scope): - with paddle.static.program_guard(main_program): - x = paddle.randn((4, 16)) - prev_h = paddle.randn((4, 32)) - - cell = paddle.nn.SimpleRNNCell(16, 32) - y, h = cell(x, prev_h) - - _ = pir.translate_to_pir(main_program.desc) - - -class TestEmptyVarTranslate(unittest.TestCase): - def test_op(self): - place = core.Place() - place.set_place(paddle.CPUPlace()) - new_scope = paddle.static.Scope() - main_program = paddle.static.Program() - with paddle.static.scope_guard(new_scope): - with paddle.static.program_guard(main_program): - x1 = paddle.rand(shape=[3, 3], dtype="float32") - x1.stop_gradient = False - weight = paddle.full( - shape=[3, 3], fill_value="0.5", dtype="float32" - ) - y = paddle.nn.functional.linear(x1, weight) - y.stop_gradient = True - out1 = paddle.concat(x=[x1, y], axis=1) - out2 = paddle.mean(out1) - sgd_optimizer = paddle.optimizer.SGD(learning_rate=0.1) - sgd_optimizer.minimize(out2) - _ = pir.translate_to_pir(main_program.desc) - - -class TestOneHotOpTranscriber(unittest.TestCase): - def test_mutable_attribute(self): - place = core.Place() - place.set_place(paddle.CPUPlace()) - new_scope = paddle.static.Scope() - main_program = paddle.static.Program() - with paddle.static.scope_guard(new_scope): - with paddle.static.program_guard(main_program): - depth = paddle.assign(np.array([10], dtype=np.int32)) - label = paddle.static.data( - name="label", shape=[-1, 1], dtype="int64" - ) - one_hot_label = paddle.nn.functional.one_hot( - x=label, num_classes=depth - ) - - _ = pir.translate_to_pir(main_program.desc) - - def test_normal_attribute(self): - place = core.Place() - place.set_place(paddle.CPUPlace()) - new_scope = paddle.static.Scope() - main_program = paddle.static.Program() - with paddle.static.scope_guard(new_scope): - with paddle.static.program_guard(main_program): - depth = 10 - label = paddle.static.data( - name="label", shape=[-1, 1], dtype="int64" - ) - one_hot_label = paddle.nn.functional.one_hot( - x=label, num_classes=depth - ) - - _ = pir.translate_to_pir(main_program.desc) - - -class TestReduceOpTranscriber(unittest.TestCase): - def test_reduce_all(self): - place = core.Place() - place.set_place(paddle.CPUPlace()) - exe = paddle.static.Executor(place) - - new_scope = paddle.static.Scope() - main_program = paddle.static.Program() - with paddle.static.scope_guard(new_scope): - with paddle.static.program_guard(main_program): - arr = np.ones([2, 2], dtype="float32") - x = paddle.to_tensor(arr, dtype='int32') - out1 = paddle.all(x) - - out = exe.run(main_program, {}, fetch_list=[out1]) - np.testing.assert_array_equal(out[0], np.all(arr)) - - def test_with_axis(self): - place = core.Place() - place.set_place(paddle.CPUPlace()) - exe = paddle.static.Executor(place) - - new_scope = paddle.static.Scope() - main_program = paddle.static.Program() - with paddle.static.scope_guard(new_scope): - with paddle.static.program_guard(main_program): - arr = np.ones([2, 2], dtype="float32") - x = paddle.to_tensor(arr, dtype='int32') - out1 = paddle.all(x, axis=0) - - out = exe.run(main_program, {}, fetch_list=[out1]) - np.testing.assert_array_equal(out[0], np.all(arr, axis=0)) - - -class TestIndexPutOpTranscriber(unittest.TestCase): - def test_op(self): - place = core.Place() - place.set_place(paddle.CPUPlace()) - new_scope = paddle.static.Scope() - main_program = paddle.static.Program() - with paddle.static.scope_guard(new_scope): - with paddle.static.program_guard(main_program): - x = paddle.randn([2, 3]) - indices = [paddle.randint(0, 2, [2]), paddle.randint(0, 1, [2])] - value = paddle.randn([2]) - y = paddle.index_put(x, indices, value, False) - - _ = pir.translate_to_pir(main_program.desc) - - -class TestGradAddOpTranscriber(unittest.TestCase): - def test_op(self): - place = core.Place() - place.set_place(paddle.CPUPlace()) - new_scope = paddle.static.Scope() - main_program = paddle.static.Program() - with paddle.static.scope_guard(new_scope): - with paddle.static.program_guard(main_program): - x_data = np.random.rand(100, 2, 3) - y_data = np.random.rand(100, 1, 1) - x = paddle.to_tensor(x_data, dtype='float32') - x.stop_gradient = False - y = paddle.to_tensor(y_data, dtype='float32') - - helper = LayerHelper('grad_add') - out = helper.create_variable_for_type_inference("float") - helper.append_op( - type="grad_add", - inputs={"X": x, "Y": y}, - outputs={"Out": out}, - attrs={"axis": -1}, - ) - - _ = pir.translate_to_pir(main_program.desc) - - -class TestShadowOutputSlice(unittest.TestCase): - def test_op(self): - place = core.Place() - place.set_place(paddle.CPUPlace()) - new_scope = paddle.static.Scope() - main_program = paddle.static.Program() - with paddle.static.scope_guard(new_scope): - with paddle.static.program_guard(main_program): - x = paddle.rand([3, 9, 5]) - y = paddle.static.data( - name="y", shape=[3, 9, 5], dtype="float32" - ) - - _, out, _ = paddle.split(x, num_or_sections=3, axis=1) - helper = LayerHelper('shadow_output') - helper.append_op( - type="shadow_output", - inputs={"x": [out.name]}, - outputs={"out": [y.name]}, - attrs={"name": out.name}, - ) - - l = pir.translate_to_pir(main_program.desc) - - -class TestSetValueOp(unittest.TestCase): - def test_no_mutable_attribute(self): - place = core.Place() - place.set_place(paddle.CPUPlace()) - exe = paddle.static.Executor(place) - - new_scope = paddle.static.Scope() - main_program = paddle.static.Program() - with paddle.static.scope_guard(new_scope): - with paddle.static.program_guard(main_program): - x = paddle.ones(shape=[2, 3, 4], dtype="float32") - x = paddle.static.setitem(x, (0, 0), 6) - ret = exe.run(main_program, fetch_list=[x]) - - x_data = np.ones([2, 3, 4]).astype("float32") - x_data[0, 0] = 6 - np.testing.assert_array_equal(ret[0], x_data) - - def test_with_mutable_attribute(self): - place = core.Place() - place.set_place(paddle.CPUPlace()) - exe = paddle.static.Executor(place) - - new_scope = paddle.static.Scope() - main_program = paddle.static.Program() - with paddle.static.scope_guard(new_scope): - with paddle.static.program_guard(main_program): - x = paddle.ones(shape=[2, 3, 4], dtype="float32") - zero = paddle.full([], 0, dtype="int32") - x = paddle.static.setitem(x, zero, 6) - ret = exe.run(main_program, fetch_list=[x]) - - x_data = np.ones([2, 3, 4]).astype("float32") - x_data[0] = 6 - np.testing.assert_array_equal(ret[0], x_data) - - def test_grad(self): - place = core.Place() - place.set_place(paddle.CPUPlace()) - exe = paddle.static.Executor(place) - new_scope = paddle.static.Scope() - main_program = paddle.static.Program() - input_shape = [7, 6, 5, 4, 3, 2] - with paddle.static.scope_guard(new_scope): - with paddle.static.program_guard(main_program): - x = paddle.ones(shape=input_shape, dtype="float32") - value = paddle.tensor.fill_constant([1, 3, 2], "float32", 1) - # test stop_gradient - value.stop_gradient = False - x.stop_gradient = False - attrs = { - 'axes': [0], - 'starts': [6], - 'ends': [0], - 'steps': [-4], - 'decrease_axes': [], - 'none_axes': [], - 'dtype': paddle.float32, - } - inputs = {'Input': x, 'ValueTensor': value} - - helper = LayerHelper("set_value") - y = helper.create_variable_for_type_inference(dtype=x.dtype) - - helper.append_op( - type="set_value", - inputs=inputs, - outputs={'Out': y}, - attrs=attrs, - ) - y2 = y + 1 - loss = paddle.sum(y2) - opt = paddle.optimizer.Adam() - opt.minimize(loss) - - x_data = np.arange( - 0, np.prod(input_shape), dtype="float32" - ).reshape(input_shape) - fetch_list = [x.grad_name, value.grad_name] - ret = exe.run(main_program, fetch_list=fetch_list) - self.assertTrue((ret[0][6:0:-4] == 0).all()) - - -class TestShareBufferOpTranscriber(unittest.TestCase): - def test_program(self): - place = core.Place() - place.set_place(paddle.CPUPlace()) - - new_scope = paddle.static.Scope() - main_program = paddle.static.Program() - with paddle.static.scope_guard(new_scope): - with paddle.static.program_guard(main_program): - x = paddle.ones(shape=(100, 2, 3), dtype='float32') - y = paddle.ones(shape=(100, 2, 3), dtype='float32') - - helper = LayerHelper('share_buffer') - helper.append_op( - type="share_buffer", - inputs={"X": x}, - outputs={"Out": y, "XOut": x}, - ) - l = pir.translate_to_pir(main_program.desc) - assert ( - l.global_block().ops[2].name() == "pd_op.share_data_" - ), "share_buffer should be translated to share_data_" - - -class TestDataOp(unittest.TestCase): - def test_data_op(self): - place = core.Place() - place.set_place(paddle.CPUPlace()) - - new_scope = paddle.static.Scope() - main_program = paddle.static.Program() - with paddle.static.scope_guard(new_scope): - with paddle.static.program_guard(main_program): - _ = paddle.static.data(name="y", shape=[3, 9, 5], dtype="int64") - l = pir.translate_to_pir(main_program.desc) - self.assertTrue(len(l.global_block().ops) > 0) - self.assertTrue(l.global_block().ops[0].name() == "pd_op.data") - data_op = l.global_block().ops[0] - self.assertIn("dtype", data_op.attrs()) - self.assertEqual(str(data_op.attrs()["dtype"]), "paddle.int64") - - -class TestCheckUnregisteredOp(unittest.TestCase): - def test_program(self): - main_program = paddle.static.Program() - with paddle.static.program_guard(main_program): - x = paddle.randn((4, 16)) - prev_h = paddle.randn((4, 32)) - - cell = paddle.nn.SimpleRNNCell(16, 32) - y, h = cell(x, prev_h) - - ops = pir.check_unregistered_ops(main_program.desc) - assert len(ops) == 0 - - -if __name__ == "__main__": - unittest.main() diff --git a/test/ir/pir/CMakeLists.txt b/test/ir/pir/CMakeLists.txt index e80898846c557..29df19c523d88 100644 --- a/test/ir/pir/CMakeLists.txt +++ b/test/ir/pir/CMakeLists.txt @@ -42,3 +42,4 @@ py_test_modules( FLAGS_pir_subgraph_saving_dir=${CMAKE_CURRENT_SOURCE_DIR}) add_subdirectory(fused_pass) +add_subdirectory(translator) diff --git a/test/deprecated/ir/pir/test_build_op.py b/test/ir/pir/test_build_op.py similarity index 88% rename from test/deprecated/ir/pir/test_build_op.py rename to test/ir/pir/test_build_op.py index cd0ae03b33958..ac92d124a0dc5 100644 --- a/test/deprecated/ir/pir/test_build_op.py +++ b/test/ir/pir/test_build_op.py @@ -22,19 +22,20 @@ def get_ir_program(): paddle.enable_static() - x = paddle.randn([4, 4]) - main_program, start_program = ( - paddle.static.Program(), - paddle.static.Program(), - ) - with paddle.static.program_guard(main_program, start_program): - x_s = paddle.static.data('x', [4, 4], x.dtype) - x_s.stop_gradient = False - y_s = paddle.matmul(x_s, x_s) - y_s = paddle.add(x_s, y_s) - y_s = paddle.tanh(y_s) - pir_program = pir.translate_to_pir(main_program.desc) - return pir_program + with paddle.pir_utils.OldIrGuard(): + x = paddle.randn([4, 4]) + main_program, start_program = ( + paddle.static.Program(), + paddle.static.Program(), + ) + with paddle.static.program_guard(main_program, start_program): + x_s = paddle.static.data('x', [4, 4], x.dtype) + x_s.stop_gradient = False + y_s = paddle.matmul(x_s, x_s) + y_s = paddle.add(x_s, y_s) + y_s = paddle.tanh(y_s) + pir_program = pir.translate_to_pir(main_program.desc) + return pir_program class TestBuildOp(unittest.TestCase): diff --git a/test/deprecated/ir/pir/test_ir_backward.py b/test/ir/pir/test_ir_backward.py similarity index 85% rename from test/deprecated/ir/pir/test_ir_backward.py rename to test/ir/pir/test_ir_backward.py index 3f8a77eed354f..c1818aa493a37 100644 --- a/test/deprecated/ir/pir/test_ir_backward.py +++ b/test/ir/pir/test_ir_backward.py @@ -26,23 +26,21 @@ def get_ir_program_0(): paddle.enable_static() - x = paddle.randn([4, 4]) - main_program, start_program = ( - paddle.static.Program(), - paddle.static.Program(), - ) - with paddle.static.program_guard(main_program, start_program): - x_s = paddle.static.data('x', [4, 4], x.dtype) - x_s.stop_gradient = False - k_s = paddle.tanh(x_s) - pir_program = pir.translate_to_pir(main_program.desc) - return pir_program + with paddle.pir_utils.OldIrGuard(): + x = paddle.randn([4, 4]) + main_program, start_program = ( + paddle.static.Program(), + paddle.static.Program(), + ) + with paddle.static.program_guard(main_program, start_program): + x_s = paddle.static.data('x', [4, 4], x.dtype) + x_s.stop_gradient = False + k_s = paddle.tanh(x_s) + pir_program = pir.translate_to_pir(main_program.desc) + return pir_program class TesBackward_1(unittest.TestCase): - def tearDown(self) -> None: - paddle.framework.set_flags({"FLAGS_enable_pir_api": False}) - def test_grad(self): pir_program = get_ir_program_0() input = pir_program.global_block().ops[-1].operand(0).source() @@ -138,26 +136,24 @@ def test_split(self): def get_ir_program_1(): paddle.enable_static() - x = paddle.randn([2, 2]) - main_program, start_program = ( - paddle.static.Program(), - paddle.static.Program(), - ) - with paddle.static.program_guard(main_program, start_program): - x_s = paddle.static.data('x', [4, 4], x.dtype) - x_s.stop_gradient = False - - k_s = paddle.tanh(x_s) - z_x = paddle.tanh(x_s) - out = paddle.add(z_x, k_s) - pir_program = pir.translate_to_pir(main_program.desc) - return pir_program + with paddle.pir_utils.OldIrGuard(): + x = paddle.randn([2, 2]) + main_program, start_program = ( + paddle.static.Program(), + paddle.static.Program(), + ) + with paddle.static.program_guard(main_program, start_program): + x_s = paddle.static.data('x', [4, 4], x.dtype) + x_s.stop_gradient = False + + k_s = paddle.tanh(x_s) + z_x = paddle.tanh(x_s) + out = paddle.add(z_x, k_s) + pir_program = pir.translate_to_pir(main_program.desc) + return pir_program class TesBackward_2(unittest.TestCase): - def tearDown(self) -> None: - paddle.framework.set_flags({"FLAGS_enable_pir_api": False}) - def test_add_n(self): pir_program = get_ir_program_1() input_x = pir_program.global_block().ops[-3].operand(0).source() @@ -216,23 +212,21 @@ def test_concat(self): def get_ir_program_2(): paddle.enable_static() - x = paddle.randn([2, 2]) - main_program, start_program = ( - paddle.static.Program(), - paddle.static.Program(), - ) - with paddle.static.program_guard(main_program, start_program): - x_s = paddle.static.data('x', [4, 4], x.dtype) - x_s.stop_gradient = False - k_s = paddle.sum(x_s, axis=(-1,), keepdim=False) - pir_program = pir.translate_to_pir(main_program.desc) - return pir_program + with paddle.pir_utils.OldIrGuard(): + x = paddle.randn([2, 2]) + main_program, start_program = ( + paddle.static.Program(), + paddle.static.Program(), + ) + with paddle.static.program_guard(main_program, start_program): + x_s = paddle.static.data('x', [4, 4], x.dtype) + x_s.stop_gradient = False + k_s = paddle.sum(x_s, axis=(-1,), keepdim=False) + pir_program = pir.translate_to_pir(main_program.desc) + return pir_program class TestBackward_3(unittest.TestCase): - def tearDown(self) -> None: - paddle.framework.set_flags({"FLAGS_enable_pir_api": False}) - def test_basic_network(self): pir_program = get_ir_program_2() x = pir_program.global_block().ops[-1].operand(0).source() @@ -250,9 +244,6 @@ def test_basic_network(self): class TestBackward_4(unittest.TestCase): - def tearDown(self) -> None: - paddle.framework.set_flags({"FLAGS_enable_pir_api": False}) - def test_basic_network(self): if not paddle.framework.in_pir_mode(): return @@ -293,9 +284,6 @@ def false_func(): class TestBackward_5(unittest.TestCase): - def tearDown(self) -> None: - paddle.framework.set_flags({"FLAGS_enable_pir_api": False}) - def test_skip_vjp(self): if not paddle.framework.in_pir_mode(): return diff --git a/test/deprecated/ir/pir/test_ir_pybind.py b/test/ir/pir/test_ir_pybind.py similarity index 80% rename from test/deprecated/ir/pir/test_ir_pybind.py rename to test/ir/pir/test_ir_pybind.py index afe8b57385379..62f9066c58c37 100644 --- a/test/deprecated/ir/pir/test_ir_pybind.py +++ b/test/ir/pir/test_ir_pybind.py @@ -22,21 +22,22 @@ def get_ir_program(): - x = paddle.randn([4, 4]) - main_program, start_program = ( - paddle.static.Program(), - paddle.static.Program(), - ) - with paddle.static.program_guard(main_program, start_program): - x_s = paddle.static.data('x', [4, 4], x.dtype) - x_s.stop_gradient = False - y_s = paddle.matmul(x_s, x_s) - z_s = paddle.add(y_s, y_s) - k_s = paddle.tanh(z_s) - q_s = paddle.unsqueeze(k_s, [2]) - - pir_program = pir.translate_to_pir(main_program.desc) - return pir_program + with paddle.pir_utils.OldIrGuard(): + x = paddle.randn([4, 4]) + main_program, start_program = ( + paddle.static.Program(), + paddle.static.Program(), + ) + with paddle.static.program_guard(main_program, start_program): + x_s = paddle.static.data('x', [4, 4], x.dtype) + x_s.stop_gradient = False + y_s = paddle.matmul(x_s, x_s) + z_s = paddle.add(y_s, y_s) + k_s = paddle.tanh(z_s) + q_s = paddle.unsqueeze(k_s, [2]) + + pir_program = pir.translate_to_pir(main_program.desc) + return pir_program class TestPybind(unittest.TestCase): @@ -165,38 +166,43 @@ def test_type(self): self.assertEqual(add_op.result(0).is_selected_row_type(), True) def test_attr(self): - main_program, start_program = ( - paddle.static.Program(), - paddle.static.Program(), - ) - with paddle.static.program_guard(main_program, start_program): - conv_data = paddle.static.data( - 'conv_data', [None, 3, 32, 32], dtype='float32' + with paddle.pir_utils.OldIrGuard(): + main_program, start_program = ( + paddle.static.Program(), + paddle.static.Program(), ) - conv2d_out = paddle.static.nn.conv2d( - input=conv_data, - num_filters=2, - filter_size=3, - stride=3, - act="relu", + with paddle.static.program_guard(main_program, start_program): + conv_data = paddle.static.data( + 'conv_data', [None, 3, 32, 32], dtype='float32' + ) + conv2d_out = paddle.static.nn.conv2d( + input=conv_data, + num_filters=2, + filter_size=3, + stride=3, + act="relu", + ) + full_out = paddle.tensor.fill_constant( + shape=[4, 4], dtype="float32", value=2 + ) + + pir_program = pir.translate_to_pir(main_program.desc) + conv_attr = pir_program.global_block().ops[3].attrs() + full_attr = pir_program.global_block().ops[8].attrs() + self.assertEqual(conv_attr["stop_gradient"], [False]) + self.assertEqual(conv_attr["dilations"], [1, 1]) + self.assertEqual(conv_attr["data_format"], "NCHW") + self.assertEqual(conv_attr["strides"], [3, 3]) + self.assertEqual(conv_attr["paddings"], [0, 0]) + self.assertEqual(conv_attr["padding_algorithm"], "EXPLICIT") + self.assertEqual(conv_attr["groups"], 1) + self.assertEqual( + full_attr["dtype"], paddle.base.core.DataType.FLOAT32 ) - full_out = paddle.tensor.fill_constant( - shape=[4, 4], dtype="float32", value=2 + self.assertTrue( + isinstance(full_attr["place"], paddle.base.core.Place) ) - pir_program = pir.translate_to_pir(main_program.desc) - conv_attr = pir_program.global_block().ops[3].attrs() - full_attr = pir_program.global_block().ops[8].attrs() - self.assertEqual(conv_attr["stop_gradient"], [False]) - self.assertEqual(conv_attr["dilations"], [1, 1]) - self.assertEqual(conv_attr["data_format"], "NCHW") - self.assertEqual(conv_attr["strides"], [3, 3]) - self.assertEqual(conv_attr["paddings"], [0, 0]) - self.assertEqual(conv_attr["padding_algorithm"], "EXPLICIT") - self.assertEqual(conv_attr["groups"], 1) - self.assertEqual(full_attr["dtype"], paddle.base.core.DataType.FLOAT32) - self.assertTrue(isinstance(full_attr["place"], paddle.base.core.Place)) - def test_operands(self): pir_program = get_ir_program() matmul_op = pir_program.global_block().ops[1] diff --git a/test/deprecated/ir/pir/test_ir_vjp.py b/test/ir/pir/test_ir_vjp.py similarity index 62% rename from test/deprecated/ir/pir/test_ir_vjp.py rename to test/ir/pir/test_ir_vjp.py index 8401761ba3a05..53268e7026422 100644 --- a/test/deprecated/ir/pir/test_ir_vjp.py +++ b/test/ir/pir/test_ir_vjp.py @@ -22,17 +22,20 @@ def get_ir_program(): - main_program, start_program = ( - paddle.static.Program(), - paddle.static.Program(), - ) - with paddle.static.program_guard(main_program, start_program): - x = paddle.static.data('x', [4, 4], 'float32') - x.stop_gradient = False - paddle.tanh(x) - paddle.tensor.fill_constant(shape=[4, 4], dtype='float32', value=2.0) - pir_program = pir.translate_to_pir(main_program.desc) - return pir_program + with paddle.pir_utils.OldIrGuard(): + main_program, start_program = ( + paddle.static.Program(), + paddle.static.Program(), + ) + with paddle.static.program_guard(main_program, start_program): + x = paddle.static.data('x', [4, 4], 'float32') + x.stop_gradient = False + paddle.tanh(x) + paddle.tensor.fill_constant( + shape=[4, 4], dtype='float32', value=2.0 + ) + pir_program = pir.translate_to_pir(main_program.desc) + return pir_program class TestTanhVjp(unittest.TestCase): @@ -92,20 +95,23 @@ def test_tanh_vjp2(self): class TestMeanVjp(unittest.TestCase): def test_mean_vjp1(self): - main_program, start_program = ( - paddle.static.Program(), - paddle.static.Program(), - ) - with paddle.static.program_guard(main_program, start_program): - x = paddle.static.data('x', [4, 4], 'float32') - x.stop_gradient = False - paddle.mean(x, axis=[0, 1]) - paddle.tensor.fill_constant(shape=[1], dtype='float32', value=2.0) - pir_program = pir.translate_to_pir(main_program.desc) - fill_constant_op = pir_program.global_block().ops[-1] - mean_op = pir_program.global_block().ops[-2] - out_grads = [[fill_constant_op.result(0)]] - stop_gradients = [[False]] + with paddle.pir_utils.OldIrGuard(): + main_program, start_program = ( + paddle.static.Program(), + paddle.static.Program(), + ) + with paddle.static.program_guard(main_program, start_program): + x = paddle.static.data('x', [4, 4], 'float32') + x.stop_gradient = False + paddle.mean(x, axis=[0, 1]) + paddle.tensor.fill_constant( + shape=[1], dtype='float32', value=2.0 + ) + pir_program = pir.translate_to_pir(main_program.desc) + fill_constant_op = pir_program.global_block().ops[-1] + mean_op = pir_program.global_block().ops[-2] + out_grads = [[fill_constant_op.result(0)]] + stop_gradients = [[False]] with paddle.pir.core.program_guard(pir_program): grad_outs = call_vjp( mean_op, @@ -138,20 +144,23 @@ def test_mean_vjp1(self): self.assertEqual(len(pir_program.global_block().ops), 4) def test_mean_vjp2(self): - main_program, start_program = ( - paddle.static.Program(), - paddle.static.Program(), - ) - with paddle.static.program_guard(main_program, start_program): - x = paddle.static.data('x', [4, 4], 'float32') - x.stop_gradient = False - paddle.mean(x, axis=[0, 1]) - paddle.tensor.fill_constant(shape=[1], dtype='float32', value=2.0) - pir_program = pir.translate_to_pir(main_program.desc) - fill_constant_op = pir_program.global_block().ops[-1] - mean_op = pir_program.global_block().ops[-2] - out_grads = [[fill_constant_op.result(0)]] - stop_gradients = [[True]] + with paddle.pir_utils.OldIrGuard(): + main_program, start_program = ( + paddle.static.Program(), + paddle.static.Program(), + ) + with paddle.static.program_guard(main_program, start_program): + x = paddle.static.data('x', [4, 4], 'float32') + x.stop_gradient = False + paddle.mean(x, axis=[0, 1]) + paddle.tensor.fill_constant( + shape=[1], dtype='float32', value=2.0 + ) + pir_program = pir.translate_to_pir(main_program.desc) + fill_constant_op = pir_program.global_block().ops[-1] + mean_op = pir_program.global_block().ops[-2] + out_grads = [[fill_constant_op.result(0)]] + stop_gradients = [[True]] with paddle.pir.core.program_guard(pir_program): grad_outs = call_vjp( mean_op, @@ -165,20 +174,23 @@ def test_mean_vjp2(self): class TesthasVjp(unittest.TestCase): def test_has_vjp(self): - main_program, start_program = ( - paddle.static.Program(), - paddle.static.Program(), - ) - with paddle.static.program_guard(main_program, start_program): - x = paddle.static.data('x', [4, 4], 'float32') - x.stop_gradient = False - paddle.mean(x, axis=[0, 1]) - paddle.tensor.fill_constant(shape=[1], dtype='float32', value=2.0) - pir_program = pir.translate_to_pir(main_program.desc) - fill_constant_op = pir_program.global_block().ops[-1] - mean_op = pir_program.global_block().ops[-2] - self.assertEqual(has_vjp(fill_constant_op), False) - self.assertEqual(has_vjp(mean_op), True) + with paddle.pir_utils.OldIrGuard(): + main_program, start_program = ( + paddle.static.Program(), + paddle.static.Program(), + ) + with paddle.static.program_guard(main_program, start_program): + x = paddle.static.data('x', [4, 4], 'float32') + x.stop_gradient = False + paddle.mean(x, axis=[0, 1]) + paddle.tensor.fill_constant( + shape=[1], dtype='float32', value=2.0 + ) + pir_program = pir.translate_to_pir(main_program.desc) + fill_constant_op = pir_program.global_block().ops[-1] + mean_op = pir_program.global_block().ops[-2] + self.assertEqual(has_vjp(fill_constant_op), False) + self.assertEqual(has_vjp(mean_op), True) if __name__ == "__main__": diff --git a/test/ir/pir/test_pass_manager.py b/test/ir/pir/test_pass_manager.py new file mode 100644 index 0000000000000..92113fabd5842 --- /dev/null +++ b/test/ir/pir/test_pass_manager.py @@ -0,0 +1,66 @@ +# Copyright (c) 2023 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. + +import unittest + +import paddle +from paddle import pir +from paddle.base import core +from paddle.framework import LayerHelper + +paddle.enable_static() + + +class TestShadowOutputSlice(unittest.TestCase): + def test_op(self): + with paddle.pir_utils.OldIrGuard(): + place = core.Place() + place.set_place(paddle.CPUPlace()) + new_scope = paddle.static.Scope() + main_program = paddle.static.Program() + with paddle.static.scope_guard(new_scope): + with paddle.static.program_guard(main_program): + x = paddle.ones([3, 9, 5], dtype='float32') + y = paddle.static.data( + name="y", shape=[3, 9, 5], dtype="float32" + ) + z = x * y # will be eliminated + + _, out, _ = paddle.split(x, num_or_sections=3, axis=1) + helper = LayerHelper('shadow_output') + helper.append_op( + type="shadow_output", + inputs={"x": [out.name]}, + outputs={"out": [y.name]}, + attrs={"name": out.name}, + ) + + new_program = pir.translate_to_pir(main_program.desc) + op_names = [op.name() for op in new_program.global_block().ops] + self.assertTrue('pd_op.multiply' in op_names) + pm = pir.PassManager() + pm.add_pass( + 'dead_code_elimination_pass', {} + ) # apply pass to eliminate dead code + pm.run(new_program) + op_names = [op.name() for op in new_program.global_block().ops] + self.assertEqual(pm.passes(), ['dead_code_elimination_pass']) + self.assertFalse(pm.empty()) + self.assertTrue( + 'pd_op.multiply' not in op_names + ) # multiply is eliminated because its output is not used + + +if __name__ == "__main__": + unittest.main() diff --git a/test/ir/pir/test_special_op_translator.py b/test/ir/pir/test_special_op_translator.py new file mode 100644 index 0000000000000..09440f2fc48bd --- /dev/null +++ b/test/ir/pir/test_special_op_translator.py @@ -0,0 +1,586 @@ +# Copyright (c) 2023 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. + +import unittest + +import numpy as np + +import paddle +from paddle import pir +from paddle.base import core +from paddle.framework import LayerHelper + +paddle.enable_static() + + +class TestCastOpTranscriber(unittest.TestCase): + def test_op(self): + with paddle.pir_utils.OldIrGuard(): + place = core.Place() + place.set_place(paddle.CPUPlace()) + new_scope = paddle.static.Scope() + main_program = paddle.static.Program() + with paddle.static.scope_guard(new_scope): + with paddle.static.program_guard(main_program): + x = paddle.to_tensor([2, 3, 4], 'float64') + y = paddle.cast(x, 'uint8') + + _, mappings = pir.translate_to_pir_with_param_map(main_program.desc) + assert len(str(mappings)) > 0, "no mapping found" + + +class TestCondWithInplace(unittest.TestCase): + def test_op(self): + with paddle.pir_utils.OldIrGuard(): + + def cond_with_inplace(): + x = paddle.ones(shape=[2, 1, 2, 3], dtype="float32") + y = paddle.ones(shape=[2, 1, 2, 3], dtype="float32") + running_mean = paddle.to_tensor([0], dtype="float32") + running_variance = paddle.to_tensor([1], dtype="float32") + weight = paddle.to_tensor([2], dtype="float32") + bias = paddle.to_tensor([1], dtype="float32") + if x > y: + y = paddle.nn.functional.batch_norm( + x, running_mean, running_variance, weight, bias + ) + else: + y = paddle.nn.functional.batch_norm( + x, running_mean, running_variance, weight, bias + ) + + legacy_program = paddle.jit.to_static( + cond_with_inplace, + input_spec=[], + full_graph=True, + ) + + l = pir.translate_to_pir(legacy_program.main_program.desc) + assert l is not None + + def test_nested_op(self): + with paddle.pir_utils.OldIrGuard(): + + def cond_with_inplace(): + x = paddle.ones(shape=[2, 1, 2, 3], dtype="float32") + y = paddle.ones(shape=[2, 1, 2, 3], dtype="float32") + z = paddle.ones(shape=[2, 1, 2, 3], dtype="float32") + running_mean = paddle.to_tensor([0], dtype="float32") + running_variance = paddle.to_tensor([1], dtype="float32") + weight = paddle.to_tensor([2], dtype="float32") + bias = paddle.to_tensor([1], dtype="float32") + if x > y: + if y > z: + z = paddle.nn.functional.batch_norm( + z, running_mean, running_variance, weight, bias + ) + else: + y = paddle.nn.functional.batch_norm( + x, running_mean, running_variance, weight, bias + ) + else: + if y > z: + z = paddle.nn.functional.batch_norm( + z, running_mean, running_variance, weight, bias + ) + else: + y = paddle.nn.functional.batch_norm( + x, running_mean, running_variance, weight, bias + ) + + legacy_program = paddle.jit.to_static( + cond_with_inplace, + input_spec=[], + full_graph=True, + ) + + l = pir.translate_to_pir(legacy_program.main_program.desc) + assert l is not None + + +class TestElementwiseOpTranscriber(unittest.TestCase): + def test_elementwise_without_y_grad(self): + with paddle.pir_utils.OldIrGuard(): + place = core.Place() + place.set_place(paddle.CPUPlace()) + exe = paddle.static.Executor(place) + + new_scope = paddle.static.Scope() + main_program = paddle.static.Program() + with paddle.static.scope_guard(new_scope): + with paddle.static.program_guard(main_program): + x_data = np.random.rand(100, 2, 3) + y_data = np.random.rand(100) + x = paddle.to_tensor(x_data, dtype='float32') + x.stop_gradient = False + y = paddle.to_tensor(y_data, dtype='float32') + + out1 = paddle.tensor.math._elementwise_op( + LayerHelper('elementwise_add', x=x, y=y, axis=0) + ) + out1.stop_gradient = False + mean = paddle.mean(out1) + paddle.static.append_backward(mean) + + out = exe.run(main_program, {}, fetch_list=[out1]) + np.testing.assert_allclose( + out[0], + x_data + y_data.reshape(100, 1, 1), + rtol=1e-6, + atol=1e-6, + ) + + def test_elementwise_with_y_grad(self): + with paddle.pir_utils.OldIrGuard(): + place = core.Place() + place.set_place(paddle.CPUPlace()) + exe = paddle.static.Executor(place) + + new_scope = paddle.static.Scope() + main_program = paddle.static.Program() + with paddle.static.scope_guard(new_scope): + with paddle.static.program_guard(main_program): + x_data = np.random.rand(100, 2, 3) + y_data = np.random.rand(100) + x = paddle.to_tensor(x_data, dtype='float32') + x.stop_gradient = False + y = paddle.to_tensor(y_data, dtype='float32') + y.stop_gradient = False + + out1 = paddle.tensor.math._elementwise_op( + LayerHelper('elementwise_add', x=x, y=y, axis=0) + ) + out1.stop_gradient = False + mean = paddle.mean(out1) + paddle.static.append_backward(mean) + + out = exe.run(main_program, {}, fetch_list=[out1]) + np.testing.assert_allclose( + out[0], + x_data + y_data.reshape(100, 1, 1), + rtol=1e-6, + atol=1e-6, + ) + + def test_add_inplace(self): + with paddle.pir_utils.OldIrGuard(): + place = core.Place() + place.set_place(paddle.CPUPlace()) + exe = paddle.static.Executor(place) + + new_scope = paddle.static.Scope() + main_program = paddle.static.Program() + with paddle.static.scope_guard(new_scope): + with paddle.static.program_guard(main_program): + x = paddle.ones(shape=(100, 2, 3), dtype='float32') + y = paddle.ones(shape=(100, 2, 3), dtype='float32') + + helper = LayerHelper('elementwise_add') + helper.append_op( + type="elementwise_add", + inputs={"X": x, "Y": y}, + outputs={"Out": y}, + attrs={"axis": -1}, + ) + _ = pir.translate_to_pir(main_program.desc) + + +class TestEmbeddingOpTranscriber(unittest.TestCase): + def test_op(self): + with paddle.pir_utils.OldIrGuard(): + place = core.Place() + place.set_place(paddle.CPUPlace()) + new_scope = paddle.static.Scope() + main_program = paddle.static.Program() + with paddle.static.scope_guard(new_scope): + with paddle.static.program_guard(main_program): + x = paddle.static.data( + name="x", shape=[2, 4], dtype=np.int64 + ) + embedding = paddle.nn.Embedding( + 10, + 3, + weight_attr=paddle.nn.initializer.Constant(value=1.0), + ) + output = embedding(x) + + _ = pir.translate_to_pir(main_program.desc) + + +class TestIncrementOpTranscriber(unittest.TestCase): + def test_op(self): + with paddle.pir_utils.OldIrGuard(): + place = core.Place() + place.set_place(paddle.CPUPlace()) + new_scope = paddle.static.Scope() + main_program = paddle.static.Program() + with paddle.static.scope_guard(new_scope): + with paddle.static.program_guard(main_program): + data = paddle.zeros(shape=[1], dtype='float32') + counter = paddle.increment(data) + + _ = pir.translate_to_pir(main_program.desc) + + +class TestAssignValueOpTranscriber(unittest.TestCase): + def test_op(self): + with paddle.pir_utils.OldIrGuard(): + place = core.Place() + place.set_place(paddle.CPUPlace()) + new_scope = paddle.static.Scope() + main_program = paddle.static.Program() + with paddle.static.scope_guard(new_scope): + with paddle.static.program_guard(main_program): + x = paddle.to_tensor( + [[0.1, 0.2], [0.3, 0.4]], + place=paddle.CPUPlace(), + stop_gradient=False, + ) + + _ = pir.translate_to_pir(main_program.desc) + + +class TestRnnOpTranscriber(unittest.TestCase): + def test_op(self): + with paddle.pir_utils.OldIrGuard(): + place = core.Place() + place.set_place(paddle.CPUPlace()) + new_scope = paddle.static.Scope() + main_program = paddle.static.Program() + with paddle.static.scope_guard(new_scope): + with paddle.static.program_guard(main_program): + x = paddle.randn((4, 16)) + prev_h = paddle.randn((4, 32)) + + cell = paddle.nn.SimpleRNNCell(16, 32) + y, h = cell(x, prev_h) + + _ = pir.translate_to_pir(main_program.desc) + + +class TestEmptyVarTranslate(unittest.TestCase): + def test_op(self): + with paddle.pir_utils.OldIrGuard(): + place = core.Place() + place.set_place(paddle.CPUPlace()) + new_scope = paddle.static.Scope() + main_program = paddle.static.Program() + with paddle.static.scope_guard(new_scope): + with paddle.static.program_guard(main_program): + x1 = paddle.rand(shape=[3, 3], dtype="float32") + x1.stop_gradient = False + weight = paddle.full( + shape=[3, 3], fill_value="0.5", dtype="float32" + ) + y = paddle.nn.functional.linear(x1, weight) + y.stop_gradient = True + out1 = paddle.concat(x=[x1, y], axis=1) + out2 = paddle.mean(out1) + sgd_optimizer = paddle.optimizer.SGD(learning_rate=0.1) + sgd_optimizer.minimize(out2) + _ = pir.translate_to_pir(main_program.desc) + + +class TestOneHotOpTranscriber(unittest.TestCase): + def test_mutable_attribute(self): + with paddle.pir_utils.OldIrGuard(): + place = core.Place() + place.set_place(paddle.CPUPlace()) + new_scope = paddle.static.Scope() + main_program = paddle.static.Program() + with paddle.static.scope_guard(new_scope): + with paddle.static.program_guard(main_program): + depth = paddle.assign(np.array([10], dtype=np.int32)) + label = paddle.static.data( + name="label", shape=[-1, 1], dtype="int64" + ) + one_hot_label = paddle.nn.functional.one_hot( + x=label, num_classes=depth + ) + + _ = pir.translate_to_pir(main_program.desc) + + def test_normal_attribute(self): + with paddle.pir_utils.OldIrGuard(): + place = core.Place() + place.set_place(paddle.CPUPlace()) + new_scope = paddle.static.Scope() + main_program = paddle.static.Program() + with paddle.static.scope_guard(new_scope): + with paddle.static.program_guard(main_program): + depth = 10 + label = paddle.static.data( + name="label", shape=[-1, 1], dtype="int64" + ) + one_hot_label = paddle.nn.functional.one_hot( + x=label, num_classes=depth + ) + + _ = pir.translate_to_pir(main_program.desc) + + +class TestReduceOpTranscriber(unittest.TestCase): + def test_reduce_all(self): + place = core.Place() + place.set_place(paddle.CPUPlace()) + exe = paddle.static.Executor(place) + + new_scope = paddle.static.Scope() + main_program = paddle.static.Program() + with paddle.static.scope_guard(new_scope): + with paddle.static.program_guard(main_program): + arr = np.ones([2, 2], dtype="float32") + x = paddle.to_tensor(arr, dtype='int32') + out1 = paddle.all(x) + + out = exe.run(main_program, {}, fetch_list=[out1]) + np.testing.assert_array_equal(out[0], np.all(arr)) + + def test_with_axis(self): + place = core.Place() + place.set_place(paddle.CPUPlace()) + exe = paddle.static.Executor(place) + + new_scope = paddle.static.Scope() + main_program = paddle.static.Program() + with paddle.static.scope_guard(new_scope): + with paddle.static.program_guard(main_program): + arr = np.ones([2, 2], dtype="float32") + x = paddle.to_tensor(arr, dtype='int32') + out1 = paddle.all(x, axis=0) + + out = exe.run(main_program, {}, fetch_list=[out1]) + np.testing.assert_array_equal(out[0], np.all(arr, axis=0)) + + +class TestIndexPutOpTranscriber(unittest.TestCase): + def test_op(self): + with paddle.pir_utils.OldIrGuard(): + place = core.Place() + place.set_place(paddle.CPUPlace()) + new_scope = paddle.static.Scope() + main_program = paddle.static.Program() + with paddle.static.scope_guard(new_scope): + with paddle.static.program_guard(main_program): + x = paddle.randn([2, 3]) + indices = [ + paddle.randint(0, 2, [2]), + paddle.randint(0, 1, [2]), + ] + value = paddle.randn([2]) + y = paddle.index_put(x, indices, value, False) + + _ = pir.translate_to_pir(main_program.desc) + + +class TestGradAddOpTranscriber(unittest.TestCase): + def test_op(self): + with paddle.pir_utils.OldIrGuard(): + place = core.Place() + place.set_place(paddle.CPUPlace()) + new_scope = paddle.static.Scope() + main_program = paddle.static.Program() + with paddle.static.scope_guard(new_scope): + with paddle.static.program_guard(main_program): + x_data = np.random.rand(100, 2, 3) + y_data = np.random.rand(100, 1, 1) + x = paddle.to_tensor(x_data, dtype='float32') + x.stop_gradient = False + y = paddle.to_tensor(y_data, dtype='float32') + + helper = LayerHelper('grad_add') + out = helper.create_variable_for_type_inference("float") + helper.append_op( + type="grad_add", + inputs={"X": x, "Y": y}, + outputs={"Out": out}, + attrs={"axis": -1}, + ) + + _ = pir.translate_to_pir(main_program.desc) + + +class TestShadowOutputSlice(unittest.TestCase): + def test_op(self): + with paddle.pir_utils.OldIrGuard(): + place = core.Place() + place.set_place(paddle.CPUPlace()) + new_scope = paddle.static.Scope() + main_program = paddle.static.Program() + with paddle.static.scope_guard(new_scope): + with paddle.static.program_guard(main_program): + x = paddle.rand([3, 9, 5]) + y = paddle.static.data( + name="y", shape=[3, 9, 5], dtype="float32" + ) + + _, out, _ = paddle.split(x, num_or_sections=3, axis=1) + helper = LayerHelper('shadow_output') + helper.append_op( + type="shadow_output", + inputs={"x": [out.name]}, + outputs={"out": [y.name]}, + attrs={"name": out.name}, + ) + + l = pir.translate_to_pir(main_program.desc) + + +class TestSetValueOp(unittest.TestCase): + def test_no_mutable_attribute(self): + place = core.Place() + place.set_place(paddle.CPUPlace()) + exe = paddle.static.Executor(place) + + new_scope = paddle.static.Scope() + main_program = paddle.static.Program() + with paddle.static.scope_guard(new_scope): + with paddle.static.program_guard(main_program): + x = paddle.ones(shape=[2, 3, 4], dtype="float32") + x = paddle.static.setitem(x, (0, 0), 6) + ret = exe.run(main_program, fetch_list=[x]) + + x_data = np.ones([2, 3, 4]).astype("float32") + x_data[0, 0] = 6 + np.testing.assert_array_equal(ret[0], x_data) + + def test_with_mutable_attribute(self): + place = core.Place() + place.set_place(paddle.CPUPlace()) + exe = paddle.static.Executor(place) + + new_scope = paddle.static.Scope() + main_program = paddle.static.Program() + with paddle.static.scope_guard(new_scope): + with paddle.static.program_guard(main_program): + x = paddle.ones(shape=[2, 3, 4], dtype="float32") + zero = paddle.full([], 0, dtype="int32") + x = paddle.static.setitem(x, zero, 6) + ret = exe.run(main_program, fetch_list=[x]) + + x_data = np.ones([2, 3, 4]).astype("float32") + x_data[0] = 6 + np.testing.assert_array_equal(ret[0], x_data) + + def test_grad(self): + with paddle.pir_utils.OldIrGuard(): + place = core.Place() + place.set_place(paddle.CPUPlace()) + exe = paddle.static.Executor(place) + new_scope = paddle.static.Scope() + main_program = paddle.static.Program() + input_shape = [7, 6, 5, 4, 3, 2] + with paddle.static.scope_guard(new_scope): + with paddle.static.program_guard(main_program): + x = paddle.ones(shape=input_shape, dtype="float32") + value = paddle.tensor.fill_constant([1, 3, 2], "float32", 1) + # test stop_gradient + value.stop_gradient = False + x.stop_gradient = False + attrs = { + 'axes': [0], + 'starts': [6], + 'ends': [0], + 'steps': [-4], + 'decrease_axes': [], + 'none_axes': [], + 'dtype': paddle.float32, + } + inputs = {'Input': x, 'ValueTensor': value} + + helper = LayerHelper("set_value") + y = helper.create_variable_for_type_inference(dtype=x.dtype) + + helper.append_op( + type="set_value", + inputs=inputs, + outputs={'Out': y}, + attrs=attrs, + ) + y2 = y + 1 + loss = paddle.sum(y2) + opt = paddle.optimizer.Adam() + opt.minimize(loss) + + x_data = np.arange( + 0, np.prod(input_shape), dtype="float32" + ).reshape(input_shape) + fetch_list = [x.grad_name, value.grad_name] + ret = exe.run(main_program, fetch_list=fetch_list) + self.assertTrue((ret[0][6:0:-4] == 0).all()) + + +class TestShareBufferOpTranscriber(unittest.TestCase): + def test_program(self): + with paddle.pir_utils.OldIrGuard(): + place = core.Place() + place.set_place(paddle.CPUPlace()) + + new_scope = paddle.static.Scope() + main_program = paddle.static.Program() + with paddle.static.scope_guard(new_scope): + with paddle.static.program_guard(main_program): + x = paddle.ones(shape=(100, 2, 3), dtype='float32') + y = paddle.ones(shape=(100, 2, 3), dtype='float32') + + helper = LayerHelper('share_buffer') + helper.append_op( + type="share_buffer", + inputs={"X": x}, + outputs={"Out": y, "XOut": x}, + ) + l = pir.translate_to_pir(main_program.desc) + assert ( + l.global_block().ops[2].name() == "pd_op.share_data_" + ), "share_buffer should be translated to share_data_" + + +class TestDataOp(unittest.TestCase): + def test_data_op(self): + with paddle.pir_utils.OldIrGuard(): + place = core.Place() + place.set_place(paddle.CPUPlace()) + + new_scope = paddle.static.Scope() + main_program = paddle.static.Program() + with paddle.static.scope_guard(new_scope): + with paddle.static.program_guard(main_program): + _ = paddle.static.data( + name="y", shape=[3, 9, 5], dtype="int64" + ) + l = pir.translate_to_pir(main_program.desc) + self.assertTrue(len(l.global_block().ops) > 0) + self.assertTrue(l.global_block().ops[0].name() == "pd_op.data") + data_op = l.global_block().ops[0] + self.assertIn("dtype", data_op.attrs()) + self.assertEqual(str(data_op.attrs()["dtype"]), "paddle.int64") + + +class TestCheckUnregisteredOp(unittest.TestCase): + def test_program(self): + with paddle.pir_utils.OldIrGuard(): + main_program = paddle.static.Program() + with paddle.static.program_guard(main_program): + x = paddle.randn((4, 16)) + prev_h = paddle.randn((4, 32)) + + cell = paddle.nn.SimpleRNNCell(16, 32) + y, h = cell(x, prev_h) + + ops = pir.check_unregistered_ops(main_program.desc) + assert len(ops) == 0 + + +if __name__ == "__main__": + unittest.main() diff --git a/test/deprecated/ir/pir/test_standalone_pir.py b/test/ir/pir/test_standalone_pir.py similarity index 91% rename from test/deprecated/ir/pir/test_standalone_pir.py rename to test/ir/pir/test_standalone_pir.py index 6104cf533baa8..73c36afedb548 100644 --- a/test/deprecated/ir/pir/test_standalone_pir.py +++ b/test/ir/pir/test_standalone_pir.py @@ -296,36 +296,36 @@ def tearDown(self): self.temp_dir.cleanup() def test_with_pir(self): - paddle.disable_static() - - linear = paddle.nn.Linear(10, 10) - path = os.path.join(self.model_path, "linear") - - paddle.jit.save( - linear, - path, - input_spec=[paddle.static.InputSpec([10, 10], 'float32', 'x')], - ) - - paddle.enable_static() - place = ( - paddle.CUDAPlace(0) - if paddle.is_compiled_with_cuda() - else paddle.CPUPlace() - ) + with paddle.pir_utils.OldIrGuard(): + paddle.disable_static() + linear = paddle.nn.Linear(10, 10) + path = os.path.join(self.model_path, "linear") + + paddle.jit.save( + linear, + path, + input_spec=[paddle.static.InputSpec([10, 10], 'float32', 'x')], + ) - exe = paddle.static.Executor(place) + paddle.enable_static() + place = ( + paddle.CUDAPlace(0) + if paddle.is_compiled_with_cuda() + else paddle.CPUPlace() + ) - [ - inference_program, - feed_target_names, - fetch_targets, - ] = paddle.static.io.load_inference_model( - self.model_path, - executor=exe, - model_filename="linear.pdmodel", - params_filename="linear.pdiparams", - ) + exe = paddle.static.Executor(place) + + [ + inference_program, + feed_target_names, + fetch_targets, + ] = paddle.static.io.load_inference_model( + self.model_path, + executor=exe, + model_filename="linear.pdmodel", + params_filename="linear.pdiparams", + ) class TestPirConcatDygraph(unittest.TestCase): diff --git a/test/deprecated/ir/pir/translator/CMakeLists.txt b/test/ir/pir/translator/CMakeLists.txt similarity index 100% rename from test/deprecated/ir/pir/translator/CMakeLists.txt rename to test/ir/pir/translator/CMakeLists.txt diff --git a/test/deprecated/ir/pir/translator/test_all_reduce_translator.py b/test/ir/pir/translator/test_all_reduce_translator.py similarity index 97% rename from test/deprecated/ir/pir/translator/test_all_reduce_translator.py rename to test/ir/pir/translator/test_all_reduce_translator.py index 3bef81873428a..017c8b4c90e50 100644 --- a/test/deprecated/ir/pir/translator/test_all_reduce_translator.py +++ b/test/ir/pir/translator/test_all_reduce_translator.py @@ -19,6 +19,8 @@ import paddle from paddle.base.layer_helper import LayerHelper +paddle.pir_utils._switch_to_old_ir_() + class TestCAllReduceMinOpTranslator(test_op_translator.TestOpTranslator): def append_op(self): diff --git a/test/deprecated/ir/pir/translator/test_barrier_translator.py b/test/ir/pir/translator/test_barrier_translator.py similarity index 97% rename from test/deprecated/ir/pir/translator/test_barrier_translator.py rename to test/ir/pir/translator/test_barrier_translator.py index 7d570df843081..60bf1ed57da17 100644 --- a/test/deprecated/ir/pir/translator/test_barrier_translator.py +++ b/test/ir/pir/translator/test_barrier_translator.py @@ -19,6 +19,8 @@ import paddle from paddle.base.layer_helper import LayerHelper +paddle.pir_utils._switch_to_old_ir_() + class TestBarrierOpTranslator(test_op_translator.TestOpTranslator): def append_op(self): diff --git a/test/deprecated/ir/pir/translator/test_c_allreduce_min_translator.py b/test/ir/pir/translator/test_c_allreduce_min_translator.py similarity index 97% rename from test/deprecated/ir/pir/translator/test_c_allreduce_min_translator.py rename to test/ir/pir/translator/test_c_allreduce_min_translator.py index 60549a63ec6e4..dfb628936001e 100644 --- a/test/deprecated/ir/pir/translator/test_c_allreduce_min_translator.py +++ b/test/ir/pir/translator/test_c_allreduce_min_translator.py @@ -19,6 +19,8 @@ import paddle from paddle.base.layer_helper import LayerHelper +paddle.pir_utils._switch_to_old_ir_() + class TestCAllReduceMinOpTranslator(test_op_translator.TestOpTranslator): def append_op(self): diff --git a/test/deprecated/ir/pir/translator/test_c_allreduce_prod_translator.py b/test/ir/pir/translator/test_c_allreduce_prod_translator.py similarity index 97% rename from test/deprecated/ir/pir/translator/test_c_allreduce_prod_translator.py rename to test/ir/pir/translator/test_c_allreduce_prod_translator.py index 855f2e5f7293b..f803b7cabaf51 100644 --- a/test/deprecated/ir/pir/translator/test_c_allreduce_prod_translator.py +++ b/test/ir/pir/translator/test_c_allreduce_prod_translator.py @@ -19,6 +19,8 @@ import paddle from paddle.base.layer_helper import LayerHelper +paddle.pir_utils._switch_to_old_ir_() + class TestCAllReduceProdOpTranslator(test_op_translator.TestOpTranslator): def append_op(self): diff --git a/test/deprecated/ir/pir/translator/test_c_reduce_max_translator.py b/test/ir/pir/translator/test_c_reduce_max_translator.py similarity index 97% rename from test/deprecated/ir/pir/translator/test_c_reduce_max_translator.py rename to test/ir/pir/translator/test_c_reduce_max_translator.py index c40624ad74fbb..700135b619b6a 100644 --- a/test/deprecated/ir/pir/translator/test_c_reduce_max_translator.py +++ b/test/ir/pir/translator/test_c_reduce_max_translator.py @@ -19,6 +19,8 @@ import paddle from paddle.base.layer_helper import LayerHelper +paddle.pir_utils._switch_to_old_ir_() + class TestCReduceMaxOpTranslator(test_op_translator.TestOpTranslator): def append_op(self): diff --git a/test/deprecated/ir/pir/translator/test_c_reduce_min_translator.py b/test/ir/pir/translator/test_c_reduce_min_translator.py similarity index 97% rename from test/deprecated/ir/pir/translator/test_c_reduce_min_translator.py rename to test/ir/pir/translator/test_c_reduce_min_translator.py index 71610cf9a3e43..bb77cd649b16b 100644 --- a/test/deprecated/ir/pir/translator/test_c_reduce_min_translator.py +++ b/test/ir/pir/translator/test_c_reduce_min_translator.py @@ -19,6 +19,8 @@ import paddle from paddle.base.layer_helper import LayerHelper +paddle.pir_utils._switch_to_old_ir_() + class TestCReduceMinOpTranslator(test_op_translator.TestOpTranslator): def append_op(self): diff --git a/test/deprecated/ir/pir/translator/test_c_reduce_prod_translator.py b/test/ir/pir/translator/test_c_reduce_prod_translator.py similarity index 97% rename from test/deprecated/ir/pir/translator/test_c_reduce_prod_translator.py rename to test/ir/pir/translator/test_c_reduce_prod_translator.py index 34caa22d77b9f..ac1553bf92b7c 100644 --- a/test/deprecated/ir/pir/translator/test_c_reduce_prod_translator.py +++ b/test/ir/pir/translator/test_c_reduce_prod_translator.py @@ -19,6 +19,8 @@ import paddle from paddle.base.layer_helper import LayerHelper +paddle.pir_utils._switch_to_old_ir_() + class TestCReduceProdOpTranslator(test_op_translator.TestOpTranslator): def append_op(self): diff --git a/test/deprecated/ir/pir/translator/test_c_scatter_translator.py b/test/ir/pir/translator/test_c_scatter_translator.py similarity index 97% rename from test/deprecated/ir/pir/translator/test_c_scatter_translator.py rename to test/ir/pir/translator/test_c_scatter_translator.py index 66dbb3320ab43..79b8c24eb7911 100644 --- a/test/deprecated/ir/pir/translator/test_c_scatter_translator.py +++ b/test/ir/pir/translator/test_c_scatter_translator.py @@ -19,6 +19,8 @@ import paddle from paddle.base.layer_helper import LayerHelper +paddle.pir_utils._switch_to_old_ir_() + class TestCScatterOpTranslator(test_op_translator.TestOpTranslator): def append_op(self): diff --git a/test/deprecated/ir/pir/translator/test_c_split_translator.py b/test/ir/pir/translator/test_c_split_translator.py similarity index 97% rename from test/deprecated/ir/pir/translator/test_c_split_translator.py rename to test/ir/pir/translator/test_c_split_translator.py index e09194e9ca019..9fe3df6d3560d 100644 --- a/test/deprecated/ir/pir/translator/test_c_split_translator.py +++ b/test/ir/pir/translator/test_c_split_translator.py @@ -19,6 +19,8 @@ import paddle from paddle.base.layer_helper import LayerHelper +paddle.pir_utils._switch_to_old_ir_() + class TestCSplitOpTranslator(test_op_translator.TestOpTranslator): def append_op(self): diff --git a/test/deprecated/ir/pir/translator/test_dgc_momentum_translator.py b/test/ir/pir/translator/test_dgc_momentum_translator.py similarity index 98% rename from test/deprecated/ir/pir/translator/test_dgc_momentum_translator.py rename to test/ir/pir/translator/test_dgc_momentum_translator.py index b44b981ddc6cb..75a62c22e7f57 100644 --- a/test/deprecated/ir/pir/translator/test_dgc_momentum_translator.py +++ b/test/ir/pir/translator/test_dgc_momentum_translator.py @@ -19,6 +19,8 @@ import paddle from paddle.base.layer_helper import LayerHelper +paddle.pir_utils._switch_to_old_ir_() + class TestDgcMomemtumOpTranslator(test_op_translator.TestOpTranslator): def append_op(self): diff --git a/test/deprecated/ir/pir/translator/test_dgc_translator.py b/test/ir/pir/translator/test_dgc_translator.py similarity index 98% rename from test/deprecated/ir/pir/translator/test_dgc_translator.py rename to test/ir/pir/translator/test_dgc_translator.py index 6f2fe03137eb9..87d72c7afafcb 100644 --- a/test/deprecated/ir/pir/translator/test_dgc_translator.py +++ b/test/ir/pir/translator/test_dgc_translator.py @@ -19,6 +19,8 @@ import paddle from paddle.base.layer_helper import LayerHelper +paddle.pir_utils._switch_to_old_ir_() + class TestDgcOpTranslator(test_op_translator.TestOpTranslator): def append_op(self): diff --git a/test/deprecated/ir/pir/translator/test_distributed_fused_lamb.py b/test/ir/pir/translator/test_distributed_fused_lamb.py similarity index 99% rename from test/deprecated/ir/pir/translator/test_distributed_fused_lamb.py rename to test/ir/pir/translator/test_distributed_fused_lamb.py index 9493772d63799..4e03fd93082b3 100644 --- a/test/deprecated/ir/pir/translator/test_distributed_fused_lamb.py +++ b/test/ir/pir/translator/test_distributed_fused_lamb.py @@ -20,6 +20,8 @@ from paddle.base import core, unique_name from paddle.base.layer_helper import LayerHelper +paddle.pir_utils._switch_to_old_ir_() + class TestDistributedFusedLambOpTranslator(test_op_translator.TestOpTranslator): def setUp(self): diff --git a/test/deprecated/ir/pir/translator/test_distributed_fused_lamb_init.py b/test/ir/pir/translator/test_distributed_fused_lamb_init.py similarity index 99% rename from test/deprecated/ir/pir/translator/test_distributed_fused_lamb_init.py rename to test/ir/pir/translator/test_distributed_fused_lamb_init.py index 618c526830d5b..8faa4a33209c9 100644 --- a/test/deprecated/ir/pir/translator/test_distributed_fused_lamb_init.py +++ b/test/ir/pir/translator/test_distributed_fused_lamb_init.py @@ -20,6 +20,8 @@ from paddle.base import unique_name from paddle.base.layer_helper import LayerHelper +paddle.pir_utils._switch_to_old_ir_() + class TestDistributedFusedLambInitOpTranslator( test_op_translator.TestOpTranslator diff --git a/test/deprecated/ir/pir/translator/test_distributed_lookup_table_translate.py b/test/ir/pir/translator/test_distributed_lookup_table_translate.py similarity index 97% rename from test/deprecated/ir/pir/translator/test_distributed_lookup_table_translate.py rename to test/ir/pir/translator/test_distributed_lookup_table_translate.py index ead69d9dcbbf0..e596432748779 100644 --- a/test/deprecated/ir/pir/translator/test_distributed_lookup_table_translate.py +++ b/test/ir/pir/translator/test_distributed_lookup_table_translate.py @@ -23,6 +23,8 @@ ) from paddle.base.layer_helper import LayerHelper +paddle.pir_utils._switch_to_old_ir_() + class TestDistributedLookupTableOpTranslator( test_op_translator.TestOpTranslator diff --git a/test/deprecated/ir/pir/translator/test_distributed_push_sparse_translator.py b/test/ir/pir/translator/test_distributed_push_sparse_translator.py similarity index 97% rename from test/deprecated/ir/pir/translator/test_distributed_push_sparse_translator.py rename to test/ir/pir/translator/test_distributed_push_sparse_translator.py index 996a48f99ec4d..d9bada6c0baeb 100644 --- a/test/deprecated/ir/pir/translator/test_distributed_push_sparse_translator.py +++ b/test/ir/pir/translator/test_distributed_push_sparse_translator.py @@ -23,6 +23,8 @@ ) from paddle.base.layer_helper import LayerHelper +paddle.pir_utils._switch_to_old_ir_() + class TestDistributedPushSparseOpTranslator( test_op_translator.TestOpTranslator diff --git a/test/deprecated/ir/pir/translator/test_global_gather_translator.py b/test/ir/pir/translator/test_global_gather_translator.py similarity index 97% rename from test/deprecated/ir/pir/translator/test_global_gather_translator.py rename to test/ir/pir/translator/test_global_gather_translator.py index cbd883aaf6500..83afd6b103442 100644 --- a/test/deprecated/ir/pir/translator/test_global_gather_translator.py +++ b/test/ir/pir/translator/test_global_gather_translator.py @@ -19,6 +19,8 @@ import paddle from paddle.base.layer_helper import LayerHelper +paddle.pir_utils._switch_to_old_ir_() + class TestGlobalGatherOpTranslator( test_op_translator.TestOpWithBackwardTranslator diff --git a/test/deprecated/ir/pir/translator/test_global_scatter_translator.py b/test/ir/pir/translator/test_global_scatter_translator.py similarity index 97% rename from test/deprecated/ir/pir/translator/test_global_scatter_translator.py rename to test/ir/pir/translator/test_global_scatter_translator.py index fb349a30b95e2..3ea1c4fdc87ea 100644 --- a/test/deprecated/ir/pir/translator/test_global_scatter_translator.py +++ b/test/ir/pir/translator/test_global_scatter_translator.py @@ -19,6 +19,8 @@ import paddle from paddle.base.layer_helper import LayerHelper +paddle.pir_utils._switch_to_old_ir_() + class TestGlobalScatterOpTranslator( test_op_translator.TestOpWithBackwardTranslator diff --git a/test/deprecated/ir/pir/translator/test_limit_by_capacity_translator.py b/test/ir/pir/translator/test_limit_by_capacity_translator.py similarity index 97% rename from test/deprecated/ir/pir/translator/test_limit_by_capacity_translator.py rename to test/ir/pir/translator/test_limit_by_capacity_translator.py index 82739201c3dd9..25a375a297709 100644 --- a/test/deprecated/ir/pir/translator/test_limit_by_capacity_translator.py +++ b/test/ir/pir/translator/test_limit_by_capacity_translator.py @@ -19,6 +19,8 @@ import paddle from paddle.base.layer_helper import LayerHelper +paddle.pir_utils._switch_to_old_ir_() + class TestDistributedLookupTableOpTranslator( test_op_translator.TestOpTranslator diff --git a/test/deprecated/ir/pir/translator/test_nop_translator.py b/test/ir/pir/translator/test_nop_translator.py similarity index 96% rename from test/deprecated/ir/pir/translator/test_nop_translator.py rename to test/ir/pir/translator/test_nop_translator.py index e3a7722cd8354..f45ada523ec1a 100644 --- a/test/deprecated/ir/pir/translator/test_nop_translator.py +++ b/test/ir/pir/translator/test_nop_translator.py @@ -19,6 +19,8 @@ import paddle from paddle.base.layer_helper import LayerHelper +paddle.pir_utils._switch_to_old_ir_() + class TestNopTranslator(test_op_translator.TestOpTranslator): def append_op(self): diff --git a/test/deprecated/ir/pir/translator/test_op_translator.py b/test/ir/pir/translator/test_op_translator.py similarity index 98% rename from test/deprecated/ir/pir/translator/test_op_translator.py rename to test/ir/pir/translator/test_op_translator.py index 7ec1f0dd8d380..775677ea397ff 100644 --- a/test/deprecated/ir/pir/translator/test_op_translator.py +++ b/test/ir/pir/translator/test_op_translator.py @@ -21,6 +21,8 @@ paddle.enable_static() +paddle.pir_utils._switch_to_old_ir_() + class TestOpTranslator(unittest.TestCase): def setUp(self): diff --git a/test/deprecated/ir/pir/translator/test_partial_allgather_translator.py b/test/ir/pir/translator/test_partial_allgather_translator.py similarity index 97% rename from test/deprecated/ir/pir/translator/test_partial_allgather_translator.py rename to test/ir/pir/translator/test_partial_allgather_translator.py index 37c19e2105066..e4a1653137fb7 100644 --- a/test/deprecated/ir/pir/translator/test_partial_allgather_translator.py +++ b/test/ir/pir/translator/test_partial_allgather_translator.py @@ -19,6 +19,8 @@ import paddle from paddle.base.layer_helper import LayerHelper +paddle.pir_utils._switch_to_old_ir_() + class TestPartialAllgetherOpTranslator(test_op_translator.TestOpTranslator): def append_op(self): diff --git a/test/deprecated/ir/pir/translator/test_partial_recv_translator.py b/test/ir/pir/translator/test_partial_recv_translator.py similarity index 97% rename from test/deprecated/ir/pir/translator/test_partial_recv_translator.py rename to test/ir/pir/translator/test_partial_recv_translator.py index 6f06ec4fad073..953e6d9ed2f13 100644 --- a/test/deprecated/ir/pir/translator/test_partial_recv_translator.py +++ b/test/ir/pir/translator/test_partial_recv_translator.py @@ -23,6 +23,8 @@ ) from paddle.base.layer_helper import LayerHelper +paddle.pir_utils._switch_to_old_ir_() + class TestPartialRecvOpTranslator(test_op_translator.TestOpTranslator): def append_op(self): diff --git a/test/deprecated/ir/pir/translator/test_partial_send_translator.py b/test/ir/pir/translator/test_partial_send_translator.py similarity index 96% rename from test/deprecated/ir/pir/translator/test_partial_send_translator.py rename to test/ir/pir/translator/test_partial_send_translator.py index 9f133f5274969..36c275480c2bc 100644 --- a/test/deprecated/ir/pir/translator/test_partial_send_translator.py +++ b/test/ir/pir/translator/test_partial_send_translator.py @@ -19,6 +19,8 @@ import paddle from paddle.base.layer_helper import LayerHelper +paddle.pir_utils._switch_to_old_ir_() + class TestPartialSendTranslator(test_op_translator.TestOpTranslator): def append_op(self): diff --git a/test/deprecated/ir/pir/translator/test_prune_gate_by_capacity_translator.py b/test/ir/pir/translator/test_prune_gate_by_capacity_translator.py similarity index 97% rename from test/deprecated/ir/pir/translator/test_prune_gate_by_capacity_translator.py rename to test/ir/pir/translator/test_prune_gate_by_capacity_translator.py index 637429bfa70b7..0ce278f77b90e 100644 --- a/test/deprecated/ir/pir/translator/test_prune_gate_by_capacity_translator.py +++ b/test/ir/pir/translator/test_prune_gate_by_capacity_translator.py @@ -19,6 +19,8 @@ import paddle from paddle.base.layer_helper import LayerHelper +paddle.pir_utils._switch_to_old_ir_() + class TestPruneGateByCapacityOpTranslator(test_op_translator.TestOpTranslator): def append_op(self): diff --git a/test/ir/pir/translator/test_pull_box_sparse_translator.py b/test/ir/pir/translator/test_pull_box_sparse_translator.py index f691892adc4f4..85fcfcb909567 100644 --- a/test/ir/pir/translator/test_pull_box_sparse_translator.py +++ b/test/ir/pir/translator/test_pull_box_sparse_translator.py @@ -19,6 +19,8 @@ import paddle from paddle.base.layer_helper import LayerHelper +paddle.pir_utils._switch_to_old_ir_() + class TestPullBoxSparseOpTranslator( test_op_translator.TestOpWithBackwardTranslator diff --git a/test/deprecated/ir/pir/translator/test_pull_gpups_sparse_translator.py b/test/ir/pir/translator/test_pull_gpups_sparse_translator.py similarity index 97% rename from test/deprecated/ir/pir/translator/test_pull_gpups_sparse_translator.py rename to test/ir/pir/translator/test_pull_gpups_sparse_translator.py index abc695a0573a2..c55a9b6eb6f3a 100644 --- a/test/deprecated/ir/pir/translator/test_pull_gpups_sparse_translator.py +++ b/test/ir/pir/translator/test_pull_gpups_sparse_translator.py @@ -20,6 +20,8 @@ from paddle.base import core from paddle.base.layer_helper import LayerHelper +paddle.pir_utils._switch_to_old_ir_() + class TestPullGpupsSparseOpTranslator( test_op_translator.TestOpWithBackwardTranslator diff --git a/test/deprecated/ir/pir/translator/test_pull_sparse_v2_translator.py b/test/ir/pir/translator/test_pull_sparse_v2_translator.py similarity index 97% rename from test/deprecated/ir/pir/translator/test_pull_sparse_v2_translator.py rename to test/ir/pir/translator/test_pull_sparse_v2_translator.py index 374c7f5ee2e61..f91bb3ccc2f90 100644 --- a/test/deprecated/ir/pir/translator/test_pull_sparse_v2_translator.py +++ b/test/ir/pir/translator/test_pull_sparse_v2_translator.py @@ -20,6 +20,8 @@ from paddle.base import core from paddle.base.layer_helper import LayerHelper +paddle.pir_utils._switch_to_old_ir_() + class TestPullSparseV2OpTranslator( test_op_translator.TestOpWithBackwardTranslator diff --git a/test/deprecated/ir/pir/translator/test_push_dense_translator.py b/test/ir/pir/translator/test_push_dense_translator.py similarity index 97% rename from test/deprecated/ir/pir/translator/test_push_dense_translator.py rename to test/ir/pir/translator/test_push_dense_translator.py index cdd87ba72d3ed..26191a0b2d048 100644 --- a/test/deprecated/ir/pir/translator/test_push_dense_translator.py +++ b/test/ir/pir/translator/test_push_dense_translator.py @@ -19,6 +19,8 @@ import paddle from paddle.base.layer_helper import LayerHelper +paddle.pir_utils._switch_to_old_ir_() + class TestPushDenseOpTranslator(test_op_translator.TestOpTranslator): def append_op(self): diff --git a/test/deprecated/ir/pir/translator/test_random_routing_translator.py b/test/ir/pir/translator/test_random_routing_translator.py similarity index 97% rename from test/deprecated/ir/pir/translator/test_random_routing_translator.py rename to test/ir/pir/translator/test_random_routing_translator.py index 86d047930f8b7..c8b353fd7e71f 100644 --- a/test/deprecated/ir/pir/translator/test_random_routing_translator.py +++ b/test/ir/pir/translator/test_random_routing_translator.py @@ -19,6 +19,8 @@ import paddle from paddle.base.layer_helper import LayerHelper +paddle.pir_utils._switch_to_old_ir_() + class TestRandomRoutingOpTranslator(test_op_translator.TestOpTranslator): def append_op(self): diff --git a/test/deprecated/ir/pir/translator/test_send_and_recv_translator.py b/test/ir/pir/translator/test_send_and_recv_translator.py similarity index 97% rename from test/deprecated/ir/pir/translator/test_send_and_recv_translator.py rename to test/ir/pir/translator/test_send_and_recv_translator.py index c452ae34eb7c7..e71d43c524ba9 100644 --- a/test/deprecated/ir/pir/translator/test_send_and_recv_translator.py +++ b/test/ir/pir/translator/test_send_and_recv_translator.py @@ -19,6 +19,8 @@ import paddle from paddle.base.layer_helper import LayerHelper +paddle.pir_utils._switch_to_old_ir_() + class TestCReduceMinOpTranslator(test_op_translator.TestOpTranslator): def append_op(self): From 2abcf0a1a159e228cf3e05835a2e8ce07a74e36d Mon Sep 17 00:00:00 2001 From: Wang Huan Date: Fri, 7 Jun 2024 01:29:55 +0000 Subject: [PATCH 2/2] refine --- test/deprecated/ir/pir/CMakeLists.txt | 2 -- 1 file changed, 2 deletions(-) diff --git a/test/deprecated/ir/pir/CMakeLists.txt b/test/deprecated/ir/pir/CMakeLists.txt index bcb550df74c03..df4ff900910b3 100644 --- a/test/deprecated/ir/pir/CMakeLists.txt +++ b/test/deprecated/ir/pir/CMakeLists.txt @@ -8,5 +8,3 @@ foreach(target ${TEST_INTERP_CASES}) py_test_modules(${target} MODULES ${target} ENVS GLOG_v=1 FLAGS_enable_pir_in_executor=true) endforeach() - -add_subdirectory(translator)