> For example, if I have two “add” operators in my true and false branch, and
> I’d like to partition the true and false branches separately, can
> PartitionGraph() can help me?
This is exactly PartitionGraph does.
> To me, it looks like ParitioGraph() seems limited because it partitions based
> on annotations that are attached to per operator kind.
This is because you only invoke `AnnotateTarget` -> `PartitionGraph`. There is
another pass called `MergeCompilerRegion` that removes unnecessary annotations,
so you should go through `AnnotateTarget` -> `MergeCompilerRegion` ->
`PartitionGraph`.
The expected result of your example should be:
```
def @special_0(%special_0_i0: Tensor[(10, 1), float32], %special_0_i1:
Tensor[(10, 1), float32], global_symbol="special_0", Primitive=1,
Compiler="special", Inline=1) -> Tensor[(10, 1), float32] {
add(%special_0_i0, %special_0_i1) /* ty=Tensor[(10, 1), float32] */
}
def @special_1(%special_0_i0: Tensor[(10, 1), float32], %special_0_i1:
Tensor[(10, 1), float32], global_symbol="special_0", Primitive=1,
Compiler="special", Inline=1) -> Tensor[(10, 1), float32] {
multiply(%special_0_i0, %special_0_i1) /* ty=Tensor[(10, 1), float32] */
}
def @main(%c: bool, %x: Tensor[(10, 1), float32], %y: Tensor[(10, 1), float32],
%x1: Tensor[(10, 1), float32], %y1: Tensor[(10, 1), float32]) -> Tensor[(10,
1), float32] {
if (%c) {
@special_0(%x, %y) /* ty=Tensor[(10, 1), float32] */
} else {
@special_1(%x1, %y1) /* ty=Tensor[(10, 1), float32] */
}
}
```
If it's not, then we may have some issues/bugs to be fixed.
---
[Visit
Topic](https://discuss.tvm.apache.org/t/understanding-tvm-relays-partitiongraph-mod-function/8290/7)
to respond.
You are receiving this because you enabled mailing list mode.
To unsubscribe from these emails, [click
here](https://discuss.tvm.apache.org/email/unsubscribe/0c38de922e63c7557ef397e7cf4f66a47887451d202ded0b3d36eecdcf983746).