def test_optimize(): x = dask.delayed(inc)(1) y = dask.delayed(inc)(x) z = x + y x2, y2, z2, constant = optimize(x, y, z, 1) assert constant == 1 # Same graphs for each dsk = dict(x2.dask) assert dict(y2.dask) == dsk assert dict(z2.dask) == dsk # Computationally equivalent assert dask.compute(x2, y2, z2) == dask.compute(x, y, z) # Applying optimizations before compute and during compute gives # same results. Shows optimizations are occurring. sols = dask.compute(x, y, z, optimizations=[inc_to_dec]) x3, y3, z3 = optimize(x, y, z, optimizations=[inc_to_dec]) assert dask.compute(x3, y3, z3) == sols # Optimize respects global optimizations as well with dask.config.set(optimizations=[inc_to_dec]): x4, y4, z4 = optimize(x, y, z) for a, b in zip([x3, y3, z3], [x4, y4, z4]): assert dict(a.dask) == dict(b.dask)
def visualize(self, sql: str, filename="mydask.png") -> None: # pragma: no cover """Visualize the computation of the given SQL into the png""" result = self.sql(sql, return_futures=True) (result, ) = optimize(result) result.visualize(filename)
def test_optimize_nested(): a = dask.delayed(inc)(1) b = dask.delayed(inc)(a) c = a + b result = optimize({"a": a, "b": [1, 2, b]}, (c, 2)) a2 = result[0]["a"] b2 = result[0]["b"][2] c2 = result[1][0] assert isinstance(a2, Delayed) assert isinstance(b2, Delayed) assert isinstance(c2, Delayed) assert dict(a2.dask) == dict(b2.dask) == dict(c2.dask) assert compute(*result) == ({"a": 2, "b": [1, 2, 3]}, (5, 2)) res = optimize([a, b], c, traverse=False) assert res[0][0] is a assert res[0][1] is b assert res[1].compute() == 5
def test_optimize_nested(): a = dask.delayed(inc)(1) b = dask.delayed(inc)(a) c = a + b result = optimize({'a': a, 'b': [1, 2, b]}, (c, 2)) a2 = result[0]['a'] b2 = result[0]['b'][2] c2 = result[1][0] assert isinstance(a2, Delayed) assert isinstance(b2, Delayed) assert isinstance(c2, Delayed) assert dict(a2.dask) == dict(b2.dask) == dict(c2.dask) assert compute(*result) == ({'a': 2, 'b': [1, 2, 3]}, (5, 2)) res = optimize([a, b], c, traverse=False) assert res[0][0] is a assert res[0][1] is b assert res[1].compute() == 5