未验证 提交 804271cf 编写于 作者: L lidanqing 提交者: GitHub

Op version python mkldnn_inplace test (#28354)

* add mkldnn inplace op version test

* update mkldnn_inplace fuse pass

* update the inplace test
上级 72e068f1
...@@ -17,10 +17,12 @@ ...@@ -17,10 +17,12 @@
#include <memory> #include <memory>
#include <string> #include <string>
#include <unordered_map> #include <unordered_map>
#include <unordered_set>
#include <vector> #include <vector>
#include "paddle/fluid/framework/eigen.h" #include "paddle/fluid/framework/eigen.h"
#include "paddle/fluid/framework/lod_tensor.h" #include "paddle/fluid/framework/lod_tensor.h"
#include "paddle/fluid/framework/op_info.h" #include "paddle/fluid/framework/op_info.h"
#include "paddle/fluid/framework/op_version_registry.h"
#include "paddle/fluid/platform/enforce.h" #include "paddle/fluid/platform/enforce.h"
namespace paddle { namespace paddle {
...@@ -215,3 +217,9 @@ void MKLDNNInPlacePass::ApplyImpl(ir::Graph* graph) const { ...@@ -215,3 +217,9 @@ void MKLDNNInPlacePass::ApplyImpl(ir::Graph* graph) const {
} // namespace paddle } // namespace paddle
REGISTER_PASS(mkldnn_inplace_pass, paddle::framework::ir::MKLDNNInPlacePass); REGISTER_PASS(mkldnn_inplace_pass, paddle::framework::ir::MKLDNNInPlacePass);
REGISTER_PASS_CAPABILITY(mkldnn_inplace_pass)
.AddCombination(
paddle::framework::compatible::OpVersionComparatorCombination()
.EQ("softmax", 0)
.EQ("elementwise_add", 0)
.EQ("tanh", 0));
# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved.
#
# 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.
from __future__ import print_function
import unittest
import numpy as np
from inference_pass_test import InferencePassTest
import paddle
import paddle.fluid as fluid
import paddle.fluid.core as core
from paddle.fluid.core import AnalysisConfig
from paddle.fluid.core import PassVersionChecker
class MkldnnInplacePassTest(InferencePassTest):
def setUp(self):
with fluid.program_guard(self.main_program, self.startup_program):
paddle.enable_static()
data = fluid.data(
name="data", shape=[-1, 3, 100, 100], dtype="float32")
conv_out_1 = fluid.layers.conv2d(
data, num_filters=3, filter_size=3, bias_attr=False)
softmax_out = fluid.layers.softmax(conv_out_1)
relu_out = fluid.layers.relu(conv_out_1)
eltwise_out = fluid.layers.elementwise_add(
softmax_out, relu_out, axis=-1)
self.pass_name = 'mkldnn_inplace_pass'
self.feeds = {
"data": np.random.random((1, 3, 100, 100)).astype("float32")
}
self.fetch_list = [softmax_out, relu_out, eltwise_out]
self.enable_mkldnn = True
def test_check_output(self):
use_gpu = False
self.check_output_with_option(use_gpu)
def test_pass_compatible(self):
self.assertTrue(PassVersionChecker.IsCompatible(self.pass_name))
if __name__ == "__main__":
unittest.main()
...@@ -611,6 +611,7 @@ STATIC_MODE_TESTING_LIST = [ ...@@ -611,6 +611,7 @@ STATIC_MODE_TESTING_LIST = [
'test_mkldnn_matmul_op_output_fuse_pass', 'test_mkldnn_matmul_op_output_fuse_pass',
'test_mkldnn_matmul_transpose_reshape_fuse_pass', 'test_mkldnn_matmul_transpose_reshape_fuse_pass',
'test_mkldnn_scale_matmul_fuse_pass', 'test_mkldnn_scale_matmul_fuse_pass',
'test_mkldnn_inplace_fuse_pass',
'test_batch_fc_op', 'test_batch_fc_op',
'test_c_comm_init_all_op', 'test_c_comm_init_all_op',
'test_conv2d_fusion_op', 'test_conv2d_fusion_op',
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册