1 // Copyright (C) 2018-2019 Intel Corporation
2 // SPDX-License-Identifier: Apache-2.0
7 #include "inference_engine.hpp"
8 #include "desc_layer.h"
9 #include "desc_tensor.h"
10 #include "desc_tensor_comb.h"
12 #include "cpu_prim_layer.h"
13 #include "cpu_prim_tensor.h"
19 using namespace InferenceEngine;
21 namespace MKLDNNPlugin {
24 using CpuEnginePtr = std::shared_ptr<CpuEngine>;
26 class CpuEngine : public details::no_copy {
28 CpuEngine() : eng(mkldnn::engine(mkldnn::engine::kind::cpu, 0)) {}
32 void createDescription(DescTensorPtr tns, bool isWeights = false);
34 void createDescription(DescLayerPtr layer);
36 void setFlatFormat(DescTensorPtr tns);
38 void createPrimitive(DescTensorPtr tns);
40 void createPrimitive(DescLayerPtr tns);
42 void setData(const TBlob<float> &src, DescTensorPtr dst);
44 void getData(const DescTensorPtr src, TBlob<float> &dst);
46 void subtraction(DescTensorPtr dst, DescTensorPtr sub);
48 void subtraction(DescTensorPtr dst, std::vector<float> sub);
50 void score(std::vector<DescLayerPtr> layers);
52 void score(DescLayerPtr layer);
54 void process(std::vector<mkldnn::primitive> exec_queue);
56 mkldnn::engine eng; // TODO: Move me back to private section
59 static inline mkldnn::memory::desc *get_desc(std::vector<DescTensorPtr> tensors, size_t indx = 0);
61 static inline mkldnn::memory::desc *get_desc(DescTensorPtr tns);
63 static inline mkldnn::memory *get_prim(std::vector<DescTensorPtr> tns, size_t indx = 0);
65 static inline mkldnn::memory *get_prim(DescTensorPtr tns);
67 void createPrimitiveCombined(DescTensorComb &tns, void *data);
69 } // namespace MKLDNNPlugin