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 | |
14 | void stop() override {} |
15 | std::vector<std::shared_ptr<Result>> getEvents( |
16 | std::function<time_t(approx_time_t)>, |
17 | std::vector<CompressedEvent>&, |
18 | time_t) override { |
19 | return {}; |
20 | } |
21 | }; |
22 | } // namespace |
23 | |
24 | void registerTracer(MakeFn make_tracer) { |
25 | make_fn = make_tracer; |
26 | } |
27 | |
28 | std::unique_ptr<PythonTracerBase> PythonTracerBase::make(RecordQueue* queue) { |
29 | if (make_fn == nullptr) { |
30 | return std::make_unique<NoOpPythonTracer>(); |
31 | } |
32 | return make_fn(queue); |
33 | } |
34 | } // namespace python_tracer |
35 | } // namespace impl |
36 | } // namespace profiler |
37 | } // namespace torch |
38 |