我想从R的单个netCDF-4文件中读取和写入。文件将同时被许多节点进程访问,(~100个用于开发,~1000个用于生产)。
从R内部访问netCDF中的并行I / O功能的最佳方法是什么?
我发现了什么:
--enable-parallel
)。这真的是我需要做的全部吗?答案 0 :(得分:4)
可以在此处找到与使用Unidata NetCDF并行I / O相关的信息:
http://www.unidata.ucar.edu/software/netcdf/docs/netcdf-tutorial/Parallel.html
配置netCDF时不再需要--enable-parallel
标志;它将检查文档并在需要时进行更新。但是,在构建hdf5
库时,标志是。
为了与netCDF-4一起使用并行I / O,您需要确保它是针对启用了并行I / O的hdf5库构建的。在配置时,netCDF将查询hdf5
库以查看并行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. / p>
答案 1 :(得分:2)
还有一个专用于并行处理NetCDF文件的R包,称为pbdNCDF4。
此解决方案基于标准的ncdf4包,因此语法与“传统”方法非常相似。有关CRAN的更多信息:https://cran.r-project.org/web/packages/pbdNCDF4/vignettes/pbdNCDF4-guide.pdf
答案 2 :(得分:1)
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方法。
答案 3 :(得分:1)
Ward和Rob都给出了很好的答案! ; - )
但是还有另一种方法可以通过标准的netCDF API在经典和64位偏移文件上获得并行I / O.
当netCDF使用--enable-pnetcdf构建时,则在后台使用parallel-netcdf库来执行经典,64位偏移和CDF5上的并行I / O(尽管我还没有测试过并行I / O的最后一种格式。
打开文件时,使用模式的NC_PNETCDF标志表示您要对该文件使用并行I / O.