平林孝太@東京大学研究のはなし、個人的なメモ書きなどのページになる予定です。。。 |
HDF5並列書き込みテンプレート
HDF5ファイルフォーマットを利用した並列I/Oのテンプレート、置いておきます。 前回の parallel.f90 および メッシュ生成用のモジュール mesh.f90 を使う前提になっているので、利用する場合はそちらも。どうぞ。
HDF5 (Hierarchical Data Format 5) というのは自己記述式のファイル形式のひとつで、科学技術系のデータファイルではnetCDFと並んで広く使われるフォーマット。衛星データとか。
データの格納形式はディレクトリ構造と非常に似通っていて、理解は容易なのでドキュメントを参照されたし。ライブラリを構築するときの設定で並列I/Oも可能。
Fortran用のライブラリが無償で提供されているので、手元で利用する場合は本家サイトから各自インストール。スパコンとかの場合は管理者に相談。
コード解説
使い方は簡単。 メインプログラムの最初で init_output を呼びだす。ここで並列I/O用のファイルをオープンする。 データの書き込みをしたいときに output を呼び出す。 最後に fin_output を呼び出す。ファイルのクローズとか。これだけ。 その他の変数はprivate属性で隠蔽してあるので、外からは他には何もできない。
出来上がるのは filename に格納された名前のファイルひとつ。 その中に各タイムステップごとにグループ(ディレクトリみたいなもん)ができて、 各ステップの中にはさらに各変数がグループを作っている。変数名グループの中に実際のデータが書き込まれる。 グループ名は stepname, varnameなどで設定する。
内容説明
少し詳し目にコメントを入れてあるので、ドキュメントと照らし合わせながら読めば理解できるはず。 というわけで今回、説明を省く!
というわけにもいかないので気が向いたらいつか。
HDFビューア
HDFView というHDF5ファイルの中身を見るためのビューアが本家で提供されている。 というか、ぶっちゃけこれ以外にまともなビューアソフトがない。 僕自身はHDFViewの他に、解析用のPythonライブラリ h5py を入れている。