(expr)
| 885 | |
| 886 | |
| 887 | def collect_dependents(expr) -> defaultdict: |
| 888 | dependents = defaultdict(list) |
| 889 | stack = [expr] |
| 890 | seen = set() |
| 891 | while stack: |
| 892 | node = stack.pop() |
| 893 | if node._name in seen: |
| 894 | continue |
| 895 | seen.add(node._name) |
| 896 | |
| 897 | for dep in node.dependencies(): |
| 898 | stack.append(dep) |
| 899 | dependents[dep._name].append(weakref.ref(node)) |
| 900 | return dependents |
| 901 | |
| 902 | |
| 903 | def optimize(expr: Expr, fuse: bool = True) -> Expr: |