未验证 提交 548efcd2 编写于 作者: Z Zhang Ting 提交者: GitHub

Fix unit tests to avoid check_grad checking failures (#21554)

* fix python API tests that do not need to inherit OpTest, test=develop

* fix fp16 cases that will only be enabled in GPU mode, test=develop

* remove TestSoftmaxFP16Op from test cases of softmax_mkldnn_op, test=develop

* fix tests so that the cases are only created in GPU mode, test=develop
上级 4ad9b755
...@@ -18,7 +18,7 @@ import unittest ...@@ -18,7 +18,7 @@ import unittest
import numpy as np import numpy as np
from paddle.fluid.tests.unittests.op_test import OpTest from paddle.fluid.tests.unittests.op_test import OpTest
import paddle.fluid.core as core import paddle.fluid.core as core
from paddle.fluid.tests.unittests.test_softmax_op import * from paddle.fluid.tests.unittests.test_softmax_op import TestSoftmaxOp, TestSoftmaxOp2, TestSoftmaxOp3, TestSoftmaxOp4, TestSoftmaxOp5, TestSoftmaxOp6
from mkldnn_op_test import check_if_mkldnn_primitives_exist_in_bwd from mkldnn_op_test import check_if_mkldnn_primitives_exist_in_bwd
......
...@@ -37,7 +37,7 @@ class TestAssignOp(op_test.OpTest): ...@@ -37,7 +37,7 @@ class TestAssignOp(op_test.OpTest):
self.check_grad(['X'], 'Out') self.check_grad(['X'], 'Out')
class TestAssignOpError(op_test.OpTest): class TestAssignOpError(unittest.TestCase):
def test_errors(self): def test_errors(self):
with program_guard(Program(), Program()): with program_guard(Program(), Program()):
# The type of input must be Variable or numpy.ndarray. # The type of input must be Variable or numpy.ndarray.
......
...@@ -22,6 +22,8 @@ from paddle.fluid import core ...@@ -22,6 +22,8 @@ from paddle.fluid import core
alignment = 256 alignment = 256
@unittest.skipIf(not core.is_compiled_with_cuda(),
"core is not compiled with CUDA")
class TestAllocContinuousSpace(OpTest): class TestAllocContinuousSpace(OpTest):
def setUp(self): def setUp(self):
self.op_type = "coalesce_tensor" self.op_type = "coalesce_tensor"
...@@ -78,13 +80,12 @@ class TestAllocContinuousSpace(OpTest): ...@@ -78,13 +80,12 @@ class TestAllocContinuousSpace(OpTest):
return outputs, coalesce_tensor_var return outputs, coalesce_tensor_var
def test_check_output(self): def test_check_output(self):
if core.is_compiled_with_cuda(): self.check_output_with_place(
self.check_output_with_place( place=core.CUDAPlace(0), no_check_set=["FusedOutput"], atol=1e-5)
place=core.CUDAPlace(0),
no_check_set=["FusedOutput"],
atol=1e-5)
@unittest.skipIf(not core.is_compiled_with_cuda(),
"core is not compiled with CUDA")
class TestAllocContinuousSpace2(TestAllocContinuousSpace): class TestAllocContinuousSpace2(TestAllocContinuousSpace):
def init_attr(self): def init_attr(self):
return { return {
...@@ -95,11 +96,8 @@ class TestAllocContinuousSpace2(TestAllocContinuousSpace): ...@@ -95,11 +96,8 @@ class TestAllocContinuousSpace2(TestAllocContinuousSpace):
} }
def test_check_output(self): def test_check_output(self):
if core.is_compiled_with_cuda(): self.check_output_with_place(
self.check_output_with_place( place=core.CUDAPlace(0), no_check_set=["FusedOutput"], atol=1e-5)
place=core.CUDAPlace(0),
no_check_set=["FusedOutput"],
atol=1e-5)
if __name__ == '__main__': if __name__ == '__main__':
......
...@@ -18,7 +18,7 @@ import unittest ...@@ -18,7 +18,7 @@ import unittest
import numpy as np import numpy as np
from op_test import OpTest from op_test import OpTest
import paddle.fluid as fluid import paddle.fluid as fluid
from paddle.fluid import compiler, Program, program_guard from paddle.fluid import compiler, Program, program_guard, core
class TestConcatOp(OpTest): class TestConcatOp(OpTest):
...@@ -134,6 +134,8 @@ create_test_AxisTensor(TestConcatOp5) ...@@ -134,6 +134,8 @@ create_test_AxisTensor(TestConcatOp5)
def create_test_fp16(parent): def create_test_fp16(parent):
@unittest.skipIf(not core.is_compiled_with_cuda(),
"core is not compiled with CUDA")
class TestConcatFp16(parent): class TestConcatFp16(parent):
def get_dtype(self): def get_dtype(self):
return np.float16 return np.float16
......
...@@ -697,7 +697,7 @@ class TestCUDNNExhaustiveSearch(TestConv2dOp): ...@@ -697,7 +697,7 @@ class TestCUDNNExhaustiveSearch(TestConv2dOp):
self.exhaustive_search = True self.exhaustive_search = True
class TestConv2dOpError(OpTest): class TestConv2dOpError(unittest.TestCase):
def test_errors(self): def test_errors(self):
with program_guard(Program(), Program()): with program_guard(Program(), Program()):
......
...@@ -210,6 +210,8 @@ def create_test_channel_last_class(parent): ...@@ -210,6 +210,8 @@ def create_test_channel_last_class(parent):
def create_test_cudnn_channel_last_class(parent): def create_test_cudnn_channel_last_class(parent):
@unittest.skipIf(not core.is_compiled_with_cuda(),
"core is not compiled with CUDA")
class TestCudnnChannelLastCase(parent): class TestCudnnChannelLastCase(parent):
def init_kernel_type(self): def init_kernel_type(self):
self.use_cudnn = True self.use_cudnn = True
...@@ -403,11 +405,15 @@ class TestWithDilation(TestConv3dOp): ...@@ -403,11 +405,15 @@ class TestWithDilation(TestConv3dOp):
#---------------- Conv3dCUDNN ---------------- #---------------- Conv3dCUDNN ----------------
@unittest.skipIf(not core.is_compiled_with_cuda(),
"core is not compiled with CUDA")
class TestCUDNN(TestConv3dOp): class TestCUDNN(TestConv3dOp):
def init_kernel_type(self): def init_kernel_type(self):
self.use_cudnn = True self.use_cudnn = True
@unittest.skipIf(not core.is_compiled_with_cuda(),
"core is not compiled with CUDA")
class TestFP16CUDNN(TestConv3dOp): class TestFP16CUDNN(TestConv3dOp):
def init_kernel_type(self): def init_kernel_type(self):
self.use_cudnn = True self.use_cudnn = True
...@@ -420,11 +426,15 @@ class TestFP16CUDNN(TestConv3dOp): ...@@ -420,11 +426,15 @@ class TestFP16CUDNN(TestConv3dOp):
self.check_output_with_place(place, atol=2e-2) self.check_output_with_place(place, atol=2e-2)
@unittest.skipIf(not core.is_compiled_with_cuda(),
"core is not compiled with CUDA")
class TestWithGroup1CUDNN(TestWithGroup1): class TestWithGroup1CUDNN(TestWithGroup1):
def init_kernel_type(self): def init_kernel_type(self):
self.use_cudnn = True self.use_cudnn = True
@unittest.skipIf(not core.is_compiled_with_cuda(),
"core is not compiled with CUDA")
class TestFP16WithGroup1CUDNN(TestWithGroup1): class TestFP16WithGroup1CUDNN(TestWithGroup1):
def init_kernel_type(self): def init_kernel_type(self):
self.use_cudnn = True self.use_cudnn = True
...@@ -437,11 +447,15 @@ class TestFP16WithGroup1CUDNN(TestWithGroup1): ...@@ -437,11 +447,15 @@ class TestFP16WithGroup1CUDNN(TestWithGroup1):
self.check_output_with_place(place, atol=2e-2) self.check_output_with_place(place, atol=2e-2)
@unittest.skipIf(not core.is_compiled_with_cuda(),
"core is not compiled with CUDA")
class TestWithGroup2CUDNN(TestWithGroup2): class TestWithGroup2CUDNN(TestWithGroup2):
def init_kernel_type(self): def init_kernel_type(self):
self.use_cudnn = True self.use_cudnn = True
@unittest.skipIf(not core.is_compiled_with_cuda(),
"core is not compiled with CUDA")
class TestFP16WithGroup2CUDNN(TestWithGroup2): class TestFP16WithGroup2CUDNN(TestWithGroup2):
def init_kernel_type(self): def init_kernel_type(self):
self.use_cudnn = True self.use_cudnn = True
...@@ -454,11 +468,15 @@ class TestFP16WithGroup2CUDNN(TestWithGroup2): ...@@ -454,11 +468,15 @@ class TestFP16WithGroup2CUDNN(TestWithGroup2):
self.check_output_with_place(place, atol=2e-2) self.check_output_with_place(place, atol=2e-2)
@unittest.skipIf(not core.is_compiled_with_cuda(),
"core is not compiled with CUDA")
class TestWith1x1CUDNN(TestWith1x1): class TestWith1x1CUDNN(TestWith1x1):
def init_kernel_type(self): def init_kernel_type(self):
self.use_cudnn = True self.use_cudnn = True
@unittest.skipIf(not core.is_compiled_with_cuda(),
"core is not compiled with CUDA")
class TestFP16With1x1CUDNN(TestWith1x1): class TestFP16With1x1CUDNN(TestWith1x1):
def init_kernel_type(self): def init_kernel_type(self):
self.use_cudnn = True self.use_cudnn = True
...@@ -471,11 +489,15 @@ class TestFP16With1x1CUDNN(TestWith1x1): ...@@ -471,11 +489,15 @@ class TestFP16With1x1CUDNN(TestWith1x1):
self.check_output_with_place(place, atol=2e-2) self.check_output_with_place(place, atol=2e-2)
@unittest.skipIf(not core.is_compiled_with_cuda(),
"core is not compiled with CUDA")
class TestWithInput1x1Filter1x1CUDNN(TestWithInput1x1Filter1x1): class TestWithInput1x1Filter1x1CUDNN(TestWithInput1x1Filter1x1):
def init_kernel_type(self): def init_kernel_type(self):
self.use_cudnn = True self.use_cudnn = True
@unittest.skipIf(not core.is_compiled_with_cuda(),
"core is not compiled with CUDA")
class TestFP16WithInput1x1Filter1x1CUDNN(TestWithInput1x1Filter1x1): class TestFP16WithInput1x1Filter1x1CUDNN(TestWithInput1x1Filter1x1):
def init_kernel_type(self): def init_kernel_type(self):
self.use_cudnn = True self.use_cudnn = True
......
...@@ -359,7 +359,7 @@ create_test_class(TestCrossEntropyOp7RemoveLastDim, ...@@ -359,7 +359,7 @@ create_test_class(TestCrossEntropyOp7RemoveLastDim,
"TestCrossEntropyF16Op7RemoveLastDim") "TestCrossEntropyF16Op7RemoveLastDim")
class TestCrossEntropyOpError(OpTest): class TestCrossEntropyOpError(unittest.TestCase):
def test_errors(self): def test_errors(self):
with program_guard(Program(), Program()): with program_guard(Program(), Program()):
......
...@@ -278,7 +278,7 @@ class TestDataNormOpWithSlotDim(OpTest): ...@@ -278,7 +278,7 @@ class TestDataNormOpWithSlotDim(OpTest):
self.check_grad(['X'], 'Y', no_grad_set=set([]), check_dygraph=False) self.check_grad(['X'], 'Y', no_grad_set=set([]), check_dygraph=False)
class TestDataNormOpWithSyncStats(OpTest): class TestDataNormOpWithSyncStats(unittest.TestCase):
""" """
test class for data norm op test class for data norm op
test forward and backward test forward and backward
......
...@@ -89,6 +89,8 @@ class TestElementwiseAddOp(OpTest): ...@@ -89,6 +89,8 @@ class TestElementwiseAddOp(OpTest):
pass pass
@unittest.skipIf(not core.is_compiled_with_cuda(),
"core is not compiled with CUDA")
class TestFP16ElementwiseAddOp(TestElementwiseAddOp): class TestFP16ElementwiseAddOp(TestElementwiseAddOp):
def init_dtype(self): def init_dtype(self):
self.dtype = np.float16 self.dtype = np.float16
......
...@@ -15,6 +15,7 @@ ...@@ -15,6 +15,7 @@
from __future__ import print_function from __future__ import print_function
import unittest import unittest
import numpy as np import numpy as np
import paddle.fluid.core as core
from op_test import OpTest from op_test import OpTest
...@@ -204,6 +205,8 @@ class TestElementwiseDivOp_INT(OpTest): ...@@ -204,6 +205,8 @@ class TestElementwiseDivOp_INT(OpTest):
pass pass
@unittest.skipIf(not core.is_compiled_with_cuda(),
"core is not compiled with CUDA")
class TestElementwiseDivOpFp16(ElementwiseDivOp): class TestElementwiseDivOpFp16(ElementwiseDivOp):
def init_dtype(self): def init_dtype(self):
self.dtype = np.float16 self.dtype = np.float16
......
...@@ -177,6 +177,8 @@ class TestElementwiseMulOp_broadcast_5(ElementwiseMulOp): ...@@ -177,6 +177,8 @@ class TestElementwiseMulOp_broadcast_5(ElementwiseMulOp):
self.init_kernel_type() self.init_kernel_type()
@unittest.skipIf(not core.is_compiled_with_cuda(),
"core is not compiled with CUDA")
class TestElementwiseMulOpFp16(ElementwiseMulOp): class TestElementwiseMulOpFp16(ElementwiseMulOp):
def init_dtype(self): def init_dtype(self):
self.dtype = np.float16 self.dtype = np.float16
......
...@@ -90,7 +90,7 @@ class TestFillConstantBatchSizeLikeWithLoDTensor(OpTest): ...@@ -90,7 +90,7 @@ class TestFillConstantBatchSizeLikeWithLoDTensor(OpTest):
# Test python API # Test python API
class TestFillConstantBatchSizeLikeAPI(OpTest): class TestFillConstantBatchSizeLikeAPI(unittest.TestCase):
def test_api(self): def test_api(self):
like = fluid.layers.fill_constant( like = fluid.layers.fill_constant(
shape=[1, 200], value=10, dtype='int64') shape=[1, 200], value=10, dtype='int64')
......
...@@ -325,29 +325,11 @@ for mode in {0, 1}: ...@@ -325,29 +325,11 @@ for mode in {0, 1}:
'functor_list': ["scale", "elementwise_add"], 'functor_list': ["scale", "elementwise_add"],
'save_intermediate_out': save_intermediate_out, 'save_intermediate_out': save_intermediate_out,
}) })
create_test_class(
'scale_add_fp16' + suffix,
scale_add_func, {
'scale': scale,
'functor_list': ["scale", "elementwise_add"],
'save_intermediate_out': save_intermediate_out,
},
dtype=np.float16,
grad_chek=False)
create_test_class('add_scale' + suffix, add_scale_func, { create_test_class('add_scale' + suffix, add_scale_func, {
'scale': scale, 'scale': scale,
'functor_list': ["elementwise_add", "scale"], 'functor_list': ["elementwise_add", "scale"],
'save_intermediate_out': save_intermediate_out, 'save_intermediate_out': save_intermediate_out,
}) })
create_test_class(
'add_scale_fp16' + suffix,
add_scale_func, {
'scale': scale,
'functor_list': ["elementwise_add", "scale"],
'save_intermediate_out': save_intermediate_out,
},
dtype=np.float16,
grad_chek=False)
create_test_class('add_relu' + suffix, add_relu_func, { create_test_class('add_relu' + suffix, add_relu_func, {
'functor_list': ["elementwise_add", "relu"], 'functor_list': ["elementwise_add", "relu"],
'save_intermediate_out': save_intermediate_out, 'save_intermediate_out': save_intermediate_out,
...@@ -356,36 +338,56 @@ for mode in {0, 1}: ...@@ -356,36 +338,56 @@ for mode in {0, 1}:
'functor_list': ["relu", "elementwise_add"], 'functor_list': ["relu", "elementwise_add"],
'save_intermediate_out': save_intermediate_out, 'save_intermediate_out': save_intermediate_out,
}) })
create_test_class(
'add_relu_fp16' + suffix,
add_relu_func, {
'functor_list': ["elementwise_add", "relu"],
'save_intermediate_out': save_intermediate_out,
},
dtype=np.float16,
grad_chek=False)
create_test_class(
'relu_add_fp16' + suffix,
relu_add_func, {
'functor_list': ["relu", "elementwise_add"],
'save_intermediate_out': save_intermediate_out,
},
dtype=np.float16,
grad_chek=False)
create_test_class('mul_scale' + suffix, mul_scale_func, { create_test_class('mul_scale' + suffix, mul_scale_func, {
'scale': scale, 'scale': scale,
'functor_list': ["elementwise_mul", "scale"], 'functor_list': ["elementwise_mul", "scale"],
'save_intermediate_out': save_intermediate_out, 'save_intermediate_out': save_intermediate_out,
}) })
create_test_class( if core.is_compiled_with_cuda():
'mul_scale' + suffix, create_test_class(
mul_scale_func, { 'scale_add_fp16' + suffix,
'scale': scale, scale_add_func, {
'functor_list': ["elementwise_mul", "scale"], 'scale': scale,
'save_intermediate_out': save_intermediate_out, 'functor_list': ["scale", "elementwise_add"],
}, 'save_intermediate_out': save_intermediate_out,
dtype=np.float16, },
grad_chek=False) dtype=np.float16,
grad_chek=False)
create_test_class(
'add_scale_fp16' + suffix,
add_scale_func, {
'scale': scale,
'functor_list': ["elementwise_add", "scale"],
'save_intermediate_out': save_intermediate_out,
},
dtype=np.float16,
grad_chek=False)
create_test_class(
'add_relu_fp16' + suffix,
add_relu_func, {
'functor_list': ["elementwise_add", "relu"],
'save_intermediate_out': save_intermediate_out,
},
dtype=np.float16,
grad_chek=False)
create_test_class(
'relu_add_fp16' + suffix,
relu_add_func, {
'functor_list': ["relu", "elementwise_add"],
'save_intermediate_out': save_intermediate_out,
},
dtype=np.float16,
grad_chek=False)
create_test_class(
'mul_scale_fp16' + suffix,
mul_scale_func, {
'scale': scale,
'functor_list': ["elementwise_mul", "scale"],
'save_intermediate_out': save_intermediate_out,
},
dtype=np.float16,
grad_chek=False)
if __name__ == '__main__': if __name__ == '__main__':
unittest.main() unittest.main()
...@@ -20,6 +20,8 @@ from op_test import OpTest ...@@ -20,6 +20,8 @@ from op_test import OpTest
import paddle.fluid.core as core import paddle.fluid.core as core
@unittest.skipIf(not core.is_compiled_with_cuda(),
"core is not compiled with CUDA")
class TestFusionTransposeFlattenConcationOp(OpTest): class TestFusionTransposeFlattenConcationOp(OpTest):
def setUp(self): def setUp(self):
self.init_test_case() self.init_test_case()
...@@ -48,11 +50,8 @@ class TestFusionTransposeFlattenConcationOp(OpTest): ...@@ -48,11 +50,8 @@ class TestFusionTransposeFlattenConcationOp(OpTest):
self.outputs = {'Out': out} self.outputs = {'Out': out}
def test_check_output(self): def test_check_output(self):
if core.is_compiled_with_cuda(): place = core.CUDAPlace(0)
place = core.CUDAPlace(0) self.check_output_with_place(place, 1e-6)
self.check_output_with_place(place, 1e-6)
else:
pass
def init_test_case(self): def init_test_case(self):
self.shapes = [(3, 4, 17, 17), (3, 8, 7, 7), (3, 12, 5, 5)] self.shapes = [(3, 4, 17, 17), (3, 8, 7, 7), (3, 12, 5, 5)]
...@@ -61,6 +60,8 @@ class TestFusionTransposeFlattenConcationOp(OpTest): ...@@ -61,6 +60,8 @@ class TestFusionTransposeFlattenConcationOp(OpTest):
self.concat_axis = 1 self.concat_axis = 1
@unittest.skipIf(not core.is_compiled_with_cuda(),
"core is not compiled with CUDA")
class TestCase1(TestFusionTransposeFlattenConcationOp): class TestCase1(TestFusionTransposeFlattenConcationOp):
def init_test_case(self): def init_test_case(self):
self.shapes = [(3, 4, 18, 17), (3, 8, 18, 7), (6, 12, 9, 5)] self.shapes = [(3, 4, 18, 17), (3, 8, 18, 7), (6, 12, 9, 5)]
...@@ -69,6 +70,8 @@ class TestCase1(TestFusionTransposeFlattenConcationOp): ...@@ -69,6 +70,8 @@ class TestCase1(TestFusionTransposeFlattenConcationOp):
self.concat_axis = 1 self.concat_axis = 1
@unittest.skipIf(not core.is_compiled_with_cuda(),
"core is not compiled with CUDA")
class TestCase2(TestFusionTransposeFlattenConcationOp): class TestCase2(TestFusionTransposeFlattenConcationOp):
def init_test_case(self): def init_test_case(self):
self.shapes = [(3, 8, 20, 17), (3, 8, 19, 17), (3, 8, 40, 17)] self.shapes = [(3, 8, 20, 17), (3, 8, 19, 17), (3, 8, 40, 17)]
...@@ -77,6 +80,8 @@ class TestCase2(TestFusionTransposeFlattenConcationOp): ...@@ -77,6 +80,8 @@ class TestCase2(TestFusionTransposeFlattenConcationOp):
self.concat_axis = 0 self.concat_axis = 0
@unittest.skipIf(not core.is_compiled_with_cuda(),
"core is not compiled with CUDA")
class TestCase3(TestFusionTransposeFlattenConcationOp): class TestCase3(TestFusionTransposeFlattenConcationOp):
def init_test_case(self): def init_test_case(self):
self.shapes = [(3, 8, 20, 17), (3, 8, 19, 17), (3, 8, 40, 17)] self.shapes = [(3, 8, 20, 17), (3, 8, 19, 17), (3, 8, 40, 17)]
...@@ -85,6 +90,8 @@ class TestCase3(TestFusionTransposeFlattenConcationOp): ...@@ -85,6 +90,8 @@ class TestCase3(TestFusionTransposeFlattenConcationOp):
self.concat_axis = 1 self.concat_axis = 1
@unittest.skipIf(not core.is_compiled_with_cuda(),
"core is not compiled with CUDA")
class TestCase4(TestFusionTransposeFlattenConcationOp): class TestCase4(TestFusionTransposeFlattenConcationOp):
def init_test_case(self): def init_test_case(self):
self.shapes = [(3, 8, 9, 17), (8, 3, 9, 17), (4, 6, 9, 17)] self.shapes = [(3, 8, 9, 17), (8, 3, 9, 17), (4, 6, 9, 17)]
...@@ -93,6 +100,8 @@ class TestCase4(TestFusionTransposeFlattenConcationOp): ...@@ -93,6 +100,8 @@ class TestCase4(TestFusionTransposeFlattenConcationOp):
self.concat_axis = 1 self.concat_axis = 1
@unittest.skipIf(not core.is_compiled_with_cuda(),
"core is not compiled with CUDA")
class TestCase5(TestFusionTransposeFlattenConcationOp): class TestCase5(TestFusionTransposeFlattenConcationOp):
def init_test_case(self): def init_test_case(self):
self.shapes = [(3, 8, 9, 17, 2), (3, 8, 2, 17, 9), (3, 17, 9, 8, 2)] self.shapes = [(3, 8, 9, 17, 2), (3, 8, 2, 17, 9), (3, 17, 9, 8, 2)]
......
...@@ -14,6 +14,7 @@ ...@@ -14,6 +14,7 @@
import unittest import unittest
import numpy as np import numpy as np
import paddle.fluid.core as core
from op_test import OpTest from op_test import OpTest
...@@ -37,6 +38,8 @@ class TestInf(OpTest): ...@@ -37,6 +38,8 @@ class TestInf(OpTest):
self.check_output() self.check_output()
@unittest.skipIf(not core.is_compiled_with_cuda(),
"core is not compiled with CUDA")
class TestFP16Inf(TestInf): class TestFP16Inf(TestInf):
def init_dtype(self): def init_dtype(self):
self.dtype = np.float16 self.dtype = np.float16
...@@ -62,6 +65,8 @@ class TestNAN(OpTest): ...@@ -62,6 +65,8 @@ class TestNAN(OpTest):
self.check_output() self.check_output()
@unittest.skipIf(not core.is_compiled_with_cuda(),
"core is not compiled with CUDA")
class TestFP16NAN(TestNAN): class TestFP16NAN(TestNAN):
def init_dtype(self): def init_dtype(self):
self.dtype = np.float16 self.dtype = np.float16
...@@ -88,6 +93,8 @@ class TestIsfinite(OpTest): ...@@ -88,6 +93,8 @@ class TestIsfinite(OpTest):
self.check_output() self.check_output()
@unittest.skipIf(not core.is_compiled_with_cuda(),
"core is not compiled with CUDA")
class TestFP16Isfinite(TestIsfinite): class TestFP16Isfinite(TestIsfinite):
def init_dtype(self): def init_dtype(self):
self.dtype = np.float16 self.dtype = np.float16
......
...@@ -116,6 +116,8 @@ def lstm_naive( ...@@ -116,6 +116,8 @@ def lstm_naive(
return output, pre_h, pre_c return output, pre_h, pre_c
@unittest.skipIf(not core.is_compiled_with_cuda(),
"core is not compiled with CUDA")
class TestCUDNNLstmOp(OpTest): class TestCUDNNLstmOp(OpTest):
def setUp(self): def setUp(self):
self.op_type = "cudnn_lstm" self.op_type = "cudnn_lstm"
...@@ -172,23 +174,17 @@ class TestCUDNNLstmOp(OpTest): ...@@ -172,23 +174,17 @@ class TestCUDNNLstmOp(OpTest):
def test_output_with_place(self): def test_output_with_place(self):
# depend on the scope structure # depend on the scope structure
if self.has_cuda(): place = core.CUDAPlace(0)
place = core.CUDAPlace(0) self.check_output_with_place(place, atol=1e-5, check_dygraph=False)
self.check_output_with_place(place, atol=1e-5, check_dygraph=False)
def test_grad_with_place(self): def test_grad_with_place(self):
# depend on the scope structure # depend on the scope structure
if core.is_compiled_with_cuda(): place = core.CUDAPlace(0)
place = core.CUDAPlace(0) self.check_grad_with_place(
self.check_grad_with_place( place,
place, set(['Input', 'W', 'InitH', 'InitC']), ['Out', 'last_h', 'last_c'],
set(['Input', 'W', 'InitH', 'InitC']), max_relative_error=0.02,
['Out', 'last_h', 'last_c'], check_dygraph=False)
max_relative_error=0.02,
check_dygraph=False)
def has_cuda(self):
return core.is_compiled_with_cuda()
if __name__ == '__main__': if __name__ == '__main__':
......
...@@ -114,7 +114,7 @@ class Generator(object): ...@@ -114,7 +114,7 @@ class Generator(object):
['X'], 'Out', max_relative_error=1e-3, no_grad_set=set('Y')) ['X'], 'Out', max_relative_error=1e-3, no_grad_set=set('Y'))
class TestMatmulOpError(OpTest): class TestMatmulOpError(unittest.TestCase):
def test_errors(self): def test_errors(self):
with program_guard(Program(), Program()): with program_guard(Program(), Program()):
# The inputs type of matmul_op must be Variable. # The inputs type of matmul_op must be Variable.
...@@ -173,7 +173,7 @@ def api_test(dim_x, dim_y, trans_x, trans_y): ...@@ -173,7 +173,7 @@ def api_test(dim_x, dim_y, trans_x, trans_y):
dim_x, dim_y, trans_x, trans_y)) dim_x, dim_y, trans_x, trans_y))
shape_x, shape_y = generate_compatible_shapes(dim_x, dim_y, trans_x, shape_x, shape_y = generate_compatible_shapes(dim_x, dim_y, trans_x,
trans_y) trans_y)
globals()[test_name] = type(test_name, (OpTest, ), { globals()[test_name] = type(test_name, (unittest.TestCase, ), {
'shape_X': shape_x, 'shape_X': shape_x,
'shape_Y': shape_y, 'shape_Y': shape_y,
'transpose_X': trans_x, 'transpose_X': trans_x,
......
...@@ -220,7 +220,7 @@ class TestNCECase1SelectedRows(unittest.TestCase): ...@@ -220,7 +220,7 @@ class TestNCECase1SelectedRows(unittest.TestCase):
self.assertEqual(rets[0], rets[1]) self.assertEqual(rets[0], rets[1])
class TestNCE_OpError(OpTest): class TestNCE_OpError(unittest.TestCase):
def test_errors(self): def test_errors(self):
with program_guard(Program(), Program()): with program_guard(Program(), Program()):
input1 = fluid.create_lod_tensor( input1 = fluid.create_lod_tensor(
......
...@@ -17,6 +17,7 @@ from __future__ import print_function ...@@ -17,6 +17,7 @@ from __future__ import print_function
import unittest import unittest
import numpy as np import numpy as np
from op_test import OpTest from op_test import OpTest
import paddle.fluid.core as core
class TestPadOp(OpTest): class TestPadOp(OpTest):
...@@ -75,6 +76,8 @@ class TestCase3(TestPadOp): ...@@ -75,6 +76,8 @@ class TestCase3(TestPadOp):
def create_test_fp16(parent): def create_test_fp16(parent):
@unittest.skipIf(not core.is_compiled_with_cuda(),
"core is not compiled with CUDA")
class TestPadFp16(parent): class TestPadFp16(parent):
def get_dtype(self): def get_dtype(self):
return np.float16 return np.float16
......
...@@ -36,7 +36,7 @@ class TestSignOp(OpTest): ...@@ -36,7 +36,7 @@ class TestSignOp(OpTest):
self.check_grad(['X'], 'Out') self.check_grad(['X'], 'Out')
class TestSignOpError(OpTest): class TestSignOpError(unittest.TestCase):
def test_errors(self): def test_errors(self):
with program_guard(Program(), Program()): with program_guard(Program(), Program()):
# The input type of sign_op must be Variable or numpy.ndarray. # The input type of sign_op must be Variable or numpy.ndarray.
......
...@@ -16,6 +16,7 @@ from __future__ import print_function ...@@ -16,6 +16,7 @@ from __future__ import print_function
import unittest import unittest
import numpy as np import numpy as np
import paddle.fluid.core as core
from op_test import OpTest from op_test import OpTest
from test_softmax_op import stable_softmax from test_softmax_op import stable_softmax
...@@ -106,6 +107,8 @@ class TestSoftmaxWithCrossEntropyOpNoCudnn(TestSoftmaxWithCrossEntropyOp): ...@@ -106,6 +107,8 @@ class TestSoftmaxWithCrossEntropyOpNoCudnn(TestSoftmaxWithCrossEntropyOp):
self.dtype = np.float64 self.dtype = np.float64
@unittest.skipIf(not core.is_compiled_with_cuda(),
"core is not compiled with CUDA")
class TestSoftmaxWithCrossEntropyOpFp16(TestSoftmaxWithCrossEntropyOp): class TestSoftmaxWithCrossEntropyOpFp16(TestSoftmaxWithCrossEntropyOp):
def initParams(self): def initParams(self):
self.op_type = "softmax_with_cross_entropy" self.op_type = "softmax_with_cross_entropy"
......
...@@ -18,7 +18,7 @@ import unittest ...@@ -18,7 +18,7 @@ import unittest
import numpy as np import numpy as np
from op_test import OpTest from op_test import OpTest
import paddle.fluid as fluid import paddle.fluid as fluid
from paddle.fluid import compiler, Program, program_guard from paddle.fluid import compiler, Program, program_guard, core
class TestSplitOp(OpTest): class TestSplitOp(OpTest):
...@@ -210,6 +210,8 @@ class TestSplitByrefOp(OpTest): ...@@ -210,6 +210,8 @@ class TestSplitByrefOp(OpTest):
def create_test_fp16(parent): def create_test_fp16(parent):
@unittest.skipIf(not core.is_compiled_with_cuda(),
"core is not compiled with CUDA")
class TestSplitFp16(parent): class TestSplitFp16(parent):
def get_dtype(self): def get_dtype(self):
return np.float16 return np.float16
......
...@@ -80,7 +80,7 @@ class TestCase4(TestTransposeOp): ...@@ -80,7 +80,7 @@ class TestCase4(TestTransposeOp):
self.axis = (4, 2, 3, 1, 0, 5) self.axis = (4, 2, 3, 1, 0, 5)
class TestTransposeOpError(OpTest): class TestTransposeOpError(unittest.TestCase):
def test_errors(self): def test_errors(self):
with program_guard(Program(), Program()): with program_guard(Program(), Program()):
x = fluid.layers.data(name='x', shape=[10, 5, 3], dtype='float32') x = fluid.layers.data(name='x', shape=[10, 5, 3], dtype='float32')
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册