diff --git a/paddle/fluid/framework/new_executor/interpretercore.cc b/paddle/fluid/framework/new_executor/interpretercore.cc index 9b597a9efde8aa524bb665ff5f9b53ae5641b076..878b845211ca1ae9e92f43fcc6ac82da366264d4 100644 --- a/paddle/fluid/framework/new_executor/interpretercore.cc +++ b/paddle/fluid/framework/new_executor/interpretercore.cc @@ -389,7 +389,7 @@ void InterpreterCore::RunInstruction(const Instruction& instr_node) { auto op_with_kernel = dynamic_cast(op); { platform::RecordEvent infershape_event( - "InferShape", platform::TracerEventType::OperatorInner, 1, + "infer_shape", platform::TracerEventType::OperatorInner, 1, platform::EventRole::kInnerOp); // If it is OperatorBase, InferShape do nothing. if (op_with_kernel != nullptr) @@ -411,7 +411,7 @@ void InterpreterCore::RunInstruction(const Instruction& instr_node) { } { platform::RecordEvent compute_event( - "Compute", platform::TracerEventType::OperatorInner, 1, + "compute", platform::TracerEventType::OperatorInner, 1, platform::EventRole::kInnerOp); if (op_with_kernel == nullptr) { instr_node.OpBase()->Run(*local_scope, place_); @@ -561,7 +561,8 @@ void InterpreterCore::RunInstructionAsync(size_t instr_id) { << " runs on " << platform::GetCurrentThreadName(); auto* op = instr_node.OpBase(); - platform::RecordEvent instruction_event(op->Type().c_str()); + platform::RecordEvent instruction_event( + op->Type(), platform::TracerEventType::Operator, 1); interpreter::WaitEvent(instr_node, place_); try { diff --git a/paddle/fluid/imperative/tracer.cc b/paddle/fluid/imperative/tracer.cc index c832787d9890621f131d3934e0190935aa9d9d24..85bcbd1458f24a592b646dfcda750f37f113f73f 100644 --- a/paddle/fluid/imperative/tracer.cc +++ b/paddle/fluid/imperative/tracer.cc @@ -175,7 +175,7 @@ void Tracer::TraceOp(const std::string& type, const NameVarMap& ins, paddle::framework::AttributeMap* passed_default_attrs_, bool use_default_attr_map) { platform::RecordEvent op_type_record_event( - type, platform::TracerEventType::Operator, 2); + type, platform::TracerEventType::Operator, 1); platform::ScopedFlushDenormal flush; VLOG(1) << "Trace Op: " << type; if (FLAGS_use_mkldnn) { diff --git a/paddle/fluid/platform/profiler/host_tracer.cc b/paddle/fluid/platform/profiler/host_tracer.cc index 3f97113aecbf50b1cdb33275c4906b9177ec4e4b..afd1c2b3012d46100dbead81792108cffb52e9a3 100644 --- a/paddle/fluid/platform/profiler/host_tracer.cc +++ b/paddle/fluid/platform/profiler/host_tracer.cc @@ -14,9 +14,16 @@ #include "paddle/fluid/platform/profiler/host_tracer.h" #include "glog/logging.h" +#include "paddle/fluid/platform/flags.h" #include "paddle/fluid/platform/profiler/common_event.h" #include "paddle/fluid/platform/profiler/host_event_recorder.h" +// Used to filter events, works like glog VLOG(level). +// RecordEvent will works if host_trace_level >= level. +PADDLE_DEFINE_EXPORTED_int64(host_trace_level, 2, + "RecordEvent will works " + "if host_trace_level >= level."); + namespace paddle { namespace platform { diff --git a/paddle/fluid/platform/profiler/profiler.h b/paddle/fluid/platform/profiler/profiler.h index de5a0cc9be4ede29ac70409edaac5541c53c5c96..4fc1c6daf96c7f30cbd549b23b1a8f23563bc590 100644 --- a/paddle/fluid/platform/profiler/profiler.h +++ b/paddle/fluid/platform/profiler/profiler.h @@ -23,11 +23,13 @@ #include "paddle/fluid/platform/profiler/event_node.h" #include "paddle/fluid/platform/profiler/tracer_base.h" +DECLARE_int64(host_trace_level); + namespace paddle { namespace platform { struct ProfilerOptions { - uint32_t trace_level = 0; + uint32_t trace_level = FLAGS_host_trace_level; }; class Profiler {