Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[AMP Prim OP]support some prim ops for bf16 dtype part3 #54368

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion test/legacy_test/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -1199,7 +1199,10 @@ set(TEST_CINN_OPS
test_instance_norm_op
test_cumsum_op
test_pad_op
test_split_op)
test_split_op
test_erf_op
test_assign_op
test_flatten_contiguous_range_op)

foreach(TEST_CINN_OPS ${TEST_CINN_OPS})
if(WITH_CINN)
Expand Down
1 change: 0 additions & 1 deletion test/legacy_test/test_assign_op.py
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,6 @@ def setUp(self):
self.public_python_api = paddle.assign
self.op_type = "assign"
self.prim_op_type = "prim"
self.enable_cinn = False
x = np.random.uniform(0, 1, [100, 10]).astype(np.float32)
x = convert_float_to_uint16(x)
self.inputs = {'X': x}
Expand Down
16 changes: 9 additions & 7 deletions test/legacy_test/test_erf_op.py
Original file line number Diff line number Diff line change
Expand Up @@ -57,15 +57,17 @@ def _test_case(self, place):
np.testing.assert_allclose(y_ref, y_test, rtol=1e-05)

def test_case(self):
self._test_case(fluid.CPUPlace())
if fluid.is_compiled_with_cuda():
self._test_case(fluid.CUDAPlace(0))
with paddle.fluid.framework._static_guard():
self._test_case(fluid.CPUPlace())
if fluid.is_compiled_with_cuda():
self._test_case(fluid.CUDAPlace(0))

def test_name(self):
with fluid.program_guard(fluid.Program()):
x = paddle.static.data('x', [3, 4])
y = paddle.erf(x, name='erf')
self.assertTrue('erf' in y.name)
with paddle.fluid.framework._static_guard():
with fluid.program_guard(fluid.Program()):
x = paddle.static.data('x', [3, 4])
y = paddle.erf(x, name='erf')
self.assertTrue('erf' in y.name)


class TestErfFP16OP(OpTest):
Expand Down
2 changes: 1 addition & 1 deletion test/legacy_test/test_fill_any_like_op.py
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ def test_check_output(self):
self.check_output_with_place(place, check_prim=True)

def if_enable_cinn(self):
self.enable_cinn = False
pass


class TestFillAnyLikeOpValue1(TestFillAnyLikeOp):
Expand Down
29 changes: 25 additions & 4 deletions test/legacy_test/test_flatten_contiguous_range_op.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ def setUp(self):
self.prim_op_type = "comp"
self.start_axis = 0
self.stop_axis = -1
self.skip_cinn()
self.if_enable_cinn()
self.init_test_case()
self.init_test_dtype()
self.init_input_data()
Expand All @@ -40,8 +40,8 @@ def setUp(self):
"XShape": np.random.random(self.in_shape).astype("float32"),
}

def skip_cinn(self):
self.enable_cinn = True
def if_enable_cinn(self):
pass

def test_check_output(self):
if str(self.dtype) in {"float16", "uint16"}:
Expand Down Expand Up @@ -104,6 +104,9 @@ def init_test_dtype(self):
"core is not complied with CUDA and not support the bfloat16",
)
class TestFlattenBF16Op(TestFlattenOp):
def if_enable_cinn(self):
pass

def init_test_dtype(self):
self.dtype = "uint16"

Expand Down Expand Up @@ -142,6 +145,9 @@ def init_test_dtype(self):
"core is not complied with CUDA and not support the bfloat16",
)
class TestFlattenBF16Op_1(TestFlattenOp_1):
def if_enable_cinn(self):
pass

def init_test_dtype(self):
self.dtype = "uint16"

Expand Down Expand Up @@ -180,6 +186,9 @@ def init_test_dtype(self):
"core is not complied with CUDA and not support the bfloat16",
)
class TestFlattenBF16Op_2(TestFlattenOp_2):
def if_enable_cinn(self):
pass

def init_test_dtype(self):
self.dtype = "uint16"

Expand Down Expand Up @@ -218,6 +227,9 @@ def init_test_dtype(self):
"core is not complied with CUDA and not support the bfloat16",
)
class TestFlattenBF16Op_3(TestFlattenOp_3):
def if_enable_cinn(self):
pass

def init_test_dtype(self):
self.dtype = "uint16"

