LoginSignup
5
1

More than 3 years have passed since last update.

C++によるHDF5の取り扱い(インストール編)

Last updated at Posted at 2020-05-15

科学技術計算の配列データ読み書きでよく用いられているHDF5を以前から導入したいと思っていました。しかし、Pythonの記事は多くあるものの実際にシミュレーションで使用するC++での利用について触れられた資料があまりなかったので導入に少し苦戦しました。シミュレーションでHDF5を使ってみたいと考えている方の役に立てばと思います。

導入の経緯

3Dシミュレーションなどを行っていると、粒子の座標情報など非常に大きなデータを吐き出す場面が多々あります。このような情報をテキストデータとして書き出してもよいのですが、ファイルへの書き出しとプロット時の読み込みが遅いことを不満に感じていた。

HDF5について

いきなりインストール方法について書いてもよいが、せっかくなのでHDF5の特徴について少しだけ触れておきたいと思います。

  • 階層構造を持ったデータを保存できる。例えば、分子シミュレーションなどでステップごとに粒子配置のファイルを生成する必要がなく一つの.h5ファイルに保存することができる。
  • バイナリ形式で保存されるため、テキストファイルと比較すると非常に早く読み書きできる。
  • 計算を行う際のパラメータなどを属性として保存できるので、どのような条件で計算して得られたデータであるのか把握しやすい。

インストール

科学技術計算では通常、ローカルマシンからリモート(計算機サーバー)にジョブを投げる形でシミュレーション計算を行います。そこで今回は、計算機サーバーにHDF5をインストールしたいと思います。動作環境は以下の通り。

  • OS: CentOS 6.10 x86_64
  • CPU: Intel(R) Xeon(R) CPU E5-1650 6コア 3.2GHz
  • メモリ: 16GB

Linuxであればapt-getやyumなどのパッケージマネージャによりHDFをインストールすることができますが、今回はroot権限のない計算機サーバーを想定して、ソースコードからインストールします。
サーバーにログインしたら、コマンドラインに次のように入力しソースコードをダウンロード・解凍します。

$> cd $HOME/Downloads  
$> wget https://support.hdfgroup.org/ftp/HDF5/current/src/hdf5-1.10.5.tar.bz2
$> tar -zxf hdf5-1.10.5.tar.bz2 -C $HOME/local/src

$HOME/local/srcに展開していますが、展開先・インストール先はお好みの場所で構いません。
次に、ビルド・インストールを行います。

$> cd $HOME/local/src/hdf5-1.10.5
$> ./configure --prefix=$HOME/local --enable-cxx
$> make && make install

最後に、$HOME/.bash_profileに以下の文を追加するとHDFライブラリを利用できるようになります。

$HOME/.bash_profile
export LD_LIBRARY_PATH=$HOME/local:$LD_LIBRARY_PATH

コンパイル、実行時の注意  

コンパイルの際、以下のようにライブラリを指定してあげる必要があります。

g++ hogehoge.cpp -lhdf5_cpp -L($HOME)/local/lib -I($HOME)/local/include

また、計算機から他の計算機にジョブを投げる際にはジョブを投げるスクリプトに$HOME/.bash_profile同様にライブラリパスを追記する必要があります。  

  

次回は配列の書き出し方について書きたいと思います。

5
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
1