获取Dask map_blocks以利用所有可用资源

时间:2018-11-01 15:27:35

标签: python dask python-xarray dask-distributed

我正在使用Dask在具有大量计算资源的集群上并行化时间序列卫星图像分析。

由于工作的尴尬并行性,我建立了一个分布式调度程序,其中许多工作人员(--nprocs = 56)每个人管理一个线程(--nthreads = 1)和4GB内存。

我的数据以xarray的形式进入,该xarray被分组成一个dask数组,而map_blocks用于在每个块上映射一个函数,以生成将被保存到图像文件的输出数组。

data = inputArray.chunk(chunks={'y':1})                
client.persist(data)            
future = data.data.map_blocks(timeSeriesTrends.timeSeriesTrends, jd, drop_axis=[1])            
future = client.persist(future)                
dask.distributed.wait(future)
outputArray = future.compute()

我的问题是Dask没有利用我分配给它的所有资源。取而代之的是,它从很少并行化的任务开始,并随着进程的完成而逐渐增加,而没有达到容量。

这极大地限制了我可以访问的硬件的功能,因为我的许多资源大部分时间都处于空闲状态。

我的方法是否适合从输入数组生成输出数组?在这种情况下,我如何最好地利用我可以使用的硬件?

0 个答案:

没有答案