Expand Down Expand Up @@ -256,6 +268,9 @@ def init_test_dtype(self):
"core is not complied with CUDA and not support the bfloat16",
)
class TestFlattenBF16Op_4(TestFlattenOp_4):
def if_enable_cinn(self):
pass

def init_test_dtype(self):
self.dtype = "uint16"

Expand Down Expand Up @@ -294,6 +309,9 @@ def init_test_dtype(self):
"core is not complied with CUDA and not support the bfloat16",
)
class TestFlattenBF16Op_5(TestFlattenOp_5):
def if_enable_cinn(self):
pass

def init_test_dtype(self):
self.dtype = "uint16"

Expand All @@ -305,7 +323,7 @@ def init_test_case(self):
self.stop_axis = -1
self.new_shape = (1,)

def skip_cinn(self):
def if_enable_cinn(self):
self.enable_cinn = False

def init_attrs(self):
Expand Down Expand Up @@ -363,6 +381,9 @@ def init_test_dtype(self):
"core is not complied with CUDA and not support the bfloat16",
)
class TestFlattenBF16OpSixDims(TestFlattenOpSixDims):
def if_enable_cinn(self):
pass

def init_test_dtype(self):
self.dtype = "uint16"

Expand Down
14 changes: 11 additions & 3 deletions test/legacy_test/test_index_select_op.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@

import paddle
from paddle import fluid
from paddle.fluid import Program, program_guard
from paddle.fluid import Program, core, program_guard

np.random.seed(1024)

Expand Down Expand Up @@ -102,8 +102,11 @@ def init_dtype_type(self):
class TestIndexSelectBF16Op(OpTest):
def setUp(self):
self.python_api = paddle.index_select
self.public_python_api = paddle.index_select
self.prim_op_type = "comp"
self.op_type = "index_select"
self.init_dtype_type()
self.if_skip_cinn()
index_np = np.random.randint(
low=0, high=self.x_shape[self.dim], size=self.index_size
)
Expand All @@ -124,6 +127,9 @@ def setUp(self):
out = np.reshape(out_list, self.out_shape)
self.outputs = {'Out': convert_float_to_uint16(out)}

def if_skip_cinn(self):
self.enable_cinn = False

def init_dtype_type(self):
self.dim = 1
self.x_type = np.uint16
Expand All @@ -132,10 +138,12 @@ def init_dtype_type(self):
self.index_size = 100

def test_check_output(self):
self.check_output()
place = core.CUDAPlace(0)
self.check_output_with_place(place)

def test_check_grad_normal(self):
self.check_grad(['X'], 'Out')
place = core.CUDAPlace(0)
self.check_grad_with_place(place, ['X'], 'Out', check_prim=True)


class TestIndexSelectAPI(unittest.TestCase):
Expand Down
26 changes: 22 additions & 4 deletions test/legacy_test/test_top_k_v2_op.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,11 @@
import unittest

import numpy as np
from eager_op_test import OpTest, convert_float_to_uint16
from eager_op_test import (
OpTest,
convert_float_to_uint16,
convert_uint16_to_float,
)

import paddle
from paddle.fluid import core
Expand Down Expand Up @@ -51,13 +55,17 @@ def setUp(self):
self.dtype = np.float64
self.input_data = np.random.rand(10, 20)
self.init_args()
self.if_enable_cinn()
self.inputs = {'X': self.input_data}
self.attrs = {'k': self.k, 'axis': self.axis, 'largest': self.largest}
output, indices = numpy_topk(
self.input_data, axis=self.axis, k=self.k, largest=self.largest
)
self.outputs = {'Out': output, 'Indices': indices}

def if_enable_cinn(self):
pass

def test_check_output(self):
self.check_output()

