Skip to content
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
6 changes: 5 additions & 1 deletion paddle/fluid/framework/selected_rows_utils.cc
Original file line number Diff line number Diff line change
Expand Up @@ -72,8 +72,12 @@ void DeserializeFromStream(std::istream& is,
}
{
// the 2st field, rows information
uint64_t size;
uint64_t size = 0;
is.read(reinterpret_cast<char*>(&size), sizeof(size));
PADDLE_ENFORCE_EQ(
is.good(),
true,
platform::errors::Unavailable("Cannot read the number of rows."));
auto& rows = *selected_rows->mutable_rows();
rows.resize(size);
for (uint64_t i = 0; i < size; ++i) {
Expand Down
2 changes: 1 addition & 1 deletion python/paddle/fluid/contrib/slim/tests/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -524,7 +524,7 @@ if(NOT WIN32)
set_tests_properties(test_post_training_quantization_program_resnet50
PROPERTIES TIMEOUT 240)
set_tests_properties(test_post_training_quantization_mobilenetv1
PROPERTIES TIMEOUT 600 LABELS "RUN_TYPE=NIGHTLY")
PROPERTIES TIMEOUT 900 LABELS "RUN_TYPE=NIGHTLY")
set_tests_properties(test_post_training_quantization_resnet50
PROPERTIES TIMEOUT 600 LABELS "RUN_TYPE=NIGHTLY")
set_tests_properties(test_post_training_quantization_mnist PROPERTIES TIMEOUT
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -241,6 +241,8 @@ def run_program(self, model_path, batch_size, infer_iterations):
def generate_quantized_model(self,
model_path,
quantizable_op_type,
batch_size,
batch_nums,
algo="KL",
round_type="round",
is_full_quantize=False,
Expand All @@ -262,6 +264,8 @@ def generate_quantized_model(self,
ptq = PostTrainingQuantization(executor=exe,
sample_generator=val_reader,
model_dir=model_path,
batch_size=batch_size,
batch_nums=batch_nums,
algo=algo,
quantizable_op_type=quantizable_op_type,
round_type=round_type,
Expand Down Expand Up @@ -299,7 +303,8 @@ def run_test(self,
print("Start INT8 post training quantization for {0} on {1} images ...".
format(model, sample_iterations * batch_size))
self.generate_quantized_model(os.path.join(model_cache_folder, "model"),
quantizable_op_type, algo, round_type,
quantizable_op_type, batch_size,
sample_iterations, algo, round_type,
is_full_quantize, is_use_cache_file,
is_optimize_model, onnx_format)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -225,8 +225,8 @@ def check_output_with_option(self,
tensorrt_output = tensorrt_output.flatten()

np.testing.assert_allclose(
paddle_out,
tensorrt_output,
paddle_out,
rtol=rtol,
atol=atol,
err_msg='Output has diff between GPU and TensorRT. ')
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,11 +47,11 @@ def sample_program_configs(self):
self.trt_param.workspace_size = 1073741824

def generate_input1(batch, attrs: List[Dict[str, Any]]):
return np.ones([batch, attrs[0]['groups'] * 3, 64,
64]).astype(np.float32)
return np.ones([batch, attrs[0]['groups'] * 3, 64, 64]).astype(
np.float32) / 4

def generate_weight1(attrs: List[Dict[str, Any]]):
return np.random.random([24, 3, 3, 3]).astype(np.float32)
return np.random.random([9, 3, 3, 3]).astype(np.float32) - 0.5

batch_options = [1, 2]
strides_options = [[2, 2], [1, 2]]
Expand Down Expand Up @@ -162,7 +162,7 @@ def generate_trt_nodes_num(attrs, dynamic_shape):
attrs, False), (1e-3, 1e-3)
self.trt_param.precision = paddle_infer.PrecisionType.Int8
yield self.create_inference_config(), generate_trt_nodes_num(
attrs, False), (1e-3, 1e-3)
attrs, False), (1e-2, 1e-2)

# for dynamic_shape
generate_dynamic_shape(attrs)
Expand All @@ -174,7 +174,7 @@ def generate_trt_nodes_num(attrs, dynamic_shape):
attrs, True), (1e-3, 1e-3)
self.trt_param.precision = paddle_infer.PrecisionType.Int8
yield self.create_inference_config(), generate_trt_nodes_num(
attrs, True), (1e-3, 1e-3)
attrs, True), (1e-2, 1e-2)

def test(self):
self.run_test()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -128,7 +128,7 @@ def generate_trt_nodes_num(attrs, dynamic_shape):
attrs, False), 1e-5
self.trt_param.precision = paddle_infer.PrecisionType.Half
yield self.create_inference_config(), generate_trt_nodes_num(
attrs, False), 1e-5
attrs, False), (1e-3, 1e-3)

# for dynamic_shape
generate_dynamic_shape(attrs)
Expand All @@ -137,7 +137,7 @@ def generate_trt_nodes_num(attrs, dynamic_shape):
attrs, True), 1e-5
self.trt_param.precision = paddle_infer.PrecisionType.Half
yield self.create_inference_config(), generate_trt_nodes_num(
attrs, True), 1e-5
attrs, True), (1e-3, 1e-3)

