1

R から単一の netCDF-4 ファイルを読み書きしたいと思います。このファイルは、同時に多くのノード プロセスによってアクセスされます (開発では最大 100、本番では最大 1000)。

R内からnetCDFの並列I/O機能にアクセスする最良の方法は何ですか?

私が見つけたもの:

  • Unidata ページから、並列機能を有効にしてコンパイルするだけでよいことがわかります ( --enable-parallel)。それだけで本当に私がしなければならないことですか?
  • ncdf4 パッケージの説明に、並列 io に関する記述が見つかりません。
  • I/O が私の計算のボトルネックであることを考えると、私の計算を最適化する方法についてのヒント - 計算中に複数のファイルに書き込み (たとえば、ローカル)、後でファイルを結合する方がよい状況はありますか (たとえば、nco )?
4

4 に答える 4

4

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 の出力をスキャンして、並列 I/O 機能が hdf5 ライブラリで見つかったかどうかを確認することもできます。有効になっているかどうかを通知するメッセージが表示されるはずです。

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 を自動的に活用するはずです。

于 2013-10-11T22:20:31.800 に答える
1

ウォードとロブの両方が良い答えを出しました! ;-)

しかし、標準の netCDF API を介して、従来のファイルと 64 ビット オフセット ファイルで並列 I/O を取得する別の方法があります。

--enable-pnetcdf を使用して netCDF をビルドすると、裏で parallel-netcdf ライブラリが使用され、クラシック、64 ビット オフセット、および CDF5 で並列 I/O が実行されます (ただし、最後の形式を使用してテストしていません)。パラレル I/O)。

ファイルを開くときは、モードに NC_PNETCDF フラグを使用して、そのファイルに並列 I/O を使用することを示します。

于 2016-01-14T16:37:49.310 に答える
1

ウォードは見事に答えた。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 ) バックエンド。

このアプローチにより、従来の 64 ビット オフセット形式のデータセットに並列 I/O 方式が提供されます。

于 2015-02-23T15:54:48.697 に答える