/** * Copyright 2021 Huawei Technologies Co., Ltd * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #ifndef GE_ST_STUB_ENGINE_HOST_CPU_ENGINE_H_ #define GE_ST_STUB_ENGINE_HOST_CPU_ENGINE_H_ #if defined(_MSC_VER) #ifdef FUNC_VISIBILITY #define GE_FUNC_VISIBILITY _declspec(dllexport) #else #define GE_FUNC_VISIBILITY #endif #else #ifdef FUNC_VISIBILITY #define GE_FUNC_VISIBILITY __attribute__((visibility("default"))) #else #define GE_FUNC_VISIBILITY #endif #endif #include #include #include #include #include "common/opskernel/ops_kernel_info_store.h" #include "common/optimizer/graph_optimizer.h" using OpsKernelInfoStorePtr = std::shared_ptr; using GraphOptimizerPtr = std::shared_ptr; namespace ge { namespace { std::vector extern_engine_name_vec = {"fe","rts_engine","aicpu_ascend_engine","aicpu_tf_engine",} } // namespace /** * host cpu engine. * Used for the ops which executes on host. */ class GE_FUNC_VISIBILITY StubEngine { public: /** * get HostCpuEngine instance. * @return HostCpuEngine instance. */ static StubEngine &Instance(); virtual ~StubEngine() = default; /** * When Ge start, GE will invoke this interface * @return The status whether initialize successfully */ Status Initialize(const std::map &options); /** * After the initialize, GE will invoke this interface * to get the Ops kernel Store. * @param ops_kernel_map The host cpu's ops kernel info */ void GetOpsKernelInfoStores(std::map &ops_kernel_map); /** * After the initialize, GE will invoke this interface * to get the Graph Optimizer. * @param graph_optimizers The host cpu's Graph Optimizer objs */ void GetGraphOptimizerObjs(std::map &graph_optimizers); /** * When the graph finished, GE will invoke this interface * @return The status whether initialize successfully */ Status Finalize(); StubEngine(const StubEngine &StubEngine) = delete; StubEngine(const StubEngine &&StubEngine) = delete; StubEngine &operator=(const StubEngine &StubEngine) = delete; StubEngine &operator=(StubEngine &&StubEngine) = delete; private: StubEngine() = default; OpsKernelInfoStorePtr ops_kernel_store_ = nullptr; }; } // namespace ge extern "C" { /** * When Ge start, GE will invoke this interface * @return The status whether initialize successfully */ GE_FUNC_VISIBILITY ge::Status Initialize(const map &options); /** * After the initialize, GE will invoke this interface to get the Ops kernel Store * @param ops_kernel_map The host cpu's ops kernel info */ GE_FUNC_VISIBILITY void GetOpsKernelInfoStores(std::map &ops_kernel_map); /** * After the initialize, GE will invoke this interface to get the Graph Optimizer * @param graph_optimizers The host cpu's Graph Optimizer objs */ GE_FUNC_VISIBILITY void GetGraphOptimizerObjs(std::map &graph_optimizers); /** * When the graph finished, GE will invoke this interface * @return The status whether initialize successfully */ GE_FUNC_VISIBILITY ge::Status Finalize(); } #endif // GE_ST_STUB_ENGINE_HOST_CPU_ENGINE_H_