diff --git a/lite/core/kernel.h b/lite/core/kernel.h index 5f98eb0d3e965acf6b9b0b47247beabde0554950..9fffcc60012060327612345528c705bcf7722f17 100644 --- a/lite/core/kernel.h +++ b/lite/core/kernel.h @@ -70,6 +70,10 @@ class KernelBase { ch->cl_event = event_; #endif } + + virtual void SetIsKernelTest(bool is_kernel_test) { + is_kernel_test_ = is_kernel_test; + } #endif void Launch() { @@ -94,16 +98,23 @@ class KernelBase { #if defined(LITE_WITH_MLU) WorkSpace::Global_MLU().AllocReset(); #endif + #ifdef LITE_WITH_PROFILE - profiler_->StopTiming(profile::Type::kCreate, profile_id_, ctx_.get()); - profiler_->StartTiming(profile::Type::kDispatch, profile_id_, ctx_.get()); + if (!is_kernel_test_) { + profiler_->StopTiming(profile::Type::kCreate, profile_id_, ctx_.get()); + profiler_->StartTiming(profile::Type::kDispatch, profile_id_, ctx_.get()); + } + Run(); - if (is_first_epoch_for_profiler_) { + if (is_first_epoch_for_profiler_ && (!is_kernel_test_)) { SetProfileRuntimeKernelInfo(profiler_->GetOpCharacter(profile_id_)); is_first_epoch_for_profiler_ = false; } - profiler_->StopTiming(profile::Type::kDispatch, profile_id_, ctx_.get()); + + if (!is_kernel_test_) { + profiler_->StopTiming(profile::Type::kDispatch, profile_id_, ctx_.get()); + } #else Run(); @@ -197,11 +208,11 @@ class KernelBase { profile::Profiler* profiler_{nullptr}; int profile_id_{-1}; bool is_first_epoch_for_profiler_{true}; -#endif - + bool is_kernel_test_{true}; #ifdef LITE_WITH_OPENCL cl::Event event_; #endif +#endif }; // Light-weight kernel implementation. diff --git a/lite/core/program.cc b/lite/core/program.cc index fd1c6ce32a229cd975ec23ed2be63e713668cb74..4a0b25c554fdef944405fbbb0e8a94b7679cd174 100644 --- a/lite/core/program.cc +++ b/lite/core/program.cc @@ -302,6 +302,7 @@ void Instruction::Run() { #ifdef LITE_WITH_PROFILE if (first_epoch_for_profiler_) { + kernel_->SetIsKernelTest(false); SetProfileRuntimeOpInfo(profiler_->GetOpCharacter(profile_id_)); first_epoch_for_profiler_ = false; }