RokkoEigensolverInstallScripts - t-sakashita/rokko GitHub Wiki

Rokko付属の固有値ソルバのインストールスクリプトの使い方

準備:ソルバのインストール先のディレクトリの作成

export PREFIX_ROKKO=$HOME/rokko_solvers
mkdir ${PREFIX_ROKKO}

$HOME/.rokkoinstallerで、インストール・作業用ディレクトリを定義する。

export PREFIX_ROKKO=$WORK/materiapps-intelmpi
export SOURCE_DIR=$WORK/source
export BUILD_DIR=$WORK/build-intelmpi

#export PREFIX_ROKKO=$WORK/materiapps
#export SOURCE_DIR=$WORK/source
#export BUILD_DIR=$WORK/build

上記は環境変数でも設定できる。(同名であれば環境設定の方が優先順位が高い。)

準備:トップのスクリプトの作成

cd development/rokko/3rd-party/install/00_env
bash default.sh

PREFIX_ROKKO(インストール先のディレクトリのトップ)に、rokkoenv.shが作成される。

スクリプトの仕様

3rd-party/installに、ソルバごとに以下のように同じ名前のスクリプトがある。

ユーザが実行するインストールスクリプト:

  • macos.sh Macで、LAPACK/BLASとして、Accelerate Frameworkを使う場合のスクリプト
  • intel-mkl.sh インテルコンパイラでMKLを使う場合のスクリプト。コンパイラはmpiccなどのラッパーがある場合はそれを用いる。MPIラッパーがない場合は、iccを使い、MPI用のリンクオプションを検出する。
  • fx10.sh 「京」・FX10でのインストールスクリプト
  • centos.sh Redhat系Linuxでのインストール方法。LAPACK/BLASは、yumコマンドでインストールされたものを使う。 実行する際にいるディレクトリは、どこでも良い。(カレントディレクトリが汚されることはない。) LD_LIBRARY_PATHにパスを通す。(動的ライブラリの場合、必要)

インストールスクリプト実行後に実行するスクリプト

  • link.sh ライブラリ名_ROOTという環境変数を作成。リンクを張る。

内部で使用されるスクリプト(ユーザは直接実行しない。)

  • setup.sh ダウンロード(できる場合)と解凍を行う。必要な場合、富士通コンパイラ向けのパッチの適用も行う。
  • *.patch 自動であてられるパッチ(主に「京」/FX10用)
  • version.sh インストールするソルバのバージョン番号、パッチのバージョン番号を与える

インストール先のディレクトリ名:

固有値ソルバ名-ソルバのバージョン-パッチのバージョン

EigenExaの場合:$PREFIX_ROKKO/eigenexa-2.2b-1

注:パッチのバージョンは、パッチ無しを0として数える。

ビルド時に、$HOME/buildにRelase, Debug用にディレクトリを作る。

例:EigenExa

ディレクトリ構造

  • eigenexa: eigenexa-2.2b-1へのリンク
  • eigenexa-2.2b-1/
    • Release
    • Debug
    • eigenexavars.sh

環境変数

EIGENEXA_ROOTは、eigenexa-2.2b-1/を指す。

例:PETSc(SLEPcで必要)

インストール手順

機種に合わせて、以下のいずれかを実行

sh rokko/3rd-party/install/PETSc/macos.sh
sh rokko/3rd-party/install/PETSc/fx10-interact.sh
sh rokko/3rd-party/install/PETSc/intel-mkl.sh
sh rokko/3rd-party/install/PETSc/centos.sh

ディレクトリ構造

petsc/ petsc-3.5.2-0/へのリンク
petsc-3.5.2-0/Debug
             /Release
             /petsccvars.sh

例:SLEPc

インストール手順

まず、PETScをインストールしておく。 SLEPcのインストールスクリプトは、機種によらず共通(PETScインストール時の設定を自動で取り込むため):

sh rokko/3rd-party/install/SLEPc/default.sh

リンクを張る:

sh rokko/3rd-party/install/SLEPc/link.sh

ディレクトリ構造

slepc/ slepc-3.5.3-0/へのシンボリックリンク
slepc-3.5.3-0/Debug
             /Release
             /slepcvars.sh

例:Trilinos

インストール手順

機種に合わせて、以下のいずれかを実行

sh rokko/3rd-party/install/Trilinos/macos.sh
sh rokko/3rd-party/install/Trilinos/fx10-interact.sh
sh rokko/3rd-party/install/Trilinos/intel-mkl.sh
sh rokko/3rd-party/install/Trilinos/centos.sh

ディレクトリ構造

petsc/ petsc-3.5.2-0/へのリンク
petsc-3.5.2-0/Debug
             /Release
             /petsccvars.sh

link.shによって張られるシンボリックリンク

DebugやReleaseの親ディレクトリ ${PREFIX_ROKKO}/rokkoenv.d

eigenexavars.sh@ -> rokko_solvers/eigenexa/eigenexavars.sh
petscvars.sh@ -> rokko_solvers/petsc/petscvars.sh
slepcvars.sh@ -> rokko_solvers/slepc/slepcvars.sh

デバッグ ${PREFIX_ROKKO}/rokkoenv-Debug.d/

eigenexavars.sh@ -> /rokko_solvers/eigenexa/Debug/eigenexavars.sh
petscvars.sh@ -> /rokko_solvers/petsc/Debug/petscvars.sh
slepcvars.sh@ -> /rokko_solvers/slepc/Debug/slepcvars.sh

リリース ${PREFIX_ROKKO}/rokkoenv-Release.d/

eigenexavars.sh@ -> /rokko_solvers/eigenexa/Release/eigenexavars.sh
petscvars.sh@ -> /rokko_solvers/petsc/Release/petscvars.sh
slepcvars.sh@ -> /rokko_solvers/slepc/Release/slepcvars.sh

Tips

コンパイラごとにソルバのインストールディレクトリを分ける事もできる。

メモ

Elemental-0.85のmake install時における、python用のラッパーのコピー

  • pythonラッパーを、pythonのインストールディレクトリにインストールする。そのため、ルート権限が必要となる。
  • Rokkoで使うElementalのlibmrrrなどは、pythonラッパーの後にインストールされる。
  • Pythonラッパーの生成を防止する方法、ルート権限が必要なファイルのコピーを省略する方法はあるか?

ライブラリを再インストールするときの注意

  • LD_LIBRARY_PATHDYLD_LIBRARY_PATHに古いバージョンのディレクトリがある場合は、外しておく。
  • さもないと、ライブラリのビルド時に、依存する下部のライブラリがリンクされてしまう。
  • 例:Elementalのlibmrrrなど
  • ライブラリに含まれるライブラリは、lddコマンドで確認できる。