【问题标题】:Writing a netCDF file is extremely slow写入 netCDF 文件非常慢
【发布时间】:2021-05-09 17:08:33
【问题描述】:

我正在尝试对数据集执行相当简单的操作,涉及编辑每个 3.5GB 的单个 netcdf 文件的变量和全局属性。文件使用xr.open_dataset 立即加载,但dataset.to_netcdf() 在修改后导出速度太慢。 我试过了:

  1. 无需重新分块和 dask 调用。
  2. 不同的块大小后跟:
  3. to_netcdf 之前使用load()
  4. to_netcdf 之前使用persist()compute ()

我正在开发一个有 10 个分布式工作人员的 HPC。在所有情况下,每个文件花费的时间都超过 15 分钟。是预期的吗?除了使用 dask delay 进一步并行化单个文件操作之外,我还能尝试什么来加快这个过程?

【问题讨论】:

    标签: dask netcdf python-xarray


    【解决方案1】:

    首先简短说明:

    使用 xr.open_dataset 立即加载文件

    可能此时实际上并未加载数据,仅加载了元数据。根据您的 IO 和压缩/编码,加载数据可能需要相当多的 CPU 和内存。您应该知道您认为使用单个 CPU 线程应该花费多少时间。

    回答我们的问题: netCDF (HDF5) 不能很好地处理并行写入。您可能会发现由于锁定,一次只有一个任务正在写入,甚至输出数据在写入之前都将全部发送到单个任务,而不管您的分块如何。请检查您的仪表板!

    我建议您尝试一下 zarr 格式,该格式适用于并行应用程序,因为每个块都位于不同的文件中。您仍然需要对数据的正确分块做出决定 (example)。

    【讨论】:

      猜你喜欢
      • 2016-07-21
      • 1970-01-01
      • 2018-05-07
      • 2016-05-23
      • 1970-01-01
      • 2020-04-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多