updated readme file due to moving CMake scripts to the root folder
[platform/upstream/dldt.git] / inference-engine / src / mkldnn_plugin / mkldnn_extension_mngr.cpp
1 // Copyright (C) 2018-2019 Intel Corporation
2 // SPDX-License-Identifier: Apache-2.0
3 //
4
5 #include <vector>
6 #include <string>
7 #include <w_unistd.h>
8 #include <w_dirent.h>
9 #include <debug.h>
10 #include <algorithm>
11 #include <file_utils.h>
12
13 #include "mkldnn_extension_mngr.h"
14
15 using namespace MKLDNNPlugin;
16 using namespace InferenceEngine;
17
18 void MKLDNNExtensionManager::AddExtension(IExtensionPtr extension) {
19     _extensions.push_back(extension);
20 }
21
22 InferenceEngine::ILayerImplFactory* MKLDNNExtensionManager::CreateExtensionFactory(
23         const InferenceEngine::CNNLayerPtr &layer) {
24     if (!layer)
25         THROW_IE_EXCEPTION << "Cannot get cnn layer!";
26     ILayerImplFactory* factory = nullptr;
27     for (auto& ext : _extensions) {
28         ResponseDesc responseDesc;
29         StatusCode rc;
30         rc = ext->getFactoryFor(factory, layer.get(), &responseDesc);
31         if (rc != OK) {
32             factory = nullptr;
33             continue;
34         }
35         if (factory != nullptr) {
36             break;
37         }
38     }
39     return factory;
40 }
41
42 IShapeInferImpl::Ptr MKLDNNExtensionManager::CreateReshaper(const InferenceEngine::CNNLayerPtr &layer) {
43     if (!layer)
44         THROW_IE_EXCEPTION << "Cannot get cnn layer!";
45     IShapeInferImpl::Ptr reshaper = nullptr;
46     for (auto& ext : _extensions) {
47         ResponseDesc responseDesc;
48         StatusCode rc;
49         rc = ext->getShapeInferImpl(reshaper, layer->type.c_str(), &responseDesc);
50         if (rc != OK) {
51             reshaper = nullptr;
52             continue;
53         }
54         if (reshaper != nullptr) {
55             break;
56         }
57     }
58     return reshaper;
59 }
60
61
62