スキップしてメイン コンテンツに移動

Gadget-2のインストール (Linux)

Gadget-2をLinux (BoW/Debian) にインストールしました (2017年6月). 基本的には日々ubuntuに感謝しつつ様に書いてある通りですが, いくつかうまくいかない点があったので, 改めてここにインストール方法を書いておきます.



0. 最初に

Gadget-2の動作にはFFTW2, GSLライブラリが必要です. MPIも必要ですが, ここではインストール済みと仮定します (Debian系の場合apt install openmpi-binあたりのコマンドで一発だと思います). またアウトプットをHDF5形式で書き出す場合にはHDF5関連ライブラリも必要です (これがなくてもバイナリ形式で書き出すことはできます). 管理者権限がある場合にはこれらのライブラリを /usr/local/ 以下に展開すればよいと思います (そのときライブラリは/usr/local/lib/に生成されます). 一方, 管理者権限がない場合, また管理者権限があっても自分しか利用しないと思われる場合, ライブラリを /home/username/local/ 以下に展開すれば良いのかな, という気がします. ここでは/usr/local/に展開するものと思ってコマンドを記述しますが, 自分のホームに展開する場合は適宜読み替えてください. なお, /usr/localに展開する場合にはsudo make installとすべきですが, 以下では単にmake installと書いています.

1. FFTW2のインストール

FFTWの最新リリースはFFTW3で, 現在はそちらが推奨されますが, 並列計算の都合? で, Gadget-2を利用するためにはFFTW2でなければいけません.
$> wget http://www.fftw.org/fftw-2.1.5.tar.gz
$> tar -zxf fftw-2.1.5.tar.gz
$> cd fftw-2.1.5
$> ./configure --enable-float --enable-type-prefix --enable-mpi --prefix /usr/local/
$> make 
$> make install
$> make clean
$> ./configure --enable-type-prefix --enable-mpi --prefix /usr/local/
$> make 
$> make install


2. GSLのインストール

基本的には普通にインストールすればよいです. 2017年6月時点の最新版はGSL2.3なので, それをインストールします.
$ wget http://ftp.jaist.ac.jp/pub/GNU/gsl/gsl-2.3.tar.gz
$ tar -zxf gsl-2.3.tar.gz
$ cd ./gsl-2.3
$ ./configure --prefix=/usr/local
$ make
$ make install
  
これで完了ですが, ただし環境によってはGadget2が (コンパイルはできるのに) 実行できないということがあります. この事象がどういう条件で起こるのかよくわからない (2台のWin10のBoWにインストールしましたが, 一方はうまくいって, もう一方はここで躓いた) ですが, ともかくライブラリの場所へパスを通せば解決します. コマンドラインで
$ LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
$ export LD_LIBRARY_PATH
  
を実行してください (参考文献). 毎回起動時にこれを叩くのは面倒なので, これでうまくいくことが確認できたら, ~/.profile (ないし対応するプロファイル) にこのコマンドを書き込めばよいです.

3. HDF5のインストール

GSLのインストールと並んで, ここでも引っ掛かりました. Gadget-2が書かれたのは2005年なので, その時点でのバージョンであるHDF5-1.6ないしそれ以前のバージョンを使わないとコンパイルできません. 現在のリリースはv1.8とv1.10ですが, そのどちらを使ってもうまくいきません.
$ wget https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-1.6/hdf5-1.6.10/src/hdf5-1.6.10.tar.gz
$ tar -zxf hdf5-1.6.10.tar.gz
$ cd hdf5-1.6.10
$ ./configure --prefix=/usr/local/
$ make
$ make install
  


4. Gadget-2のインストール

ここまで来たら後は問題なくインストールできるはずです. ただしMakefileの中にいまインストールしたライブラリの場所を書き込む必要があります.
$ wget http://wwwmpa.mpa-garching.mpg.de/gadget/gadget-2.0.7.tar.gz
$ tar -zxf gadget-2.0.7.tar.gz
$ cd ./Gadget-2.0.7/Gadget2
$ emacs Makefile
ここで先述の日々ubuntuに感謝しつつ様などを見ながら適当にMakefileを書き直します. ただし, HDF5に関してはHDF5LIB = -L/usr/local/ -lhdf5 -lzとしてください. それができたら
$ make
  
で終わりです. 動作確認は日々ubuntuに感謝しつつ様に書いてある通りにすれば大丈夫です. HDF5でアウトプットを書き出すには, galaxy.paramファイルのSnapFormatを1から3に切り替えます.

感想

