diff --git a/paddle/fluid/lite/core/op_registry.cc b/paddle/fluid/lite/core/op_registry.cc index 8c3e44733df0f868a5881e1c0d3140a2ea5cf518..131bdc641d06dffeae35c218be8a5984601d23b2 100644 --- a/paddle/fluid/lite/core/op_registry.cc +++ b/paddle/fluid/lite/core/op_registry.cc @@ -96,6 +96,7 @@ KernelRegistry::KernelRegistry() INIT_FOR(kX86, kAny, kAny); INIT_FOR(kARM, kFloat, kNCHW); + INIT_FOR(kARM, kInt8, kNCHW); INIT_FOR(kARM, kAny, kNCHW); INIT_FOR(kARM, kAny, kAny); #undef INIT_FOR diff --git a/paddle/fluid/lite/kernels/arm/calib_compute.cc b/paddle/fluid/lite/kernels/arm/calib_compute.cc index c64ebdc13db9794587a179d645543fdef595dc8f..78500048ec7e2b153a81512fb902609220393b16 100644 --- a/paddle/fluid/lite/kernels/arm/calib_compute.cc +++ b/paddle/fluid/lite/kernels/arm/calib_compute.cc @@ -50,7 +50,7 @@ void CalibCompute::Run() { } // namespace lite } // namespace paddle -REGISTER_LITE_KERNEL(calib, kARM, kAny, kAny, +REGISTER_LITE_KERNEL(calib, kARM, kInt8, kNCHW, paddle::lite::kernels::arm::CalibCompute, def) .BindInput("Input", {LiteType::GetTensorTy(TARGET(kARM))}) .BindOutput("Out", {LiteType::GetTensorTy(TARGET(kARM))}) diff --git a/paddle/fluid/lite/kernels/arm/calib_compute.h b/paddle/fluid/lite/kernels/arm/calib_compute.h index 898e1ce6383d34e54e0d58e6a38a3bcdf20bdfb7..d2811cd23a943f63862d98401d25bb74e44016bf 100644 --- a/paddle/fluid/lite/kernels/arm/calib_compute.h +++ b/paddle/fluid/lite/kernels/arm/calib_compute.h @@ -21,12 +21,10 @@ namespace lite { namespace kernels { namespace arm { -class CalibCompute : public KernelLite { +class CalibCompute : public KernelLite { public: using param_t = operators::CalibParam; - // void PrepareForRun() override; - void Run() override; ~CalibCompute() override{}; diff --git a/paddle/fluid/lite/kernels/arm/calib_compute_test.cc b/paddle/fluid/lite/kernels/arm/calib_compute_test.cc index 68bbd94b9b37c0d006223400b6f57d32f6eea4ab..96dd3740eebeea4b6edf427713178c8817c2be62 100644 --- a/paddle/fluid/lite/kernels/arm/calib_compute_test.cc +++ b/paddle/fluid/lite/kernels/arm/calib_compute_test.cc @@ -84,14 +84,14 @@ void calib_ref(const operators::CalibParam& param) { TEST(calib_arm, retrive_op) { auto calib = KernelRegistry::Global() - .Create("calib"); + .Create("calib"); ASSERT_FALSE(calib.empty()); ASSERT_TRUE(calib.front()); } TEST(calib_arm, init) { CalibCompute calib; - ASSERT_EQ(calib.precision(), PRECISION(kAny)); + ASSERT_EQ(calib.precision(), PRECISION(kInt8)); ASSERT_EQ(calib.target(), TARGET(kARM)); } @@ -146,4 +146,4 @@ TEST(calib_arm, int8_to_fp32) { } // namespace lite } // namespace paddle -USE_LITE_KERNEL(calib, kARM, kAny, kAny, def); +USE_LITE_KERNEL(calib, kARM, kInt8, kNCHW, def); diff --git a/paddle/fluid/lite/operators/calib_op.h b/paddle/fluid/lite/operators/calib_op.h index ef6e94c4c12950558c1419ed274394eb2b475978..1d93f6ea9a5abf3b42811b809870d3c645d029bb 100644 --- a/paddle/fluid/lite/operators/calib_op.h +++ b/paddle/fluid/lite/operators/calib_op.h @@ -27,6 +27,13 @@ namespace paddle { namespace lite { namespace operators { +/* + * The data types used by the two adjacent layers in the model should + * be the same. When the two operators accept different data types, + * we may need to implicitly add a data type conversion operator. + * Currently, this operator only supports mutual conversion of int8 + * and float32 types. + */ class CalibOpLite : public OpLite { public: CalibOpLite() {} @@ -37,14 +44,6 @@ class CalibOpLite : public OpLite { bool InferShape() const override; - /* - bool Run() override { - CHECK(kernel_); - kernel_->Run(); - return true; - } - */ - bool AttachImpl(const cpp::OpDesc &opdesc, lite::Scope *scope); void AttachKernel(KernelBase *kernel) override { kernel->SetParam(param_); } diff --git a/paddle/fluid/lite/operators/calib_op_test.cc b/paddle/fluid/lite/operators/calib_op_test.cc index 2b54352059a8abf86122c5803fb2d48a52fa3b3f..1b65c8e0dc014e4b5e532caf44b391880afabd1f 100644 --- a/paddle/fluid/lite/operators/calib_op_test.cc +++ b/paddle/fluid/lite/operators/calib_op_test.cc @@ -48,9 +48,9 @@ TEST(calib_op_lite, TestARM) { CalibOpLite calib("calib"); - calib.SetValidPlaces({Place{TARGET(kARM), PRECISION(kAny)}}); + calib.SetValidPlaces({Place{TARGET(kARM), PRECISION(kInt8)}}); calib.Attach(desc, &scope); - auto kernels = calib.CreateKernels({Place{TARGET(kARM), PRECISION(kAny)}}); + auto kernels = calib.CreateKernels({Place{TARGET(kARM), PRECISION(kInt8)}}); ASSERT_FALSE(kernels.empty()); } #endif @@ -60,5 +60,5 @@ TEST(calib_op_lite, TestARM) { } // namespace paddle #ifdef LITE_WITH_ARM -USE_LITE_KERNEL(calib, kARM, kAny, kAny, def); +USE_LITE_KERNEL(calib, kARM, kInt8, kNCHW, def); #endif