1 #include <torch/csrc/jit/mobile/model_tracer/BuildFeatureTracer.h> 2 #include <mutex> 3 4 namespace torch::jit::mobile { BuildFeatureTracer()5BuildFeatureTracer::BuildFeatureTracer() { 6 auto recorder_cb = 7 [](const at::RecordFunction& fn) -> std::unique_ptr<at::ObserverContext> { 8 std::string name = fn.name(); 9 getBuildFeatures().withLock( 10 [&](BuildFeatureTracer::build_feature_type& build_features) { 11 build_features.insert(name); 12 }); 13 return nullptr; 14 }; 15 16 handle_ = 17 at::addGlobalCallback(at::RecordFunctionCallback(recorder_cb) 18 .scopes({at::RecordScope::BUILD_FEATURE})); 19 } 20 21 c10::Synchronized<BuildFeatureTracer::build_feature_type>& BuildFeatureTracer:: getBuildFeatures()22 getBuildFeatures() { 23 static c10::Synchronized<build_feature_type> build_features; 24 return build_features; 25 } 26 27 } // namespace torch::jit::mobile 28