Skip to content

Commit d24ea23

Browse files
tarun292facebook-github-bot
authored andcommitted
Add support for event_tracer in KernelContext (#344)
Summary: X-link: pytorch/pytorch#109337 Pull Request resolved: #344 This diff does a couple of things: - Adds a pointer to an instance of EventTracer inside `KernelRuntimeContext` - Adds an instance of `EventTracerProfileScope` inside the codegen layer. Currently calls to both `EventTracerProfileScope` and `EXECUTORCH_SCOPE_PROF` are present inside the codegen layer. This is a temporary state. Once EventTracer and ETDump has been fully integrated, the call to `EXECUTORCH_SCOPE_PROF` will be removed everywhere. `EventTracerProfileScope` should be a no-op for now. Reviewed By: dbort Differential Revision: D48975975 fbshipit-source-id: edd4d674e25453e6f086399dc9eba818441c04f3
1 parent 2bb3896 commit d24ea23

File tree

3 files changed

+21
-4
lines changed

3 files changed

+21
-4
lines changed

runtime/core/event_tracer_hooks.h

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -114,17 +114,16 @@ inline void event_tracer_create_event_block(
114114
inline EventTracerEntry event_tracer_begin_profiling_event(
115115
EventTracer* event_tracer,
116116
char const* name) {
117-
EventTracerEntry event_tracer_entry;
118117
#ifdef ET_EVENT_TRACER_ENABLED
119118
if (event_tracer) {
120-
event_tracer_entry = event_tracer->start_profiling(name);
119+
return event_tracer->start_profiling(name);
121120
}
122121
#else //! ET_EVENT_TRACER_ENABLED
123122
(void)event_tracer;
124123
(void)name;
125124
#endif
126125
// There is no active tracer; this value will be ignored.
127-
return event_tracer_entry;
126+
return EventTracerEntry();
128127
}
129128

130129
/**

runtime/executor/method.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -905,7 +905,7 @@ Error Method::execute_instruction() {
905905
EXECUTORCH_SCOPE_PROF("OPERATOR_CALL");
906906
// TODO(T147221312): Also expose the temp allocator and tensor resizer
907907
// via the context.
908-
KernelRuntimeContext context;
908+
KernelRuntimeContext context(event_tracer_);
909909
auto args = chain.argument_lists_[step_state_.instr_idx];
910910
chain.kernels_[step_state_.instr_idx](context, args.data());
911911
Error err = context.failure_state();

runtime/kernel/kernel_runtime_context.h

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
#pragma once
1010

1111
#include <executorch/runtime/core/error.h>
12+
#include <executorch/runtime/core/event_tracer_hooks.h>
1213
#include <executorch/runtime/platform/compiler.h>
1314

1415
namespace torch {
@@ -22,6 +23,11 @@ namespace executor {
2223
*/
2324
class KernelRuntimeContext {
2425
public:
26+
/**
27+
* Construct a new kernel runtime context along with an optional event tracer.
28+
*/
29+
KernelRuntimeContext(EventTracer* event_tracer = nullptr)
30+
: event_tracer_(event_tracer) {}
2531
/**
2632
* Tells the runtime that the kernel call has failed. Prefer this over
2733
* ET_CHECK_*(), which fatally panics the process/system.
@@ -43,11 +49,23 @@ class KernelRuntimeContext {
4349
return failure_state_;
4450
}
4551

52+
/**
53+
* INTERNAL ONLY
54+
*
55+
* Returns a pointer to an instance of EventTracer to do profiling/debugging
56+
* logging inside the codegen layer. This is only for internal usage inside
57+
* the codegen layer and users should not be accessing this.
58+
*/
59+
EventTracer* internal_event_tracer() {
60+
return event_tracer_;
61+
}
62+
4663
// TODO(T147221312): Add a way to allocate temporary memory.
4764

4865
// TODO(T147221312): Add a way to resize a tensor.
4966

5067
private:
68+
EventTracer* event_tracer_;
5169
Error failure_state_ = Error::Ok;
5270
};
5371

0 commit comments

Comments
 (0)