#pragma once #include "event_tracer.h" namespace torch { namespace executor { /** * Bucket type abstraction that contains many elements of runtime state that * a kernel author may want available, but would otherwise be unable to access. * * Forwarded along to all operators when running in lean mode. NOTE: Will not be * forwarded to operators if running in ATen mode as those operators do not * expect to receive a KernelRuntimeContext and would not use it. * * This includes things like setting an error state, a scratch allocator for * operators that need more then constant space, and a TensorResizer for dynamic * shape tensors allowing programs to be more flexible with Tensor shape. */ class KernelRuntimeContext { public: /** * Construct a new kernel runtime context along with an optional event tracer. */ KernelRuntimeContext(EventTracer* event_tracer = nullptr) : event_tracer_(event_tracer) {} /** * INTERNAL ONLY * * Returns a pointer to an instance of EventTracer to do profiling/debugging * logging inside the codegen layer. This is only for internal usage inside * the codegen layer and users should not be accessing this. */ EventTracer* internal_event_tracer() { return event_tracer_; } private: EventTracer* event_tracer_; }; } // namespace executor } // namespace torch