- name: add inputs: - typename: Tensor name: x optional: false no_need_buffer: false data_transform: {} - typename: Tensor name: y optional: false no_need_buffer: false data_transform: {} attrs: [] outputs: - {typename: Tensor, name: out, optional: false, intermediate: false} no_need_buffer: null data_transform: null infer_meta: func: ElementwiseInferMeta param: [x, y] kernel: func: [add] param: [x, y] backend: null layout: null data_type: null dispatch: {add: null} force_backend: null inplace: {out: x} view: null backward: add_grad - name: add_grad inputs: - typename: Tensor name: x optional: false no_need_buffer: true data_transform: {} - typename: Tensor name: y optional: false no_need_buffer: true data_transform: {} - typename: Tensor name: out_grad optional: false no_need_buffer: false data_transform: {} attrs: - {typename: int, name: axis, default_value: '-1'} outputs: - {typename: Tensor, name: x_grad, optional: false, intermediate: false} - {typename: Tensor, name: y_grad, optional: false, intermediate: false} no_need_buffer: [x, y] data_transform: null infer_meta: func: GeneralBinaryGradInferMeta param: [x, y] kernel: func: [add_grad] param: [x, y, out_grad, axis] backend: null layout: null data_type: null dispatch: {add_grad: null} force_backend: null inplace: {x_grad: out_grad} view: null composite: {func_name: add_grad, func_args: 'x, y, out_grad, axis, x_grad, y_grad'} backward: add_double_grad forward: name: add inputs: - {name: x, typename: Tensor} - {name: y, typename: Tensor} attrs: [] outputs: - {name: out, typename: Tensor}