GSLのパス, HDF5ライブラリのバージョンという二つの落とし穴に嵌って, インストールするのに一週間弱かかりました. これからGadget-2をいろいろ回して楽しみたいと思います.

コメント

このブログの人気の投稿

matplotlib.histのnormedが変

以下の内容はPython 3.5.2 + matplotlib 1.5.1およびPython 3.6.2 + matplotlib 2.0.2で検証した. 作業日は2017年10月22日, 前者はUbuntu 16.04 on Win10 (WSL), 後者はDebian 8.9 (Anaconda). 規格化したいのにできない なにか数値の列 data があったとして, そのヒストグラムをmatplotlibでプロットしたいとする. 普通に plt.hist( data ) とすると, これは縦軸が各bin内に入るデータ点が何個あるかを表すことになる. これをデータ総数 len(data) で規格化したプロットにしようと思って plt.hist( data, normed=True ) または normed=1 とかやっちゃうと, 思った通りのアウトプットにならずに頭を傾げることになる. 例えば: import numpy as np import matplotlib.pyplot as plt data = np.random.normal(0,0.1,1000) weights = np.ones(len(data))/len(data) plt.hist( data, weights=weights ) plt.show() アウトプットは で, 縦軸が1を超えるとか, 意味がわからない. 原因 matplotlibのドキュメント を見ても何も書いてない. これは numpyのドキュメント に答えが書いてあるからで, 要するに normed オプションは事実上 density オプションと等しく, これは縦軸を確率分布関数と思って規格化するオプションである, と. 従って, normed=True オプションを指定すると, binの 面積 が1に規格化されることになる. いま欲しいものは値の 総和 が1に規格化されたアウトプットなのだから, binの幅が1でない限り, 欲しい結果は得られない. 対策 代わりに weights オプションを指定すればこの問題は解決できる. これは data の1つの値の重みを指定するパラメー

UbuntuのPDF編集ツールの使い方まとめ

PDFtkやpoppler-utilsに含まれるツールを使ってPDFを編集するコマンドのまとめです. 0. インストール sudo apt install pdftk sudo apt install poppler-utils UbuntuあるいはBash on Windowsならaptコマンドで一発. 1. PDFの文書情報の表示 pdfinfo (ファイル名) 2. PDFの分割と結合 pdftk (入力ファイル) cat (ページの指定) output (出力ファイル) ページ数の指定は1-12 14-endみたいな形で書けばよい. 入力ファイルを複数指定してページ数の指定を省略すればPDFの結合ができる. 3. PDFをJPEG/PNGに変換 pdftoppm [オプション] (入力ファイル名) (出力ファイル名の接頭辞) JPEGが欲しい場合-jpegを, PNGが欲しい場合-pngをオプションに指定する. デフォルトの解像度はDPI150で粗すぎるのでオプションで-r 300ないし-r 600を指定すべき. 白黒画像にしたい場合は-monoないし-grayを指定 (個人的には-grayのが好み). 複数ページのPDFを変換すると, 出力ファイルは (出力ファイル名の接頭辞)-1.jpg (出力ファイル名の接頭辞)-2.jpg みたいな形で生成される. 4. PDFからテキストを抽出 pdftotext (入力ファイル名) (出力ファイル名) 出力ファイルの文字コードはUTF-8, 改行コードはLF. 出力ファイル名は省略可能. 5. PDFから画像を抽出 pdfimages [オプション] (入力ファイル名) (出力ファイル名の接頭辞) オプションについて: -pngでPNG, -jでJPEG, -tiffでTIFF形式で出力される (オプションなしだとPPM形式) 6. PDFを回転 pdftk (入力ファイル名) cat 1-end(向き) output (出力ファイル名) 向きとしてはleft, right, downまたはnorth, east, west, southが使用可能. ※向きを指定する前にスペースを入れるとエラーになる. 関連ページ

源ノ明朝/源ノ角ゴシックをLuaLaTeXで使用する (Windows)

源ノ明朝 (Source Han Serif), 源ノ角ゴシック (Source Han Sans) はAdobeとGoogleが作成したCJKフォントで, オープンソースフォントとして公開されています (ライセンスはSIL Open Source License 1.1). 以下では, LuaTeXエンジンでこのフォントを (日本語で) 使用する方法を説明します. あるいは, otfファイルがダウンロードできれば, どのようなフォントにも適用可能です (PDFにフォント埋め込みすることに関してライセンスに注意が必要ですが). Windows10を前提としますが, 他の環境 (Linux/Mac) でもほぼ同じ方法で導入できるんじゃないでしょうか. 使用したのはTeX Live 2016 (LuaTeX-0.95) です.