#pragma once #include #include #include #include #ifdef USE_CUDA #include #endif namespace torch::nativert { class AOTIDelegateExecutor : public ETDelegateExecutor { public: explicit AOTIDelegateExecutor( const Node& node, const std::shared_ptr& weights, const ExecutorConfig& executorConfig, caffe2::serialize::PyTorchStreamReader* packageReader, const MakeProxyExecutorFn& makeProxyExecutorFunc); ~AOTIDelegateExecutor() override = default; void processWeights(std::shared_ptr weights) override; void initWeights(std::shared_ptr weights) override; void commitWeights() override; std::vector run(std::vector& inputs) override; private: std::unique_ptr aoti_model_container_runner_; // key is weight's original fqn, value is weight's name in AOTI std::unordered_map weight_names_map_; }; C10_DECLARE_TYPED_REGISTRY( AOTIModelContainerRunnerRegistry, c10::DeviceType, torch::inductor::AOTIModelContainerRunner, std::unique_ptr, const std::string&, size_t, const std::string&, const std::string&, const bool); } // namespace torch::nativert