如何解决写入 netCDF 文件非常慢
我正在尝试对数据集执行一个相当简单的操作,包括在每个 3.5GB 的单个 netcdf 文件上编辑变量和全局属性。文件使用 xr.open_dataset
立即加载,但 dataset.to_netcdf()
修改后导出速度太慢。
我试过了:
我正在开发具有 10 个分布式工作器的 HPC。在所有情况下,每个文件花费的时间都超过 15 分钟。是预期的吗?除了使用 dask 延迟进一步并行化单个文件操作之外,我还能尝试什么来加速这个过程?
解决方法
首先简要说明:
使用 xr.open_dataset 立即加载文件
您可能此时实际上并未加载数据,仅加载了元数据。根据您的 IO 和压缩/编码,加载数据可能需要相当多的 CPU 和内存。您应该知道您认为单个 CPU 线程应该花费多少时间。
回答我们的问题: netCDF (HDF5) 不能很好地处理并行写入。您可能会发现由于锁定,一次只有一个任务正在写入,或者甚至在写入之前输出数据都将转到单个任务,而不管您的分块如何。请检查您的 dask 仪表板!
我建议您尝试 zarr 格式,它适用于并行应用程序,因为每个块都在不同的文件中。您仍然需要决定正确的数据分块 (example)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。