未验证 提交 e90f9367 编写于 作者: H hong 提交者: GitHub

add no need buffer; (#41367)

上级 f8b3e576
......@@ -724,10 +724,11 @@ class DygraphFunctionGeneratorBase(FunctionGeneratorBase):
is_optional = (name in optional_inputs)
if is_fwd_input:
need_input_data = "false" if name in self.no_need_buffers else "true"
if is_optional:
set_tensor_wrappers = f"{indent}if({name}.get_ptr() != nullptr) grad_node->SetTensorWrapper{name}(*({name}.get_ptr()), true);"
else:
set_tensor_wrappers = f"{indent}grad_node->SetTensorWrapper{name}({name}, true);"
set_tensor_wrappers = f"{indent}grad_node->SetTensorWrapper{name}({name}, {need_input_data});"
else:
if num_fwd_outputs > 1:
# Aligned with forward output position
......
......@@ -28,6 +28,7 @@ class TestElementwiseAddOp(OpTest):
def setUp(self):
self.op_type = "elementwise_add"
self.python_api = paddle.add
self.init_dtype()
self.init_input_output()
self.init_kernel_type()
......@@ -41,8 +42,7 @@ class TestElementwiseAddOp(OpTest):
self.outputs = {'Out': self.out}
def check_eager(self):
return False
#return (self.use_mkldnn == False and self.axis == -1)
return (self.use_mkldnn == False and self.axis == -1)
def test_check_output(self):
# TODO(wangzhongpu): support mkldnn op in dygraph mode
......
......@@ -61,7 +61,6 @@
kernel :
func : add
backward : add_grad
# no_need_buffer : x, y
- api : add_n
args : (Tensor[] x)
......@@ -147,7 +146,6 @@
kernel :
func : argsort
backward : argsort_grad
# no_need_buffer : x
# asin
- api : asin
......@@ -455,7 +453,6 @@
kernel :
func : diagonal
backward : diagonal_grad
# no_need_buffer : x
- api : digamma
args : (Tensor x)
......@@ -666,9 +663,9 @@
- api : frobenius_norm
args : (Tensor x, int64_t[] axis, bool keep_dim, bool reduce_all)
output : Tensor(out)
infer_meta :
infer_meta :
func : ReduceInferMetaBase
kernel :
kernel :
func : frobenius_norm
backward : frobenius_norm_grad
......@@ -817,14 +814,13 @@
func : index_sample
data_type : x
backward : index_sample_grad
# no_need_buffer : x
- api : index_select
args : (Tensor x, Tensor index, int dim)
output : Tensor(out)
infer_meta :
infer_meta :
func : IndexSelectInferMeta
kernel :
kernel :
func : index_select
data_type : x
backward : index_select_grad
......@@ -1283,7 +1279,7 @@
func : PoolInferMeta
kernel :
func : pool2d
backward : pool2d_grad
backward : pool2d_grad
- api : pool3d
args : (Tensor x, int[] kernel_size, int[] strides, int[] paddings, bool ceil_mode, bool exclusive, str data_format, str pooling_type, bool global_pooling, bool adaptive, str padding_algorithm)
......@@ -1393,9 +1389,9 @@
- api : roll
args : (Tensor x, IntArray shifts, int64_t[] axis)
output : Tensor(out)
infer_meta :
infer_meta :
func : RollInferMeta
kernel :
kernel :
func : roll
backward : roll_grad
......@@ -1428,7 +1424,6 @@
kernel :
func : scatter
backward : scatter_grad
# no_need_buffer : updates
- api : scatter_nd_add
args : (Tensor x, Tensor index, Tensor updates)
......@@ -1439,7 +1434,6 @@
kernel :
func : scatter_nd_add
backward : scatter_nd_add_grad
# no_need_buffer : updates
- api : searchsorted
args : (Tensor sorted_sequence, Tensor value, bool out_int32, bool right)
......@@ -1633,7 +1627,6 @@
kernel :
func : subtract
backward : subtract_grad
# no_need_buffer : x, y
- api : sum
args : (Tensor x, int64_t[] dims={}, DataType out_dtype=paddle::experimental::DataType::UNDEFINED, bool keep_dim=false)
......@@ -1707,7 +1700,6 @@
kernel :
func : tile
backward : tile_grad
# no_need_buffer : x
- api : top_k
args : (Tensor x, Scalar k, int axis = -1, bool largest = true, bool sorted = true)
......@@ -1726,7 +1718,6 @@
kernel :
func : trace
backward : trace_grad
no_need_buffer : x
- api : transpose
args : (Tensor x, int[] axis)
......@@ -1749,9 +1740,9 @@
- api : tril_triu
args : (Tensor x, int diagonal, bool lower)
output : Tensor(out)
infer_meta :
infer_meta :
func : TrilTriuInferMeta
kernel :
kernel :
func : tril_triu
backward : tril_triu_grad
......@@ -1773,7 +1764,6 @@
kernel :
func : unfold
backward : unfold_grad
# no_need_buffer : x
- api : unsqueeze
args : (Tensor x, IntArray axes)
......@@ -1812,7 +1802,6 @@
func : WhereIndexInferMeta
kernel :
func : where_index
# no_need_buffer : x, y
# yolo_box
- api : yolo_box
......
# - backward_api : gumbel_softmax_grad
# forward : gumbel_softmax (Tensor x, float temperature, bool hard, int axis) -> Tensor(out)
# args : (Tensor out, Tensor out_grad, int axis)
# output : Tensor(x_grad)
# infer_meta :
# func : GumbelSoftmaxGradInferMeta
# param : [out, out_grad, axis]
# kernel :
# func : gumbel_softmax_grad
- backward_api : abs_grad
forward : abs (Tensor x) -> Tensor(out)
args : (Tensor x, Tensor out_grad)
......@@ -49,7 +59,7 @@
no_need_buffer : x
- backward_api : addmm_grad
forward : scatter (Tensor input, Tensor x, Tensor y, float alpha, float beta) -> Tensor(out)
forward : addmm (Tensor input, Tensor x, Tensor y, float alpha, float beta) -> Tensor(out)
args : (Tensor input, Tensor x, Tensor y, Tensor out_grad, float alpha, float beta)
output : Tensor(input_grad), Tensor(x_grad), Tensor(y_grad)
infer_meta :
......@@ -67,6 +77,7 @@
param : [x]
kernel :
func : argsort_grad
no_need_buffer : x
- backward_api : asin_grad
forward : asin (Tensor x) -> Tensor(out)
......@@ -274,15 +285,6 @@
param: [x]
kernel :
func : cumprod_grad
# - backward_api : gumbel_softmax_grad
# forward : gumbel_softmax (Tensor x, float temperature, bool hard, int axis) -> Tensor(out)
# args : (Tensor out, Tensor out_grad, int axis)
# output : Tensor(x_grad)
# infer_meta :
# func : GumbelSoftmaxGradInferMeta
# param : [out, out_grad, axis]
# kernel :
# func : gumbel_softmax_grad
- backward_api : depthwise_conv2d_transpose_grad
forward : depthwise_conv2d_transpose(Tensor x, Tensor filter, int[] strides, int[] paddings, int[] output_padding, int[] output_size, str padding_algorithm, int groups, int[] dilations, str data_format) -> Tensor(out)
......@@ -302,6 +304,7 @@
param : [x]
kernel :
func : diagonal_grad
no_need_buffer : x
- backward_api : digamma_grad
forward : digamma (Tensor x) -> Tensor(out)
......@@ -529,6 +532,7 @@
kernel :
func : index_sample_grad
data_type : out_grad
no_need_buffer : x
- backward_api : index_select_grad
forward : index_select(Tensor x, Tensor index, int dim) -> Tensor(out)
......@@ -1026,6 +1030,7 @@
param : [index, updates, out_grad, overwrite]
kernel :
func : scatter_grad
no_need_buffer : updates
- backward_api : scatter_nd_add_grad
forward : scatter (Tensor x, Tensor index, Tensor updates) -> Tensor(out)
......@@ -1036,6 +1041,7 @@
param : [index, updates, out_grad]
kernel :
func : scatter_nd_grad
no_need_buffer : updates
- backward_api : segment_pool_grad
forward : segment_pool (Tensor x, Tensor segment_ids, str pooltype) -> Tensor(out), Tensor(summed_ids)
......@@ -1193,6 +1199,7 @@
param : [x, y]
kernel :
func : subtract_grad
no_need_buffer : x, y
- backward_api : sum_grad
forward : sum (Tensor x, int64_t[] dims={}, DataType out_dtype=paddle::experimental::DataType::UNDEFINED, bool keep_dim=false) -> Tensor(out)
......@@ -1263,6 +1270,7 @@
param : [x]
kernel :
func : tile_grad
no_need_buffer : x
- backward_api : top_k_grad
forward : top_k (Tensor x, Scalar k, int axis = -1, bool largest = true, bool sorted = true) -> Tensor(out), Tensor(indices)
......@@ -1283,6 +1291,7 @@
param : [x]
kernel :
func : trace_grad
no_need_buffer : x
- backward_api : transpose_grad
forward : transpose (Tensor x, int[] axis) -> Tensor(out)
......@@ -1323,6 +1332,7 @@
param : [x]
kernel :
func : unfold_grad
no_need_buffer : x
- backward_api : unsqueeze_grad
forward : unsqueeze(Tensor x, IntArray axes) -> Tensor(xshape), Tensor(out)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册