Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 10 additions & 12 deletions backends/qualcomm/_passes/decompose_silu.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@

import torch
from executorch.exir.pass_base import ExportPass, PassResult
from torch.fx.passes.utils.source_matcher_utils import get_source_partitions


class DecomposeSilu(ExportPass):
Expand All @@ -22,24 +21,23 @@ def _copy_meta(self, meta: Dict):

def call(self, graph_module: torch.fx.GraphModule):
graph = graph_module.graph
partitions = get_source_partitions(
graph, [torch.nn.functional.silu, torch.ops.aten.silu.default]
)
for _, src_partitions in partitions.items():
for src_partition in src_partitions:

inputs = src_partition.input_nodes
silu_node = src_partition.nodes[0]
with graph_module.graph.inserting_after(inputs[0]):
for node in graph.nodes:
if (
node.op == "call_function"
and node.target == torch.ops.aten.silu.default
):
silu_node = node
silu_node_input = node.args[0]
with graph_module.graph.inserting_after(silu_node_input):
sigmoid_node = graph.create_node(
"call_function", torch.ops.aten.sigmoid, (inputs[0],)
"call_function", torch.ops.aten.sigmoid, (silu_node_input,)
)
sigmoid_node.meta = self._copy_meta(silu_node.meta)
with graph_module.graph.inserting_after(sigmoid_node):
mul_node = graph.create_node(
"call_function",
torch.ops.aten.mul,
(inputs[0], sigmoid_node),
(silu_node_input, sigmoid_node),
)
mul_node.meta = self._copy_meta(silu_node.meta)
for user in silu_node.users.copy():
Expand Down
Loading