def test(self):
self.run_test()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,9 +44,9 @@ def sample_program_configs(self):

def generate_input1(dtype, attrs: List[Dict[str, Any]]):
if dtype == -1 or dtype == 5:
return np.random.random([1, 3, 64, 64]).astype(np.float32)
return np.random.random([1, 3, 32, 32]).astype(np.float32)
elif dtype == 2:
return np.random.random([1, 3, 64, 64]).astype(np.int32)
return np.random.random([1, 3, 32, 32]).astype(np.int32)

for keep_dim in [True, False]:
for dim in [[], [1], [0], [0, 1], [1, 2, 3], [-2, 0, 3], [-3],
Expand Down Expand Up @@ -93,7 +93,7 @@ def sample_predictor_configs(self, program_config):
def generate_dynamic_shape(attrs):
self.dynamic_shape.min_input_shape = {"input_data": [1, 3, 32, 32]}
self.dynamic_shape.max_input_shape = {"input_data": [4, 3, 64, 64]}
self.dynamic_shape.opt_input_shape = {"input_data": [1, 3, 64, 64]}
self.dynamic_shape.opt_input_shape = {"input_data": [1, 3, 32, 32]}

def clear_dynamic_shape():
self.dynamic_shape.min_input_shape = {}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -154,7 +154,7 @@ def sample_program_config(self, draw):

def test(self):
self.run_and_statis(quant=False,
max_examples=50,
max_examples=25,
passes=["trt_flatten2_matmul_fuse_pass"])


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,14 @@ def check_output(self):
shutil.rmtree(self.path + "_opt_cache")
if core.is_compiled_with_cuda():
use_gpu = True
self.check_output_with_option(use_gpu)
if self.precision == AnalysisConfig.Precision.Float32:
atol, rtol = (1e-5, 1e-5)
elif self.precision == AnalysisConfig.Precision.Half:
atol, rtol = (1e-3, 1e-3)
else:
raise ValueError("Unsupported precision {}".format(
self.precision))
self.check_output_with_option(use_gpu, atol=atol, rtol=rtol)
self.assertTrue(
PassVersionChecker.IsCompatible('tensorrt_subgraph_pass'))

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,14 @@ def check_output(self):
shutil.rmtree(self.path + "_opt_cache")
if core.is_compiled_with_cuda():
use_gpu = True
self.check_output_with_option(use_gpu)
if self.precision == AnalysisConfig.Precision.Float32:
atol, rtol = (1e-5, 1e-5)
elif self.precision == AnalysisConfig.Precision.Half:
atol, rtol = (1e-3, 1e-3)
else:
raise ValueError("Unsupported precision {}".format(
self.precision))
self.check_output_with_option(use_gpu, atol=atol, rtol=rtol)
self.assertTrue(
PassVersionChecker.IsCompatible('tensorrt_subgraph_pass'))

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -218,7 +218,10 @@ def setUp(self):
def test_check_output(self):
if core.is_compiled_with_cuda():
use_gpu = True
self.check_output_with_option(use_gpu, flatten=True)
self.check_output_with_option(use_gpu,
flatten=True,
atol=1e-3,
rtol=1e-3)
self.assertTrue(
PassVersionChecker.IsCompatible('tensorrt_subgraph_pass'))

Expand All @@ -244,7 +247,10 @@ def setUp(self):
def test_check_output(self):
if core.is_compiled_with_cuda():
use_gpu = True
self.check_output_with_option(use_gpu, flatten=True)
self.check_output_with_option(use_gpu,
flatten=True,
atol=1e-3,
rtol=1e-3)
self.assertTrue(
PassVersionChecker.IsCompatible('tensorrt_subgraph_pass'))

Expand Down
11 changes: 8 additions & 3 deletions python/paddle/fluid/tests/unittests/test_einsum_v2.py
Original file line number Diff line number Diff line change
Expand Up @@ -530,21 +530,26 @@ def test_shape(self):
self.assertEqual(C.shape, (-1, 384))


@unittest.skipIf(not core.is_compiled_with_cuda()
or not core.is_bfloat16_supported(core.CUDAPlace(0)),
"core is not compiled with CUDA or not support the bfloat16")
class TestBF16(unittest.TestCase):
"""
EinsumOp support bfloat16 type, add unittest here for the correctness.
"""

def test_shape(self):
if paddle.is_compiled_with_cuda() and _is_gpu_bfloat16_supported():
""" MatmulKernel support bfloat16 only if cuda_major >= 11.0 and Compute Capability >= 8.0
cuda_major = paddle.version.cuda().split('.')[0].strip()
if int(cuda_major) >= 11:
""" MatmulKernel support bfloat16 only if cuda_major > 11.0.
"""
A = paddle.to_tensor(np.array([1.0, 2.0])).astype(paddle.bfloat16)
A = A.cuda()
B = paddle.to_tensor(np.array([2.0, 3.0])).astype(paddle.bfloat16)
B = B.cuda()
C = paddle.einsum('i,i->', A, B)
self.assertEqual(C.astype(paddle.float32).item(), 8.0)
D = paddle.to_tensor(8.0).astype(paddle.bfloat16)
self.assertEqual(C.item(), D.item())


class TestComplex(unittest.TestCase):
Expand Down