operation: name: "Reduction" class_name: "ReductionOperationDescriptor" fbs_table: "ReductionAttributes" fbs_generated_header: "reduction_attributes_generated.h" descriptor_type: enum_name: "HIPDNN_BACKEND_OPERATION_REDUCTION_DESCRIPTOR" operation_attr_prefix: "HIPDNN_ATTR_OPERATION_REDUCTION" frontend: packer_function: "createReductionOperation" unpacker_function: "unpackReductionOperation" node_class: "ReductionNode" attributes_class: "ReductionAttributes" inputs: - name: "x" enum_name: "X" enum_value: 0 required: true getter_name: "get_x" setter_name: "set_x" outputs: - name: "y" enum_name: "Y" enum_value: 0 required: true getter_name: "get_y" setter_name: "set_y" graph_method_name: "reduction" graph_method_params: - name: "x" tensor_name: "x" graph_return_type: "single" graph_return_outputs: - "y" node_type_enum: "NodeType::REDUCTION" node_attributes_union_type: "ReductionAttributes" compatibility_typedef: "Reduction_attributes" tensor_fields: - name: "x" fbs_field: "in_tensor_uid" attr_suffix: "XDESC" required: true - name: "y" fbs_field: "out_tensor_uid" attr_suffix: "YDESC" required: true data_fields: - name: "mode" fbs_field: "mode" attr_name: "HIPDNN_ATTR_REDUCTION_OPERATOR" type: "mode" cpp_enum: "hipdnn_flatbuffers_sdk::data_objects::ReductionMode" frontend_type: "ReductionMode" required: true fbs_optional: true default_value: "ReductionMode::NOT_SET" frontend_getter: "get_mode()" backend_setter: "setReductionMode" backend_getter: "getReductionMode" backend_converter: "toBackendReductionMode" frontend_inverse_converter: "fromHipdnnReduceTensorOp" backend_type_name: "HIPDNN_TYPE_REDUCTION_OPERATOR_TYPE" test_enum_value: "ADD" test_alt_enum_value: "AMAX" test_backend_value: "HIPDNN_REDUCE_TENSOR_ADD" test_c_type: "hipdnnReduceTensorOp_t" test_default_value: "HIPDNN_REDUCE_TENSOR_ADD" enum_def: backend_header: "HipdnnReduceTensorOp.h" backend_prefix: "HIPDNN_REDUCE_TENSOR_" values: - { name: "NOT_SET", value: 0, sentinel: true } - { name: "ADD", value: 1, description: "Sum reduction" } - { name: "MUL", value: 2, description: "Product reduction" } - { name: "MIN", value: 3, sdk_name: "MIN_OP", description: "Minimum reduction" } - { name: "MAX", value: 4, sdk_name: "MAX_OP", description: "Maximum reduction" } - { name: "AMAX", value: 5, description: "Absolute maximum reduction" } - { name: "AVG", value: 6, description: "Average reduction" } - { name: "NORM1", value: 7, description: "L1 norm reduction" } - { name: "NORM2", value: 8, description: "L2 norm reduction" } - { name: "MUL_NO_ZEROS", value: 9, description: "Product reduction excluding zeros" } - name: "is_deterministic" fbs_field: "is_deterministic" attr_name: "HIPDNN_ATTR_REDUCTION_IS_DETERMINISTIC" type: "bool" required: false frontend_getter: "get_is_deterministic()" tensor_array_fields: [] has_compute_data_type: true compute_data_type_attr: "HIPDNN_ATTR_REDUCTION_COMP_TYPE" operation_type_enum: "HIPDNN_OPERATION_TYPE_REDUCTION_EXT" test_data: constants_include: "ReductionConstants" tensor_const_prefix: "K_REDUCTION_" tensor_uids: { x: 1700, y: 1701 } tensor_configs: x: { dims: [2, 3, 4, 4], strides: [48, 16, 4, 1] } y: { dims: [2, 3, 1, 1], strides: [3, 1, 1, 1] } field_values: {}