Expand Down Expand Up @@ -115,6 +123,7 @@ def setUp(self):
self.dtype = np.float64
self.input_data = np.random.rand(10, 10, 5)
self.init_args()
self.if_enable_cinn()
self.inputs = {'X': self.input_data}
self.attrs = {'k': self.k, 'axis': self.axis, 'largest': self.largest}
output, indices = numpy_topk(
Expand All @@ -137,6 +146,7 @@ def setUp(self):
self.dtype = np.float64
self.input_data = np.random.rand(10, 10, 5)
self.init_args()
self.if_enable_cinn()
self.inputs = {'X': self.input_data}
self.attrs = {'k': self.k, 'axis': self.axis, 'largest': self.largest}
output, indices = numpy_topk(
Expand All @@ -159,6 +169,7 @@ def setUp(self):
self.dtype = np.float32
self.input_data = np.random.rand(10, 10, 5)
self.init_args()
self.if_enable_cinn()
self.inputs = {'X': self.input_data}
self.attrs = {'k': self.k, 'axis': self.axis, 'largest': self.largest}
output, indices = numpy_topk(
Expand All @@ -181,6 +192,7 @@ def setUp(self):
self.dtype = np.float16
self.input_data = np.random.rand(10, 20, 10)
self.init_args()
self.if_enable_cinn()
self.inputs = {'X': self.input_data}
self.attrs = {'k': self.k, 'axis': self.axis, 'largest': self.largest}
output, indices = numpy_topk(
Expand All @@ -198,6 +210,7 @@ def setUp(self):
self.prim_op_type = "prim"
self.input_data = np.random.rand(10, 20).astype(self.dtype)
self.init_args()
self.if_enable_cinn()
self.inputs = {'X': self.input_data}
self.attrs = {'k': self.k, 'axis': self.axis, 'largest': self.largest}
output, indices = numpy_topk(
Expand All @@ -218,9 +231,11 @@ def setUp(self):
self.public_python_api = paddle.topk
self.dtype = np.uint16
self.prim_op_type = "prim"
self.input_data = np.random.rand(10, 20).astype(np.float32)
self.input_data = np.random.random([10, 20]).astype(np.float32)
self.init_args()
self.if_enable_cinn()
self.inputs = {'X': convert_float_to_uint16(self.input_data)}
self.input_data = convert_uint16_to_float(self.inputs['X'])
self.attrs = {'k': self.k, 'axis': self.axis, 'largest': self.largest}
output, indices = numpy_topk(
self.input_data, axis=self.axis, k=self.k, largest=self.largest
Expand All @@ -230,13 +245,16 @@ def setUp(self):
'Indices': indices,
}

def if_enable_cinn(self):
self.enable_cinn = False

def test_check_output(self):
place = core.CUDAPlace(0)
self.check_output_with_place(place, check_eager=True)
self.check_output_with_place(place)

def test_check_grad(self):
place = core.CUDAPlace(0)
self.check_grad_with_place(place, {'X'}, 'Out', check_eager=True)
self.check_grad_with_place(place, ['X'], 'Out', check_prim=True)


class TestTopKAPI(unittest.TestCase):
Expand Down
14 changes: 12 additions & 2 deletions test/legacy_test/test_transpose_op.py
Original file line number Diff line number Diff line change
Expand Up @@ -244,7 +244,7 @@ def setUp(self):
self.python_api = paddle.transpose
self.public_python_api = paddle.transpose
self.prim_op_type = "prim"
self.enable_cinn = False
self.if_enable_cinn()
x = np.random.random(self.shape).astype("float32")
self.inputs = {'X': convert_float_to_uint16(x)}
self.attrs = {
Expand All @@ -258,6 +258,9 @@ def setUp(self):
'Out': self.inputs['X'].transpose(self.axis),
}

def if_enable_cinn(self):
self.enable_cinn = False

def initTestCase(self):
fluid.core.set_autotune_range(0, 3)
fluid.core.update_autotune_status()
Expand All @@ -283,7 +286,7 @@ def setUp(self):
self.initTestCase()
self.dtype = np.float16
self.prim_op_type = "prim"
self.enable_cinn = False
self.if_enable_cinn()
self.python_api = paddle.transpose
self.public_python_api = paddle.transpose
x = np.random.random(self.shape).astype(self.dtype)
Expand All @@ -298,6 +301,9 @@ def setUp(self):
'Out': self.inputs['X'].transpose(self.axis),
}

def if_enable_cinn(self):
pass

def init_op_type(self):
self.op_type = "transpose2"
self.use_mkldnn = False
Expand All @@ -323,6 +329,7 @@ def setUp(self):
self.python_api = paddle.transpose
self.public_python_api = paddle.transpose
x = np.random.random(self.shape).astype("float32")
self.if_enable_cinn()

self.inputs = {'X': convert_float_to_uint16(x)}
self.attrs = {
Expand All @@ -336,6 +343,9 @@ def setUp(self):
'Out': self.inputs['X'].transpose(self.axis),
}

def if_enable_cinn(self):
self.enable_cinn = False

def init_op_type(self):
self.op_type = "transpose2"
self.use_mkldnn = False
Expand Down