1#include <torch/csrc/profiler/orchestration/python_tracer.h>
2
3namespace torch {
4namespace profiler {
5namespace impl {
6namespace python_tracer {
7namespace {
8MakeFn make_fn;
9
10struct 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
24void registerTracer(MakeFn make_tracer) {
25 make_fn = make_tracer;
26}
27
28std::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