#pragma once #include #include #include namespace torch::autograd::profiler { struct PythonRecordFunction : public torch::CustomClassHolder { at::RecordFunction record; explicit PythonRecordFunction( at::RecordScope scope = at::RecordScope::FUNCTION) : record(scope) {} }; // Creates a new profiling scope using RecordFunction and invokes its starting // callbacks. TORCH_API c10::intrusive_ptr record_function_enter_new( const std::string& name, const std::optional& args = std::nullopt); // Schedules RecordFunction's end callbacks to be run on completion of a future. TORCH_API c10::intrusive_ptr _call_end_callbacks_on_fut_new( const c10::intrusive_ptr& record, const c10::intrusive_ptr& fut); } // namespace torch::autograd::profiler