Относительно xarray apply_ufunc
Я пытаюсь рассчитать суточную Tmax по 3-часовому глобальному набору данных. Я могу сделать это с помощью groupby, но я хотел бы выяснить, как я могу уменьшить вычислительное время, используя параллельные операции dask (например, используя apply_ufunc). Если есть хорошая документация по ufunc, пожалуйста, дайте мне знать (документация по xarray не была достаточно подробной для меня, оставила меня немного смущенным, так как у меня нет никакого предыдущего опыта работы с dask). Спасибо!!
Вот как выглядит мой код:
TAS = xr.open_dataset(INFILE_template.format(YR, YR), chunks={'time':8})
DAYMAX = TAS.groupby('time.dayofyear').max(dim='time')
DAYMAX.to_netcdf(OUTFILE_template.format(YR, YR))
Размеры ТАС указаны ниже:
<xarray.Dataset>
Dimensions: (lat: 720, lon: 1440, time: 2928)
Coordinates:
* lon (lon) float64 0.125 0.375 0.625 0.875 1.125 1.375 1.625 1.875 ...
* lat (lat) float64 -89.88 -89.62 -89.38 -89.12 -88.88 -88.62 -88.38 ...
* time (time) datetime64[ns] 2008-01-01 2008-01-01T03:00:00 ...
Data variables:
tas (time, lat, lon) float32 dask.array<shape=(2928, 720, 1440),
1 ответ
Если вы уже можете написать свой анализ с groupby()
и другие методы xarray, все они уже распараллелены с dask. apply_ufunc
облегчает перенос новой функциональности для поддержки xarray и dask, но все встроенные подпрограммы в xarray уже используют apply_ufunc
или что-то подобное внутри для поддержки Dask.
В качестве примечания: если вы любезно уточните, что вы нашли запутанным или отсутствующим в документах xarray, мы всегда стремимся улучшить их!