In [10]:
from dask.distributed import Client
import dask.array as da
from dask import delayed
from time import clock


def f(a,b):
    return da.stack([a,b],axis=-1)


def g(a):
    return da.exp(-da.sqrt(a))
 
if __name__ == '__main__':
    client = Client()

    N = 10000


    for i in [1,2,3,4,5]:
        a = da.random.normal(size=[N,N],chunks=(N>>i,N>>i))
        x = client.submit(f,a,a)
        y = client.submit(g,x)
        t1 = clock()
        y.result().compute()
        print("{} takes {} s".format(i,clock() - t1))


Wall time: 20.8 s
Out[10]:
array([[[        nan,         nan],
        [ 0.44239035,  0.44239035],
        [        nan,         nan],
        ..., 
        [        nan,         nan],
        [        nan,         nan],
        [ 0.41208752,  0.41208752]],

       [[ 0.20439242,  0.20439242],
        [        nan,         nan],
        [ 0.6304138 ,  0.6304138 ],
        ..., 
        [        nan,         nan],
        [        nan,         nan],
        [        nan,         nan]],

       [[ 0.36458233,  0.36458233],
        [ 0.43851681,  0.43851681],
        [ 0.41946341,  0.41946341],
        ..., 
        [        nan,         nan],
        [ 0.64371191,  0.64371191],
        [        nan,         nan]],

       ..., 
       [[ 0.35896745,  0.35896745],
        [ 0.54635247,  0.54635247],
        [        nan,         nan],
        ..., 
        [        nan,         nan],
        [        nan,         nan],
        [ 0.51700838,  0.51700838]],

       [[ 0.64798688,  0.64798688],
        [        nan,         nan],
        [ 0.5927887 ,  0.5927887 ],
        ..., 
        [        nan,         nan],
        [ 0.47979204,  0.47979204],
        [ 0.83501239,  0.83501239]],

       [[ 0.386788  ,  0.386788  ],
        [        nan,         nan],
        [        nan,         nan],
        ..., 
        [        nan,         nan],
        [        nan,         nan],
        [        nan,         nan]]])

In [ ]: