Skip to content

Commit

Permalink
add new select op and boolean data type
Browse files Browse the repository at this point in the history
  • Loading branch information
wuxun-zhang committed May 19, 2023
1 parent 9f355d9 commit 2bf056f
Show file tree
Hide file tree
Showing 3 changed files with 99 additions and 0 deletions.
3 changes: 3 additions & 0 deletions source/elements/oneDNN/source/graph/data_model.rst
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,9 @@ it's suggested to refer to the definition page of each operation.

u8
8-bit unsigned integer.

boolean
Boolean data type. Size is C++ implementation defined.


oneDNN Graph supports both public layout and |opaque| layout. When the
Expand Down
95 changes: 95 additions & 0 deletions source/elements/oneDNN/source/graph/ops/Select.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
.. SPDX-FileCopyrightText: 2023 Intel Corporation
..
.. SPDX-License-Identifier: CC-BY-4.0
.. include:: ../../replacements.inc.rst


Select
######

Select operation returns a tensor filled with the elements from the second or
the third input, depending on the condition (the first input) value.

.. math::
\dst[i] = cond[i] ? \src\_0[i] : \src\_1[i]
Broadcasting is supported.

If the auto_broadcast attribute is not none, the select operation takes a
two-step broadcast before performing the selection:

- **Step 1**: Input tensors \src\_0 and \src\_1 are broadcasted to dst_shape
according to the Numpy broadcast rules.

- **Step 2**: Then, the cond tensor will be one-way broadcasted to the
dst_shape of broadcasted \src\_0 and \src\_1. To be more specific, we align
the two shapes to the right and compare them from right to left. Each
dimension should be either equal or the dimension of cond should be 1.

- **example**:

- cond={4, 5}, dst_shape={2, 3, 4, 5} => dst = {2, 3, 4, 5}
- cond={3, 1, 5}, dst_shape={2, 3, 4, 5} => dst = {2, 3, 4, 5}
- cond={3,5}, dst_shape={2, 3, 4, 5} => dst = invalid_shape

Operation Attributes
********************

+-------------------+-------------------+------------+------------+-------------+
| Attribute | Description | Value Type | Supported | Required or |
| Name | | | Values | Optional |
+===================+===================+============+============+=============+
| |attr_auto_bcast| | Specifies | string | ``none``, | Optional |
| | rules used | | ``numpy``, | |
| | for | | (default) | |
| | auto-broadcasting | | | |
| | of src | | | |
| | tensors | | | |
+-------------------+-------------------+------------+------------+-------------+


Execution Arguments
*******************

The inputs and outputs must be provided according to the below index order
when constructing an operation.

Inputs
======


===== ============= ====================
Index Argument Name Required or Optional
===== ============= ====================
0 ``cond`` Required
1 ``src_0`` Required
2 ``src_1`` Required
===== ============= ====================

@note All input shapes should match and no broadcasting is allowed if the
`auto_broadcast` attribute is set to `none`, or can be broadcasted according to
the broadcasting rules mentioned above if `auto_broadcast` attribute set to
`numpy`.

Outputs
=======


===== ============= ====================
Index Argument Name Required or Optional
===== ============= ====================
0 ``dst`` Required
===== ============= ====================

Supported Data Types
********************

Select operation supports the following data type combinations.

======= ===== ===== ====
Cond Src_0 Src_1 Dst
======= ===== ===== ====
boolean f32 f32 f32
boolean bf16 bf16 bf16
boolean f16 f16 f16
======= ===== ===== ====
1 change: 1 addition & 0 deletions source/elements/oneDNN/source/graph/ops/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,7 @@ subset of the operation set.
ReduceSum.rst
Reorder.rst
Round.rst
Select.rst
Sigmoid.rst
SigmoidBackward.rst
SoftPlus.rst
Expand Down

0 comments on commit 2bf056f

Please sign in to comment.