1 // Copyright (C) 2018-2020 Intel Corporation
2 // SPDX-License-Identifier: Apache-2.0
9 #include "mkldnn_extension_mngr.h"
11 using namespace MKLDNNPlugin;
12 using namespace InferenceEngine;
14 void MKLDNNExtensionManager::AddExtension(IExtensionPtr extension) {
15 _extensions.push_back(extension);
18 InferenceEngine::ILayerImpl::Ptr MKLDNNExtensionManager::CreateImplementation(const std::shared_ptr<ngraph::Node>& op) {
20 THROW_IE_EXCEPTION << "Cannot get nGraph operation!";
21 for (const auto& ext : _extensions) {
22 auto implTypes = ext->getImplTypes(op);
23 for (const auto& type : implTypes) {
26 auto impl = ext->getImplementation(op, "CPU");
34 IE_SUPPRESS_DEPRECATED_START
36 std::shared_ptr<InferenceEngine::ILayerImplFactory> MKLDNNExtensionManager::CreateExtensionFactory(
37 const InferenceEngine::CNNLayerPtr &layer) {
39 THROW_IE_EXCEPTION << "Cannot get cnn layer!";
40 std::shared_ptr<ILayerImplFactory> factory;
41 for (auto& ext : _extensions) {
42 ResponseDesc responseDesc;
44 ILayerImplFactory* factory_ptr = nullptr;
45 rc = ext->getFactoryFor(factory_ptr, layer.get(), &responseDesc);
50 factory.reset(factory_ptr);
59 IE_SUPPRESS_DEPRECATED_END