xref: /aosp_15_r20/external/pytorch/torch/csrc/profiler/orchestration/python_tracer.cpp (revision da0073e96a02ea20f0ac840b70461e3646d07c45)
1 #include <torch/csrc/profiler/orchestration/python_tracer.h>
2 
3 namespace torch {
4 namespace profiler {
5 namespace impl {
6 namespace python_tracer {
7 namespace {
8 MakeFn make_fn;
9 
10 struct NoOpPythonTracer : public PythonTracerBase {
11   NoOpPythonTracer() = default;
12   ~NoOpPythonTracer() override = default;
13 
stoptorch::profiler::impl::python_tracer::__anond8f1d9e10111::NoOpPythonTracer14   void stop() override {}
restarttorch::profiler::impl::python_tracer::__anond8f1d9e10111::NoOpPythonTracer15   void restart() override {}
getEventstorch::profiler::impl::python_tracer::__anond8f1d9e10111::NoOpPythonTracer16   std::vector<std::shared_ptr<Result>> getEvents(
17       std::function<c10::time_t(c10::approx_time_t)>,
18       std::vector<CompressedEvent>&,
19       c10::time_t) override {
20     return {};
21   }
22 };
23 } // namespace
24 
registerTracer(MakeFn make_tracer)25 void registerTracer(MakeFn make_tracer) {
26   make_fn = make_tracer;
27 }
28 
make(RecordQueue * queue)29 std::unique_ptr<PythonTracerBase> PythonTracerBase::make(RecordQueue* queue) {
30   if (make_fn == nullptr) {
31     return std::make_unique<NoOpPythonTracer>();
32   }
33   return make_fn(queue);
34 }
35 } // namespace python_tracer
36 } // namespace impl
37 } // namespace profiler
38 } // namespace torch
39