Source code for onnx_ir.passes.common.topological_sort
# Copyright (c) ONNX Project Contributors# SPDX-License-Identifier: Apache-2.0"""Pass for topologically sorting the graphs."""from__future__importannotations__all__=["TopologicalSortPass",]importonnx_irasir
[docs]classTopologicalSortPass(ir.passes.InPlacePass):"""Topologically sort graphs and functions in a model."""defcall(self,model:ir.Model)->ir.passes.PassResult:original_nodes=list(model.graph)model.graph.sort()sorted_nodes=list(model.graph)forfunctioninmodel.functions.values():original_nodes.extend(function)function.sort()sorted_nodes.extend(function)# Compare node orders to determine if any changes were mademodified=Falsefornode,new_nodeinzip(original_nodes,sorted_nodes):ifnodeisnotnew_node:modified=Truebreakreturnir.passes.PassResult(model=model,modified=modified)