Skip to content

Commit a93c572

Browse files
authored
Reorder optimization passes (#2433)
CSE benefits from lifting constants to initializers, and from initializer deduplication. Hence, it is better to have CSE after the other two. Furthermore, we want this to apply to all constants, including `Constant(value_int=1)` etc., so set those options for lifting constants. --------- Signed-off-by: Ganesan Ramalingam <grama@microsoft.com>
1 parent 87baf8f commit a93c572

File tree

2 files changed

+3
-3
lines changed

2 files changed

+3
-3
lines changed

onnxscript/optimizer/_function_folding_test.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,7 @@ def test_fold_nested_if_function_succeeds(self):
151151
optimized = optimizer.optimize(model, onnx_shape_inference=False, inline=True)
152152

153153
self.assertEqual(len(optimized.functions), 0)
154-
self.assertEqual(len(optimized.graph), 2)
154+
self.assertEqual(len(optimized.graph), 1)
155155
self.assertNotIn("If", {n.op_type for n in optimized.graph})
156156

157157

onnxscript/optimizer/_optimizer.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,10 +53,10 @@ def optimize_ir(
5353
early_stop=stop_if_no_change,
5454
),
5555
common_passes.RemoveUnusedNodesPass(),
56-
common_passes.CommonSubexpressionEliminationPass(),
57-
common_passes.LiftConstantsToInitializersPass(),
56+
common_passes.LiftConstantsToInitializersPass(lift_all_constants=True, size_limit=0),
5857
common_passes.LiftSubgraphInitializersToMainGraphPass(),
5958
common_passes.DeduplicateInitializersPass(),
59+
common_passes.CommonSubexpressionEliminationPass(),
6060
]
6161
if inline:
6262
# Inline all functions first before optimizing

0 commit comments

Comments
 (0)