Publishing 2019 R1 content
[platform/upstream/dldt.git] / inference-engine / src / mkldnn_plugin / nodes / mkldnn_pooling_node.h
1 // Copyright (C) 2018-2019 Intel Corporation
2 // SPDX-License-Identifier: Apache-2.0
3 //
4
5 #pragma once
6
7 #include <ie_common.h>
8 #include <mkldnn_node.h>
9 #include <string>
10 #include <memory>
11 #include <vector>
12
13 namespace MKLDNNPlugin {
14
15 class MKLDNNPoolingNode : public MKLDNNNode {
16 public:
17     MKLDNNPoolingNode(const InferenceEngine::CNNLayerPtr& layer, const mkldnn::engine& eng);
18     ~MKLDNNPoolingNode() override = default;
19
20     void createDescriptor(const std::vector<InferenceEngine::TensorDesc>& inputDesc,
21                           const std::vector<InferenceEngine::TensorDesc>& outputDesc) override;
22     void getSupportedDescriptors() override;
23     void createPrimitive() override;
24     bool created() const override;
25     bool canBeInPlace() const override {
26         return false;
27     }
28
29 private:
30     static Register<MKLDNNPoolingNode> reg;
31     InferenceEngine::PoolingLayer::PoolType type;
32     bool exclude_pad;
33     std::vector<ptrdiff_t> stride;
34     std::vector<ptrdiff_t> paddingL;
35     std::vector<ptrdiff_t> paddingR;
36     std::vector<ptrdiff_t> kernel;
37 };
38
39 }  // namespace MKLDNNPlugin
40