【问题标题】:How do I use parallel I/O with netCDF-4?如何在 netCDF-4 中使用并行 I/O?
【发布时间】:2013-10-11 14:41:21
【问题描述】:

我想从 R 中读取和写入单个 netCDF-4 文件。该文件将被许多节点进程同时访问(大约 100 个用于开发,大约 1000 个用于生产)。

从 R 中访问 netCDF 中并行 I/O 功能的最佳方式是什么?

我发现了什么:

  • 从 Unidata 页面看来,我需要做的就是在启用并行功能的情况下进行编译 (--enable-parallel)。这真的是我需要做的吗?
  • 我在 ncdf4 包描述中找不到任何关于并行 io 的提及。
  • 鉴于 I/O 是我的计算中的瓶颈,关于如何优化我的计算的任何提示 - 是否存在在计算期间(例如,本地)写入多个文件并稍后合并文件更好的情况(例如使用nco)?

【问题讨论】:

  • 你有支持并行 I/O 的硬件和文件系统吗?
  • @HighPerformanceMark 是的。一个是 RedHat Rocks 集群 (info here),另一个是 Dell PowerEdge 集群 (info here)

标签: r io parallel-processing netcdf nco


【解决方案1】:

有关使用 Unidata NetCDF 并行 I/O 的信息可在此处找到:

https://www.unidata.ucar.edu/software/netcdf/docs/parallel_io.html

配置 netCDF 时不再需要 --enable-parallel 标志;它将检查文档并在需要时进行更新。但是,在构建 hdf5 库时, 标志是必需的。

为了在 netCDF-4 中使用并行 I/O,您需要确保它是针对启用并行 I/O 的 hdf5 库构建的。在配置时,netCDF 将查询 hdf5 库以查看是否存在并行 I/O 符号。

  • 如果是,则假定为 netCDF-4 的并行 I/O。
  • 如果不是,则 netCDF-4 文件的并行 I/O 将关闭。

如果是自己安装netCDF库,可以在配置的时候指定--enable-parallel-tests标志;当您运行make check 时,将运行并行测试。您还可以扫描 config.log 中的输出以查看是否在 hdf5 库中找到了并行 I/O 功能;应该有一条消息通知您它是否已启用。

请注意,使用 netCDF-4 进行并行 I/O 有一些限制,特别是:

NetCDF-4 提供对 netCDF-4/HDF5 文件的 HDF5 并行 I/O 功能的访问。不能打开或创建 NetCDF 经典和 64 位偏移格式以用于并行 I/O。 (它们可能会被打开和创建,但并行 I/O 不可用。)

假设底层 netCDF 库启用了并行 I/O,并且您正在对正确类型的文件进行操作,则 ncdf4 调用的标准 API 调用应该自动利用并行 I/O。

【讨论】:

    【解决方案2】:

    还有一个专门用于并行处理 NetCDF 文件的 R 包,称为 pbdNCDF4。
    此解决方案基于标准 ncdf4 包,因此语法与“传统”方法非常相似。有关 CRAN 的更多信息:https://cran.r-project.org/web/packages/pbdNCDF4/vignettes/pbdNCDF4-guide.pdf

    【讨论】:

      【解决方案3】:

      Ward 给出了一个很好的答案。我想补充一点,还有另一种方法可以从 Unidata NetCDF-4 中获得并行 I/O 功能。

      NetCDF-4 的架构将 API 与后端存储实现分开。通常,这是 HDF5 后端上的 NetCDF API。但是,这很巧妙:您还可以在 Northwestern/Argonne “Parallel-NetCDF”(http://cucis.ece.northwestern.edu/projects/PnetCDF/http://www.mcs.anl.gov/parallel-netcdf)后端使用 NetCDF API。

      这种方法将为您提供一种对经典和 64 位偏移格式数据集的并行 I/O 方法。

      【讨论】:

        【解决方案4】:

        Ward 和 Rob 都给出了很好的答案! ;-)

        但还有另一种方法可以通过标准 netCDF API 在经典和 64 位偏移文件上获得并行 I/O。

        当使用 --enable-pnetcdf 构建 netCDF 时,在幕后使用 parallel-netcdf 库在经典、64 位偏移和 CDF5 上执行并行 I/O(尽管我没有测试过并行 I/O 的最后一种格式)。

        打开文件时,使用模式的 NC_PNETCDF 标志来指示您要对该文件使用并行 I/O。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-05-20
          • 2011-07-26
          • 2021-06-04
          • 2013-11-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-06-15
          相关资源
          最近更新 更多