我想执行N = 1000引导,并替换网格数据。一次计算大约需要0.5s。我可以访问具有48个内核的超级计算机专用节点。因为重采样是相互独立的,所以我天真地希望将工作负载分配到所有或至少多个内核上,并使性能提高0.8 * ncores。但是我不明白。
我仍然缺乏对敏捷的了解。基于设置敏捷工作者数量的最佳实践,我使用:
from dask.distributed import Client
client = Client(processes=False, threads_per_worker=8, n_workers=6, memory_limit=‘32GB')
Run Code Online (Sandbox Code Playgroud)
我也尝试过SLURMCluster,但我想我首先需要了解自己的工作,然后进行扩展。
我的MWE:
import dask
import numpy as np
import xarray as xr
from dask.distributed import Client
inits = np.arange(50)
lats = np.arange(96)
lons = np.arange(192)
data = np.random.rand(len(inits), len(lats), len(lons))
a = xr.DataArray(data,
coords=[inits, lats, lons],
dims=['init', 'lat', 'lon'])
data = np.random.rand(len(inits), len(lats), len(lons))
b = xr.DataArray(data,
coords=[inits, lats, lons],
dims=['init', 'lat', 'lon'])
def func(a,b, dim='init'): …Run Code Online (Sandbox Code Playgroud)