> 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).

Reply via email to