def test_transitive_closure(): edges = graphs.graph({ "a": {}, "b": {"c", "d"}, "c": set(), "d": {"e"}, "e": set() }) assert graphs.transitive_closure(edges) == { "a": set(), "b": {"c", "d", "e"}, "c": set(), "d": {"e"}, "e": set(), }
def __call__(self, only_merge_ops_with_view): """Perform a single optimization pass. Parameters ---------- only_merge_ops_with_view : bool Limits operator merges to operators with views. """ # --- Initialize pass state self.dependents = transitive_closure(self.dg.forward) self.only_merge_ops_with_view = only_merge_ops_with_view self.merged.clear() self.merged_dependents.clear() self.opinfo.clear() # --- Do an optimization pass self.perform_merges()
def __call__(self, only_merge_ops_with_view): """Perform a single optimization pass. Parameters ---------- only_merge_ops_with_view : bool Limits operator merges to operators with views. """ # --- Initialize pass state self.dependents = transitive_closure(self.dg.forward) self.only_merge_ops_with_view = only_merge_ops_with_view self.merged.clear() self.merged_dependents.clear() self.opinfo.clear() # --- Do an optimization pass self.perform_merges()
def test_transitive_closure(): edges = graphs.graph( {'a': {}, 'b': {'c', 'd'}, 'c': set(), 'd': {'e', }, 'e': set()}) assert graphs.transitive_closure(edges) == { 'a': set(), 'b': {'c', 'd', 'e'}, 'c': set(), 'd': {'e'}, 'e': set()}