PHASE/0は、PHASEシステム研究会が管理している第一原理電子状態計算ソフトウェアです。そのソースコードは無料でダウンロードできますので、それをコンパイルして計算実行する手順をご説明します。開発環境が整っていることを前提とします(開発環境構築についてはこちらを参照して下さい)。
PHASE/0ダウンロード版一式は、GNUコンパイラを利用してコンパイルできるように整備されています。インストール手順はマニュアルで詳しく説明されていますが、改めてここに示します。install.sh実行後は【...】内を入力して下さい。
$ tar zxf phase0_2015.01.tar.gz
$ cd phase0_2015.01/
$ ./install.sh
=== PHASE installer ===
Do you want to install PHASE? (yes/no) [yes]
【enter】
GenMake ver 1200
Supported platforms
0) GNU Linux (IA32)
1) GNU Linux (EM64T/AMD64)
2) NEC SX Series
x) Exit
Enter number of your platform. [0]
【1 enter】
Selected platform: GNU Linux (EM64T/AMD64)
Supported compilers
0) GNU compiler collection (gfortran)
1) Intel Fortran compiler
x) Exit
Enter number of a desired compiler. [0]
【enter】
Selected compiler: GNU compiler collection (gfortran)
Supported programming-models
0) Serial
1) MPI parallel
x) Exit
Enter number of a desired programming-model. [0]
【1 enter】
Selected programming-model: MPI parallel
Selected MPI library: MPICH1/MPICH2/Open MPI
【enter】
Supported BLAS/LAPACK
0) Netlib BLAS/LAPACK
1) Intel Math Kernel Library (MKL)
x) Exit
Enter number of a desired library. [0]
【enter】
Selected BLAS/LAPACK: Netlib BLAS/LAPACK
Supported FFT libraries
0) Built-in FFT subroutnes
1) FFTW3 library
x) Exit
Enter number of a desired library. [0]
【enter】
Selected FFT library: Built-in FFT subroutnes
Do you want to edit the makefile that has been generated? (yes/no/exit) [no]
【enter】
Do you want to make PHASE now? (yes/no) [yes]
【enter】
cd LAPACK; make F77="mpif90 -m64" F77FLAGS="-O2 -ffixed-form" AR="ar -vq"
...
...
PHASE was successfully installed.
Do you want to check the installed programs? (yes/no) [no]
【enter】
$
ディレクトリphase0_2015.01/binに実行形式ファイルがコピーされます。
PHASE/0インストーラーはSolaris Studioに対応していないようですので、コンパイルオプションやライブラリ指定などMakefileの修正が必要です。また同コンパイラは文法チェックが厳しく、一部ソースがコンパイルエラーになります。変更内容をパッチにまとめました(PHASE0_2015.01用)。
$ tar zxf phase0_2015.01.tar.gz
$ bzip2 -d phase0_solaris.diff.bz2
$ cd phase0_2015.01/src_phase
$ patch < ../../phase0_solaris.diff
$ make
...
...
$ make install
...
$
ディレクトリphase0_2015.01/binに実行形式ファイルがコピーされます。
付属サンプルのBaO_Si001を使って実行性能を比較してみましょう。同一計算機かつ同一並列条件(例えば、k点2並列)で実行して計算所要時間を調べてください。
$ cd ../samples/BaO_Si001/
$ mpirun -np 2 ../../bin/phase ne=1 nk=2
(なお、CentOS仮想マシン上のGNUコンパイラ版と、ネイティブ実行したWindows版matelier PHASE/0 の比較では、後者の計算所要時間は前者の1/3程度でした。)
計算時間差の要因として、コンパイラの最適化性能の違いだけでなく、最適化された数値演算ライブラリ(Solaris Studio版では付属する最適化されたLAPACKと BLASを使用しました)の影響も含まれます。今回は利用しませんでしたが、高性能な高速フーリエ変換ライブラリとしてFFTWが有名です。これを使うと、計算速度の向上が期待できるだけでなく、同ライブラリを必要とする計算機能(ESM法やvdW-DF)が利用できるようになります。興味があれば挑戦して下さい。
PHASE/0製品版のご利用にあたりご不明な点や、解析、カスタマイズのご依頼・ご相談などにつきましてはお問い合せください。