From e3d02c957472c89ba22050ca5510fea74bd52725 Mon Sep 17 00:00:00 2001 From: xiaoting <31891223+tink2123@users.noreply.github.com> Date: Tue, 20 Oct 2020 10:16:57 +0800 Subject: [PATCH] rm max_input in conv2d for kunlun, test=kunlun (#28062) --- paddle/fluid/operators/conv_op_xpu.cc | 83 +++++++++++++-------------- 1 file changed, 41 insertions(+), 42 deletions(-) diff --git a/paddle/fluid/operators/conv_op_xpu.cc b/paddle/fluid/operators/conv_op_xpu.cc index 21fe9ad9bab..65ed34e8a5e 100644 --- a/paddle/fluid/operators/conv_op_xpu.cc +++ b/paddle/fluid/operators/conv_op_xpu.cc @@ -27,10 +27,10 @@ class GemmConvXPUKernel : public framework::OpKernel { // that avoids modifying the variable in the Scope. Tensor filter = *context.Input("Filter"); Tensor* output = context.Output("Output"); - Tensor* max_input = context.Output("MaxInput"); - Tensor* max_filter = context.Output("MaxFilter"); - max_input->mutable_data(context.GetPlace()); - max_filter->mutable_data(context.GetPlace()); + // Tensor* max_input = context.Output("MaxInput"); + // Tensor* max_filter = context.Output("MaxFilter"); + // max_input->mutable_data(context.GetPlace()); + // max_filter->mutable_data(context.GetPlace()); output->mutable_data(context.GetPlace()); int groups = context.Attr("groups"); std::vector strides = context.Attr>("strides"); @@ -47,28 +47,28 @@ class GemmConvXPUKernel : public framework::OpKernel { dilations[0] == 1 && dilations[1] == 1, true, platform::errors::InvalidArgument("XPU only support dilation == 1.")); auto& dev_ctx = context.template device_context(); - PADDLE_ENFORCE_EQ( - xpu::findmax(dev_ctx.x_context(), input->data(), input->numel(), - max_input->data()) == xpu::Error_t::SUCCESS, - true, platform::errors::InvalidArgument( - "XPU conv kernel error,can not finde max_input,please " - "check whether Baidu Kunlun " - "Card is properly installed.")); - PADDLE_ENFORCE_EQ( - xpu::findmax(dev_ctx.x_context(), filter.data(), filter.numel(), - max_filter->data()) == xpu::Error_t::SUCCESS, - true, platform::errors::InvalidArgument( - "XPU conv kernel error,can not find max_filter,please " - "check whether Baidu Kunlun " - "Card is properly installed.")); + // PADDLE_ENFORCE_EQ( + // xpu::findmax(dev_ctx.x_context(), input->data(), input->numel(), + // max_input->data()) == xpu::Error_t::SUCCESS, + // true, platform::errors::InvalidArgument( + // "XPU conv kernel error,can not finde max_input,please " + // "check whether Baidu Kunlun " + // "Card is properly installed.")); + // PADDLE_ENFORCE_EQ( + // xpu::findmax(dev_ctx.x_context(), filter.data(), filter.numel(), + // max_filter->data()) == xpu::Error_t::SUCCESS, + // true, platform::errors::InvalidArgument( + // "XPU conv kernel error,can not find max_filter,please " + // "check whether Baidu Kunlun " + // "Card is properly installed.")); if (groups == 1) { int r = xpu::conv2d_forward_int16( dev_ctx.x_context(), batch_size, img_c, img_h, img_w, f, win_h, win_w, strides[0], strides[1], paddings[0], paddings[1], dilations[0], dilations[1], groups, input->data(), filter.data(), output->data(), nullptr, nullptr, xpu::Activation_t::LINEAR, - // nullptr, nullptr); - max_input->data(), max_filter->data()); + nullptr, nullptr); + // max_input->data(), max_filter->data()); PADDLE_ENFORCE_EQ( r, XPU_SUCCESS, platform::errors::External("XPU conv kernel return wrong value[%d], " @@ -80,8 +80,8 @@ class GemmConvXPUKernel : public framework::OpKernel { dev_ctx.x_context(), input->data(), filter.data(), output->data(), batch_size, img_c, img_h, img_w, f, win_h, win_w, groups, strides[0], strides[1], paddings[0], paddings[1], - // nullptr, nullptr); - max_input->data(), max_filter->data()); + nullptr, nullptr); + // max_input->data(), max_filter->data()); PADDLE_ENFORCE_EQ( r, XPU_SUCCESS, platform::errors::External("XPU conv kernel return wrong value[%d], " @@ -96,9 +96,9 @@ class GemmConvGradXPUKernel : public framework::OpKernel { public: void Compute(const framework::ExecutionContext& context) const override { const Tensor* input = context.Input("Input"); - const Tensor* max_input = context.Input("MaxInput"); - const Tensor* max_filter = context.Input("MaxFilter"); - Tensor* max_output_grad = context.Output("MaxOutputGrad"); + // const Tensor* max_input = context.Input("MaxInput"); + // const Tensor* max_filter = context.Input("MaxFilter"); + // Tensor* max_output_grad = context.Output("MaxOutputGrad"); const Tensor* output_grad = context.Input(framework::GradVarName("Output")); Tensor* input_grad = @@ -133,25 +133,25 @@ class GemmConvGradXPUKernel : public framework::OpKernel { filter_grad->mutable_data(context.GetPlace()); } auto& dev_ctx = context.template device_context(); - max_output_grad->Resize({4}); - max_output_grad->mutable_data(context.GetPlace()); - PADDLE_ENFORCE_EQ( - xpu::findmax(dev_ctx.x_context(), output_grad->data(), - output_grad->numel(), - max_output_grad->data()) == xpu::Error_t::SUCCESS, - true, - platform::errors::External( - "XPU conv kernel error, can not find max_output_grad, please check " - "whether Baidu Kunlun Card is " - "properly installed.")); + // max_output_grad->Resize({4}); + // max_output_grad->mutable_data(context.GetPlace()); + // PADDLE_ENFORCE_EQ( + // xpu::findmax(dev_ctx.x_context(), output_grad->data(), + // output_grad->numel(), + // max_output_grad->data()) == xpu::Error_t::SUCCESS, + // true, + // platform::errors::External( + // "XPU conv kernel error, can not find max_output_grad, please + // check " + // "whether Baidu Kunlun Card is " + // "properly installed.")); if (input_grad) { int r = xpu::conv2d_backward_int16( dev_ctx.x_context(), batch_size, img_c, img_h, img_w, f, win_h, win_w, strides[0], strides[1], paddings[0], paddings[1], dilations[0], dilations[1], groups, output_grad->data(), - filter.data(), input_grad->data(), - // nullptr, nullptr, - max_output_grad->data(), max_filter->data()); + filter.data(), input_grad->data(), nullptr, nullptr); + // max_output_grad->data(), max_filter->data()); PADDLE_ENFORCE_EQ( r, XPU_SUCCESS, platform::errors::External("XPU conv kernel return wrong value[%d], " @@ -164,9 +164,8 @@ class GemmConvGradXPUKernel : public framework::OpKernel { dev_ctx.x_context(), batch_size, img_c, img_h, img_w, f, win_h, win_w, strides[0], strides[1], paddings[0], paddings[1], dilations[0], dilations[1], groups, output_grad->data(), - input->data(), filter_grad->data(), - // nullptr, nullptr, - max_output_grad->data(), max_input->data()); + input->data(), filter_grad->data(), nullptr, nullptr); + // max_output_grad->data(), max_input->data()); PADDLE_ENFORCE_EQ( r, XPU_SUCCESS, platform::errors::External("XPU conv kernel return wrong value[%d], " -- GitLab