diff --git a/paddle/fluid/framework/new_executor/new_executor_defs.cc b/paddle/fluid/framework/new_executor/new_executor_defs.cc index 6492538c6084d36968c02f1ddf97f57e187a8773..8ee7065368c2181475e233f5e9dcbd8e828dea49 100644 --- a/paddle/fluid/framework/new_executor/new_executor_defs.cc +++ b/paddle/fluid/framework/new_executor/new_executor_defs.cc @@ -117,7 +117,7 @@ bool InterpretercoreInferShapeContext::HasOutputs(const std::string& name, } AttrReader InterpretercoreInferShapeContext::Attrs() const { - return AttrReader(op_.Attrs()); + return AttrReader(op_.Attrs(), op_.RuntimeAttrs()); } std::vector InterpretercoreInferShapeContext::Inputs( diff --git a/paddle/fluid/framework/op_registry.cc b/paddle/fluid/framework/op_registry.cc index a5ce5b704921b7a256fa094d6b0a20f66b5fdba8..a60563620ad651ca772328b5e62e8d1aa8dea9fc 100644 --- a/paddle/fluid/framework/op_registry.cc +++ b/paddle/fluid/framework/op_registry.cc @@ -65,7 +65,15 @@ std::unique_ptr OpRegistry::CreateOp( op_base = std::unique_ptr( info.Creator()(type, inputs, outputs, attrs)); } - op_base->SetRuntimeAttributeMap(runtime_attrs); + const auto& extra_attr_checkers = + operators::ExtraInfoUtils::Instance().GetExtraAttrsChecker(type); + if (!extra_attr_checkers.empty()) { + auto op_runtime_attr_map = runtime_attrs; + for (const auto& checker : extra_attr_checkers) { + checker(&op_runtime_attr_map, false); + } + op_base->SetRuntimeAttributeMap(op_runtime_attr_map); + } return op_base; } diff --git a/paddle/fluid/framework/operator.cc b/paddle/fluid/framework/operator.cc index 04d51872852a7cf11dff9a0ae0e90a7e9e37d4e1..00a499350044903c0c987240ae4cedda5c385bc2 100644 --- a/paddle/fluid/framework/operator.cc +++ b/paddle/fluid/framework/operator.cc @@ -767,7 +767,9 @@ class RuntimeInferShapeContext : public InferShapeContext { } } - AttrReader Attrs() const override { return AttrReader(op_.Attrs()); } + AttrReader Attrs() const override { + return AttrReader(op_.Attrs(), op_.RuntimeAttrs()); + } std::vector Inputs(const std::string& name) const override { return op_.Inputs(name); diff --git a/paddle/fluid/operators/abs_op.cc b/paddle/fluid/operators/abs_op.cc index f0adfb10a9fba3020637abff4c2108c814a8c01c..465637f3ed63e773d37abb8e04a142cd8be7fa83 100644 --- a/paddle/fluid/operators/abs_op.cc +++ b/paddle/fluid/operators/abs_op.cc @@ -54,15 +54,6 @@ class AbsOpMaker : public framework::OpProtoAndCheckerMaker { void Make() override { AddInput("X", "(Tensor), The input tensor of abs op."); AddOutput("Out", "(Tensor), The output tensor of abs op."); - AddAttr("use_mkldnn", - "(bool, default false) Only used in mkldnn kernel") - .SetDefault(false) - .AsExtra(); - AddAttr("use_cudnn", - "(bool, default false) Only used in cudnn kernel, need " - "install cudnn") - .SetDefault(false) - .AsExtra(); AddComment(R"DOC( Abs Operator. diff --git a/paddle/fluid/operators/addmm_op.cc b/paddle/fluid/operators/addmm_op.cc index c54e6924c1ae8650aa469b8dc53266f2bc01b2d0..8642d572e2d2720703b2500dbeae324b26411e2b 100644 --- a/paddle/fluid/operators/addmm_op.cc +++ b/paddle/fluid/operators/addmm_op.cc @@ -72,10 +72,6 @@ class AddMMOpMaker : public framework::OpProtoAndCheckerMaker { AddInput("X", "(Tensor), The first input tensor for mul."); AddInput("Y", "(Tensor), The second input tensor for mul."); AddOutput("Out", "(Tensor), The output tensor of addmm op."); - AddAttr("use_mkldnn", - "(bool, default false) Only used in mkldnn kernel") - .SetDefault(false) - .AsExtra(); AddAttr("Alpha", "coefficient of x*y.").SetDefault(1.0f); AddAttr("Beta", "coefficient of input.").SetDefault(1.0f); AddComment(R"DOC( diff --git a/paddle/fluid/operators/affine_grid_op.cc b/paddle/fluid/operators/affine_grid_op.cc index 6eecb5e6b3e86427c36437598d2f9842b80f9920..a459196b7611dfbb7a0af1332fabc23b2f36523b 100644 --- a/paddle/fluid/operators/affine_grid_op.cc +++ b/paddle/fluid/operators/affine_grid_op.cc @@ -158,11 +158,6 @@ class AffineGridOpMaker : public framework::OpProtoAndCheckerMaker { "(Tensor) The shape of target image with format [N, C, H, W].") .AsDispensable(); AddOutput("Output", "(Tensor) Output Tensor with shape [N, H, W, 2]."); - AddAttr( - "use_cudnn", - "(bool, default false) Only used in cudnn kernel, need install cudnn") - .SetDefault(true) - .AsExtra(); AddAttr("align_corners", "(bool, default false) Whether to align the corners of input" "and output.") diff --git a/paddle/fluid/operators/angle_op.cc b/paddle/fluid/operators/angle_op.cc index e787feb7dab943b37a71a697d65553034676c6a2..5c18f4c6fcc7df1753dc7020a91e71e1151e565c 100644 --- a/paddle/fluid/operators/angle_op.cc +++ b/paddle/fluid/operators/angle_op.cc @@ -39,15 +39,6 @@ class AngleOpMaker : public framework::OpProtoAndCheckerMaker { void Make() override { AddInput("X", "(Tensor), The input tensor of angle op."); AddOutput("Out", "(Tensor), The output tensor of angle op."); - AddAttr("use_mkldnn", - "(bool, default false) Only used in mkldnn kernel") - .SetDefault(false) - .AsExtra(); - AddAttr("use_cudnn", - "(bool, default false) Only used in cudnn kernel, need " - "install cudnn") - .SetDefault(false) - .AsExtra(); AddComment(R"DOC( Angle Operator. diff --git a/paddle/fluid/operators/batch_norm_op.cc b/paddle/fluid/operators/batch_norm_op.cc index 9ad55c21f10254b4e5122a45dddec4e973714843..a4a3f3cd2b054d09c56e5c0b50e47c5c589c90ed 100644 --- a/paddle/fluid/operators/batch_norm_op.cc +++ b/paddle/fluid/operators/batch_norm_op.cc @@ -293,14 +293,6 @@ void BatchNormOpMaker::Make() { "NHWC kernel") .AsDispensable() .AsExtra(); - AddAttr("use_mkldnn", - "(bool, default false) Only used in mkldnn kernel") - .SetDefault(false) - .AsExtra(); - AddAttr("fuse_with_relu", - "(bool, default false) Only used in mkldnn kernel") - .SetDefault(false) - .AsExtra(); AddAttr("use_global_stats", "(bool, default false) Whether to use global mean and " "variance. In inference or test mode, set use_global_stats " diff --git a/paddle/fluid/operators/clip_op.cc b/paddle/fluid/operators/clip_op.cc index ee632c77f19dcde872bcee89a10f78de206319ef..7994dacf08794f1d6f9c8e0d6397ee0b73b9676d 100644 --- a/paddle/fluid/operators/clip_op.cc +++ b/paddle/fluid/operators/clip_op.cc @@ -64,16 +64,6 @@ class ClipOpMaker : public framework::OpProtoAndCheckerMaker { "input(x)"); AddAttr("min", "float number, the minimum value to clip by."); AddAttr("max", "float number, the maximum value to clip by."); - AddAttr("use_mkldnn", - "(bool, default false) Only used in mkldnn kernel") - .SetDefault(false) - .AsExtra(); - AddAttr( - "mkldnn_data_type", - "(string, default \"float32\"). Data type of mkldnn kernel") - .SetDefault("float32") - .InEnum({"float32", "bfloat16"}) - .AsExtra(); AddComment(R"DOC( Clip Operator. diff --git a/paddle/fluid/operators/concat_op.cc b/paddle/fluid/operators/concat_op.cc index 75dbb9b037944bdc7294a207f8b870353fd9edd1..7c3a8103e1dbb2a4207d8b5dbf6b24e6178b2f07 100644 --- a/paddle/fluid/operators/concat_op.cc +++ b/paddle/fluid/operators/concat_op.cc @@ -81,11 +81,6 @@ class ConcatOpMaker : public framework::OpProtoAndCheckerMaker { void Make() override { AddInput("X", "Input tensors of concat operator.").AsDuplicable(); AddOutput("Out", "Output tensor of concat operator."); - AddAttr( - "use_mkldnn", - "(bool, default false) Indicates if MKL-DNN kernel will be used") - .SetDefault(false) - .AsExtra(); AddAttr("axis", "The axis along which the input tensors will be concatenated." "The axis could also be negative numbers. Negative axis is " @@ -99,18 +94,6 @@ class ConcatOpMaker : public framework::OpProtoAndCheckerMaker { "It has higher priority than Attr(axis). " "The shape of AxisTensor must be [1].") .AsDispensable(); - AddAttr( - "use_quantizer", - "(bool, default false) " - "This parameter is no longer used. Use 'mkldnn_data_type' instead.") - .SetDefault(false) - .AsExtra(); - AddAttr( - "mkldnn_data_type", - "(string, default \"float32\"). Data type of mkldnn kernel") - .SetDefault("float32") - .InEnum({"float32", "int8", "bfloat16"}) - .AsExtra(); AddComment(R"DOC( Concat Operator. diff --git a/paddle/fluid/operators/conv_op.cc b/paddle/fluid/operators/conv_op.cc index ab222f3cb36c1a9cec2fb68761a5d3273ebc3796..d9c1332191ac75017cb84e8526eeefc02497e9e4 100644 --- a/paddle/fluid/operators/conv_op.cc +++ b/paddle/fluid/operators/conv_op.cc @@ -285,11 +285,6 @@ framework::OpKernelType ConvOp::GetKernelTypeForVar( } void Conv2DOpMaker::Make() { - AddAttr("is_test", - "(bool, default false) Set to true for inference only, false " - "for training. Some layers may run faster when this is true.") - .SetDefault(false) - .AsExtra(); AddInput("Input", "(Tensor) The input tensor of convolution operator. " "The format of input tensor is NCHW or NHWC, where N is batch size, " @@ -356,22 +351,6 @@ void Conv2DOpMaker::Make() { "the input will be transformed automatically. ") .SetDefault("NCHW"); // TODO(dzhwinter): need to registered layout transform function - AddAttr("workspace_size_MB", - "Only used in cudnn kernel. Need set use_cudnn to true." - "workspace size for cudnn, in MB, " - "workspace is a section of GPU memory which will be " - "allocated/freed each time the operator runs, larger " - "workspace size can increase performance but also requires " - "better hardware. This size should be chosen carefully.") - .SetDefault(platform::GetDefaultConvWorkspaceSizeLimitMB()) - .AsExtra(); - AddAttr("exhaustive_search", - "(bool, default false) cuDNN has many algorithm to calculation " - "convolution, whether enable exhaustive search " - "for cuDNN convolution or not, default is False.") - .SetDefault(false) - .AsExtra(); - AddComment(R"DOC( Convolution Operator. @@ -403,12 +382,18 @@ $$ Apply(); } +class DepthwiseConv2DOpMaker : public Conv2DOpMaker { + protected: + void Apply() override { + AddAttr( + "use_cudnn", + "(bool, default false) Only used in cudnn kernel, need install cudnn") + .SetDefault(false) + .AsExtra(); + } +}; + void Conv3DOpMaker::Make() { - AddAttr("is_test", - "(bool, default false) Set to true for inference only, false " - "for training. Some layers may run faster when this is true.") - .SetDefault(false) - .AsExtra(); AddInput( "Input", "(Tensor) The input tensor of convolution operator. " @@ -465,47 +450,6 @@ void Conv3DOpMaker::Make() { "dilations(d_dilation, h_dilation, w_dilation) of " "convolution operator.") .SetDefault({1, 1, 1}); - AddAttr( - "use_cudnn", - "(bool, default false) Only used in cudnn kernel, need install cudnn") - .SetDefault(false) - .AsExtra(); - AddAttr("use_mkldnn", - "(bool, default false) Only used in mkldnn kernel") - .SetDefault(false) - .AsExtra(); - AddAttr( - "mkldnn_data_type", - "(string, default \"float32\"). Data type of mkldnn kernel") - .SetDefault("float32") - .InEnum({"float32", "int8", "bfloat16"}) - .AsExtra(); - AddAttr("fuse_relu", "(bool, default false) Only used in mkldnn kernel") - .SetDefault(false) - .AsExtra(); - AddAttr("fuse_activation", - "(string, default \"\") Only used in mkldnn kernel") - .SetDefault("") - .AsExtra(); - AddAttr("fuse_alpha", - "(float, default 0.0) Only used in mkldnn kernel") - .SetDefault(0.0f) - .AsExtra(); - AddAttr("fuse_beta", "(float, default 0.0) Only used in mkldnn kernel") - .SetDefault(0.0f) - .AsExtra(); - AddAttr( - "use_addto", - "(bool, default false) If use addto strategy or not, only used in " - "cudnn kernel") - .SetDefault(false) - .AsExtra(); - AddAttr("fuse_residual_connection", - "(bool, default false) Only used in mkldnn kernel. Used " - "whenever convolution output is as an input to residual " - "connection.") - .SetDefault(false) - .AsExtra(); AddAttr( "data_format", "(string, default NCDHW) Only used in " @@ -513,25 +457,6 @@ void Conv3DOpMaker::Make() { "Defaults to \"NDHWC\". Specify the data format of the output data, " "the input will be transformed automatically. ") .SetDefault("NCDHW"); - AddAttr("force_fp32_output", - "(bool, default false) Only used in mkldnn INT8 kernel") - .SetDefault(false) - .AsExtra(); - // TODO(dzhwinter): need to registered layout transform function - AddAttr("workspace_size_MB", - "Only used in cudnn kernel. workspace size for cudnn, in MB, " - "workspace is a section of GPU memory which will be " - "allocated/freed each time the operator runs, larger " - "workspace size can increase performance but also requires " - "better hardware. This size should be chosen carefully.") - .SetDefault(platform::GetDefaultConvWorkspaceSizeLimitMB()) - .AsExtra(); - AddAttr("exhaustive_search", - "(bool, default false) cuDNN has many algorithm to calculation " - "convolution, whether enable exhaustive search " - "for cuDNN convolution or not, default is False.") - .SetDefault(false) - .AsExtra(); AddComment(R"DOC( Convolution3D Operator. @@ -811,7 +736,7 @@ REGISTER_OPERATOR(conv2d_grad_grad, ops::ConvOpDoubleGrad); // depthwise convolution op REGISTER_OPERATOR(depthwise_conv2d, ops::ConvOp, - ops::Conv2DOpMaker, + ops::DepthwiseConv2DOpMaker, ops::ConvOpInferVarType, ops::Conv2DGradMaker, ops::Conv2DGradMaker); diff --git a/paddle/fluid/operators/conv_transpose_op.cc b/paddle/fluid/operators/conv_transpose_op.cc index 3205d5b353887c21f6029c1b4e5dc1c55437cd53..56875c2d433e1a0a444b9b3be8cc69b8728a4e73 100644 --- a/paddle/fluid/operators/conv_transpose_op.cc +++ b/paddle/fluid/operators/conv_transpose_op.cc @@ -91,11 +91,6 @@ framework::OpKernelType ConvTransposeOp::GetKernelTypeForVar( } void Conv2DTransposeOpMaker::Make() { - AddAttr("is_test", - "(bool, default false) Set to true for inference only, false " - "for training. Some layers may run faster when this is true.") - .SetDefault(false) - .AsExtra(); AddInput("Input", "(Tensor) The input tensor of convolution transpose operator. " "The format of input tensor is NCHW or NHWC. Where N is batch size, " @@ -146,40 +141,6 @@ void Conv2DTransposeOpMaker::Make() { "(vector default:{0, 0}), the paddings(h_pad, w_pad) of convolution " "transpose operator.") .SetDefault({0, 0}); - AddAttr( - "use_cudnn", - "(bool, default false) Only used in cudnn kernel, need install cudnn") - .SetDefault(false) - .AsExtra(); - AddAttr("use_mkldnn", - "(bool, default false) Only used in mkldnn kernel") - .SetDefault(false) - .AsExtra(); - AddAttr("force_fp32_output", - "(bool, default false) Force BF16 kernel output FP32, only " - "used in MKL-DNN BF16") - .SetDefault(false) - .AsExtra(); - AddAttr( - "mkldnn_data_type", - "(string, default \"float32\"). Data type of mkldnn kernel") - .SetDefault("float32") - .InEnum({"float32", "bfloat16"}) - .AsExtra(); - AddAttr("fuse_relu", "(bool, default false) Only used in mkldnn kernel") - .SetDefault(false) - .AsExtra(); - AddAttr("fuse_activation", - "(string, default \"\") Only used in mkldnn kernel") - .SetDefault("") - .AsExtra(); - AddAttr("fuse_alpha", - "(float, default 0.0) Only used in mkldnn kernel") - .SetDefault(0.0f) - .AsExtra(); - AddAttr("fuse_beta", "(float, default 0.0) Only used in mkldnn kernel") - .SetDefault(0.0f) - .AsExtra(); AddAttr( "data_format", "(string, default NCHW) Only used in " @@ -193,14 +154,6 @@ void Conv2DTransposeOpMaker::Make() { "\"SAME\",\"VALID\". Set to \"EXPLICIT\" for explicit padding. " "Set to \"SAME\" or \"VALID\" for algorithm of padding. ") .SetDefault("EXPLICIT"); - AddAttr("workspace_size_MB", - "Used in cudnn kernel only. workspace size for cudnn, in MB, " - "workspace is a section of GPU memory which will be " - "allocated/freed each time the operator runs, larger " - "workspace size can increase performance but also requires " - "better hardward. This size should be carefully set.") - .SetDefault(platform::GetDefaultConvWorkspaceSizeLimitMB()) - .AsExtra(); AddComment(R"DOC( Convolution2D Transpose Operator. @@ -280,15 +233,6 @@ void Conv3DTransposeOpMaker::Make() { "(int default:1), the groups number of the convolution3d " "transpose operator. ") .SetDefault(1); - AddAttr( - "use_cudnn", - "(bool, default false) Only used in cudnn kernel, need install cudnn") - .SetDefault(false) - .AsExtra(); - AddAttr("use_mkldnn", - "(bool, default false) Only used in mkldnn kernel") - .SetDefault(false) - .AsExtra(); AddAttr( "data_format", "(string, default NCHW) Only used in " @@ -302,14 +246,6 @@ void Conv3DTransposeOpMaker::Make() { "\"SAME\",\"VALID\". Set to \"EXPLICIT\" for explicit padding. " "Set to \"SAME\" or \"VALID\" for algorithm of padding. ") .SetDefault("EXPLICIT"); - AddAttr("workspace_size_MB", - "Used in cudnn kernel only. workspace size for cudnn, in MB, " - "workspace is a section of GPU memory which will be " - "allocated/freed each time the operator runs, larger " - "workspace size can increase performance but also requires " - "better hardward. This size should be carefully set.") - .SetDefault(platform::GetDefaultConvWorkspaceSizeLimitMB()) - .AsExtra(); AddComment(R"DOC( Convolution3D Transpose Operator. diff --git a/paddle/phi/api/yaml/api_compat.yaml b/paddle/phi/api/yaml/api_compat.yaml index e2d714e3620285591f4d9398ff6b8017d43f5678..912d63a776b43ec04660b91617fca781ca3ea6ca 100644 --- a/paddle/phi/api/yaml/api_compat.yaml +++ b/paddle/phi/api/yaml/api_compat.yaml @@ -1,7 +1,22 @@ -# - api : conv3d_transpose -# backward : conv3d_transpose_grad -# extra : -# attrs : [bool use_cudnn = true, bool use_mkldnn = false, int workspace_size_MB = platform::GetDefaultConvWorkspaceSizeLimitMB()] +- api : abs + backward : abs_grad + extra : + attrs : [bool use_cudnn = false, bool use_mkldnn = false] + +- api : addmm + backward : addmm_grad + extra : + attrs : [bool use_mkldnn = false] + +- api : affine_grid + backward : affine_grid_grad + extra : + attrs : [bool use_cudnn = true] + +- api : angle + backward : angle_grad + extra : + attrs : [bool use_cudnn = false, bool use_mkldnn = false] - api : atan2 inputs : @@ -9,6 +24,11 @@ outputs : out : Out +- api : batch_norm + backward : batch_norm_grad + extra : + attrs : [bool use_mkldnn = false, bool fuse_with_relu = false] + - api : bernoulli inputs : x : X @@ -27,24 +47,55 @@ outputs : out : Out +- api : clip + backward : clip_grad + extra : + attrs : [bool use_mkldnn = false, str mkldnn_data_type = "float32"] + +- api : concat + backward : concat_grad + extra : + attrs : [bool use_mkldnn = false, bool use_quantizer = false, str mkldnn_data_type = "float32"] + - api : conv2d backward : conv2d_grad extra : - attrs : [bool use_cudnn = true, bool fuse_relu_before_depthwise_conv = false, bool use_mkldnn = false, + attrs : [bool is_test = false, bool use_cudnn = true, bool fuse_relu_before_depthwise_conv = false, bool use_mkldnn = false, bool use_quantizer = false, str mkldnn_data_type = "float32", bool fuse_relu = false, str fuse_activation = "", float fuse_alpha = 0.0f, float fuse_beta = 0.0f, bool use_addto = false, bool fuse_residual_connection = false, float Scale_in = 1.0f, float Scale_out = 1.0f, float Scale_in_eltwise = 1.0f, 'float[] Scale_weights = {1.0f}', bool force_fp32_output = false, - int workspace_size_MB = 512, bool exhaustive_search = false] + int workspace_size_MB = platform::GetDefaultConvWorkspaceSizeLimitMB(), bool exhaustive_search = false] - api : conv2d_fusion extra : - attrs : [bool use_cudnn = false, bool fuse_relu_before_depthwise_conv = false, bool use_mkldnn = false, + attrs : [bool is_test = false, bool use_cudnn = false, bool fuse_relu_before_depthwise_conv = false, bool use_mkldnn = false, bool use_quantizer = false, str mkldnn_data_type = "float32", bool fuse_relu = false, str fuse_activation = "", float fuse_alpha = 0.0f, float fuse_beta = 0.0f, bool use_addto = false, bool fuse_residual_connection = false, float Scale_in = 1.0f, float Scale_out = 1.0f, float Scale_in_eltwise = 1.0f, 'float[] Scale_weights = {1.0f}', bool force_fp32_output = false, - int workspace_size_MB = 512, bool exhaustive_search = false] + int workspace_size_MB = platform::GetDefaultConvWorkspaceSizeLimitMB(), bool exhaustive_search = false] + +- api : conv2d_transpose + backward : conv2d_transpose_grad + extra : + attrs : [bool is_test = false, bool use_cudnn = true, bool use_mkldnn = false, bool force_fp32_output = false, + str mkldnn_data_type = "float32", bool fuse_relu = false, + str fuse_activation = "", float fuse_alpha = 0.0f, float fuse_beta = 0.0f, + int workspace_size_MB = platform::GetDefaultConvWorkspaceSizeLimitMB()] + +- api : conv3d + backward : conv3d_grad + extra : + attrs : [bool is_test = false, bool use_cudnn = true, bool use_mkldnn = false, str mkldnn_data_type = "float32", bool fuse_relu = false, + str fuse_activation = "", float fuse_alpha = 0.0f, float fuse_beta = 0.0f, + bool use_addto = false, bool fuse_residual_connection = false, bool force_fp32_output = false, + int workspace_size_MB = platform::GetDefaultConvWorkspaceSizeLimitMB(), bool exhaustive_search = false] + +- api : conv3d_transpose + backward : conv3d_transpose_grad + extra : + attrs : [bool use_cudnn = true, bool use_mkldnn = false, int workspace_size_MB = platform::GetDefaultConvWorkspaceSizeLimitMB()] - api : cross inputs : @@ -57,12 +108,20 @@ - api : depthwise_conv2d backward : depthwise_conv2d_grad extra : - attrs : [bool use_cudnn = false, bool fuse_relu_before_depthwise_conv = false, bool use_mkldnn = false, + attrs : [bool is_test = false, bool fuse_relu_before_depthwise_conv = false, bool use_mkldnn = false, bool use_quantizer = false, str mkldnn_data_type = "float32", bool fuse_relu = false, str fuse_activation = "", float fuse_alpha = 0.0f, float fuse_beta = 0.0f, bool use_addto = false, bool fuse_residual_connection = false, float Scale_in = 1.0f, float Scale_out = 1.0f, float Scale_in_eltwise = 1.0f, 'float[] Scale_weights = {1.0f}', bool force_fp32_output = false, - int workspace_size_MB = 512, bool exhaustive_search = false] + int workspace_size_MB = platform::GetDefaultConvWorkspaceSizeLimitMB(), bool exhaustive_search = false] + +- api : depthwise_conv2d_transpose + backward : depthwise_conv2d_transpose_grad + extra : + attrs : [bool is_test = false, bool use_cudnn = false, bool use_mkldnn = false, bool force_fp32_output = false, + str mkldnn_data_type = "float32", bool fuse_relu = false, + str fuse_activation = "", float fuse_alpha = 0.0f, float fuse_beta = 0.0f, + int workspace_size_MB = platform::GetDefaultConvWorkspaceSizeLimitMB()] - api : diag op_name : diag_v2 @@ -108,6 +167,11 @@ outputs : out : Out +- api : inplace_abn + backward : inplace_abn_grad + extra : + attrs : [bool use_mkldnn = false, bool fuse_with_relu = false] + - api : lgamma inputs : x : X @@ -132,6 +196,11 @@ outputs : out : Out +- api : sync_batch_norm + backward : sync_batch_norm_grad + extra : + attrs : [bool use_mkldnn = false, bool fuse_with_relu = false] + - api : trace inputs : x : Input