diff --git a/paddle/gserver/CMakeLists.txt b/paddle/gserver/CMakeLists.txt index 0012636b8f618a1b45cfc801c04781e67694956f..1305d5438ab9eb03128f7cdb36e034919eb405dd 100644 --- a/paddle/gserver/CMakeLists.txt +++ b/paddle/gserver/CMakeLists.txt @@ -23,6 +23,17 @@ endmacro() filter_test(GSERVER_HEADER) filter_test(GSERVER_SOURCES) + +if(NOT WITH_MKLDNN) + file(GLOB_RECURSE DNN_HEADER RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}" "Mkldnn*.h") + file(GLOB_RECURSE DNN_SOURCES RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}" "Mkldnn*.cpp") + list(REMOVE_ITEM GSERVER_HEADER ${DNN_HEADER}) + list(REMOVE_ITEM GSERVER_SOURCES ${DNN_SOURCES}) + message(STATUS "Skip compiling with Mkldnnlayers and MkldnnActivations") +else() + message(STATUS "Compile with Mkldnnlayers and MkldnnActivations") +endif() + if(NOT WITH_GPU) list(REMOVE_ITEM GSERVER_HEADER layers/CudnnConvBaseLayer.h diff --git a/paddle/gserver/layers/MkldnnFcLayer.cpp b/paddle/gserver/layers/MkldnnFcLayer.cpp new file mode 100644 index 0000000000000000000000000000000000000000..f8220a2553d5ae81b89a93d8b2c0f8ec606a23be --- /dev/null +++ b/paddle/gserver/layers/MkldnnFcLayer.cpp @@ -0,0 +1,30 @@ +/* Copyright (c) 2017 PaddlePaddle Authors. All Rights Reserve. + +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. */ + +#include "MkldnnFcLayer.h" + +namespace paddle { + +REGISTER_LAYER(mkldnn_fc, MkldnnFcLayer); + +bool MkldnnFcLayer::init(const LayerMap& layerMap, + const ParameterMap& parameterMap) { + return MkldnnLayer::init(layerMap, parameterMap); +} + +void MkldnnFcLayer::forward(PassType passType) {} + +void MkldnnFcLayer::backward(const UpdateCallback& callback) {} + +} // namespace paddle diff --git a/paddle/gserver/layers/MkldnnFcLayer.h b/paddle/gserver/layers/MkldnnFcLayer.h new file mode 100644 index 0000000000000000000000000000000000000000..430567949d1661c269956c23e6e2d54afc468d3f --- /dev/null +++ b/paddle/gserver/layers/MkldnnFcLayer.h @@ -0,0 +1,42 @@ +/* Copyright (c) 2017 PaddlePaddle Authors. All Rights Reserve. + +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. */ + +#pragma once + +#include "MkldnnLayer.h" +#include "mkldnn.hpp" + +namespace paddle { + +/** + * @brief A subclass of MkldnnLayer fc layer. + * + * The config file api is mkldnn_fc + */ +class MkldnnFcLayer : public MkldnnLayer { +protected: +public: + explicit MkldnnFcLayer(const LayerConfig& config) : MkldnnLayer(config) {} + + ~MkldnnFcLayer() {} + + bool init(const LayerMap& layerMap, + const ParameterMap& parameterMap) override; + + void forward(PassType passType) override; + + void backward(const UpdateCallback& callback) override; +}; + +} // namespace paddle diff --git a/paddle/gserver/layers/MkldnnLayer.h b/paddle/gserver/layers/MkldnnLayer.h new file mode 100644 index 0000000000000000000000000000000000000000..e9bab68b07dc223156ae122aec79e376e0145e39 --- /dev/null +++ b/paddle/gserver/layers/MkldnnLayer.h @@ -0,0 +1,45 @@ +/* Copyright (c) 2017 PaddlePaddle Authors. All Rights Reserve. + +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. */ + +#pragma once + +#include +#include "Layer.h" +#include "mkldnn.hpp" + +namespace paddle { + +class MkldnnLayer; +typedef std::shared_ptr MkldnnLayerPtr; + +/** + * @brief Base class of Mkldnnlayer. + * + */ +class MkldnnLayer : public Layer { +public: + explicit MkldnnLayer(const LayerConfig& config) : Layer(config) {} + + ~MkldnnLayer() {} + + virtual bool init(const LayerMap& layerMap, + const ParameterMap& parameterMap) { + return Layer::init(layerMap, parameterMap); + // TODO(TJ): deivecId + } + + void resetOutput(size_t height, size_t width) { ; } +}; + +} // namespace paddle