インストールと実行

From salmon
Revision as of 15:23, 3 February 2018 by Yabana (talk | contribs) (GNU Makefileを用いたビルド)
Jump to: navigation, search

必要条件

このガイドでは、ユーザはUnixとそのコマンドライン操作について基礎的な知識を有していることを仮定します。 SALMONのインストールにあたり、以下のパッケージが必要です。

  • Fortran90/Cコンパイラ。SALMONは、ユーザが以下のいずれかのコンパイラを利用できることを仮定します。
    • GCC (Gnu Compiler Collection)
    • Intel Fortran/C Compiler
    • Fujitsu Compiler (at FX100 / K-Computer)
  • 以下の線形代数パッケージのいずれか。
    • BLAS/LAPACK
    • Intel Math Kernel Library (MKL)
    • Fujitsu Scientific Subroutine Library 2 (SSL-II)
  • ビルドツール。
    • CMake

もし他のコンパイラを利用する場合は、ビルドスクリプト(CMake)を変更することが必要です。#configure.pyスクリプトの付加的な選択肢をご覧ください。 もしあなたの計算機環境で数値ライブラリがインストールされていない場合は、あなた自身でBLAS/LAPACKをインストールすることが必要です。 インストールでのトラブルシューティングをご覧ください。

SALMONのインストールでは、CMakeの利用を第一の選択肢としています。 あなたの利用環境でCMakeツールを使うことに問題がある場合は、GNU makeツールの利用も可能です。 インストールでのトラブルシューティングをご覧ください。

ダウンロード

SALMONの最新バージョンは、ダウンロードからダウンロードすることができます。 ダウンロードしたファイルsalmon-<VERSION>.tar.gzからファイルを抽出するために、コマンドラインから以下のコマンドを入力します。

$ tar –zxvf ./salmon-<VERSION>.tar.gz

ファイルの抽出後、以下のディレクトリが生成されます。

SALMON
 |- src        Source codes
 |- example    Samples
 |- makefiles   GNU Makefiles for building
 |- cmakefiles   CMake related files
 |- makefiles   GNU Makefiles for building

ビルド

SALMONをコンパイルし実行可能なバイナリファイルを作成するため、最初の選択肢としてCMakeを利用します。 もしあなたの環境でCMakeを用いたSALMONのビルドに失敗した場合は、Gnu Makeを用いることも可能です。 #GNU Makefileを用いたビルドを参照してください。

CMakeが利用できることの確認

最初にあなたの環境でCMakeが利用可能かどうかを確認します。Unixコマンドラインから以下をタイプしてください。

$ cmake --version

もしCMakeがあなたのシステムにインストールされていない場合は、cmake: command not found のようなエラーメッセージが表示されます。 もしCMakeがあなたのシステムにインストールされている場合は、バージョンナンバーが表示されます。 SALMONをビルドするためには、バージョン3.0.2以降のCMakeが必要です。 あなたのシステムで、バージョン3.0.2以降のCMakeがインストールされていることが確認できたら、#CMakeを用いたビルドに進んでください。 しかし、多くのシステムで古いバージョンのCMakeがインストールされています。 あなたのシステムでCMakeがインストールされていない場合、あるいは古いバージョンのCMakeがインストールされている場合は、新しいバージョンをあなた自身でインストールすることが必要です。これは簡単な作業であり、以下で説明します。

CMakeのインストール

CMakeは、複数のプラットフォームに対応したビルドツールです。 あなたの環境でCMakeを利用可能にする最も簡単な方法は、CMakeのバイナリ配布をdownload pageから入手することです。 バイナリ配布のファイル名は、cmake-<VERSION>-<PLATFORM>.tar.gz)となっています。 標準的なUnix環境では、Linux x86_64プラットフォームに対するファイルが適切です。

バイナリファイルをダウンロードするために、以下の作業を行います。 まず、あなたは現在、SALMONのダウンロードファイルからファイルを抽出したディレクトリにいるとします。そして、CMakeのバージョン3.8.2を利用するものとします。 最初に、ブラウザからダウンロードリンクのURLを取得し、Unixコマンドラインから次のように入力します。

$ wget https://cmake.org/files/v3.8/cmake-3.8.2-Linux-x86_64.tar.gz

次に、取得したアーカイブを解凍します。

$ tar -zxvf cmake-3.8.2-Linux-x86_64.tar.gz

すると、あなたのディレクトリにバイナリファイルmake-3.8.2-Linux-x86_64/bin/cmakeが得られます。

cmakeコマンドがコマンドラインから利用可能となるように、環境変数$PATHを、CMakeの実行ファイルが$PATHで指定されたディレクトリの内部にあるように設定することが必要です。 あなたがbash shellを利用している場合は、$PATH変数を指定しているファイル~/.bashrcを修正することが必要です。 あなたのログイン・ディレクトリから、次のコマンドを入力してください。

$ export PATH=<SALMON_INSTALLATION_DIRECTORY>/cmake-3.8.2-Linux-x86_64/bin:$PATH

そして、環境をリロードするために、

$ source ~/.bashrc

を入力してください。

CMakeを用いたビルド

バージョン3.0.2以降のCMakeがあなたの環境で利用できることを確認後、以下のステップに進んでください。 あなたがSALMONディレクトリにいるとします。

  • 一時的なディレクトリbuildを作成し、そのディレクトリに移動してください。
$ mkdir build
$ cd build
  • pythonスクリプトconfigure.pyを実行し、makeを行なってください。
$ python ../configure.py –arch=ARCHITECTURE --prefix=../
$ make
$ make install

pythonスクリプトの実行にあたり、あなたのシステムの持つCPUのアーキテクチャを表すARCHITECTURE、例えばintel-avx、を指定することが必要です。 ARCHITECTURE'の選択肢は、以下の通りです。

arch Detail Compiler Numerical Library
intel-knl Intel Knights Landing Intel Compiler Intel MKL
intel-knc Intel Knights Corner Intel Compiler Intel MKL
intel-avx Intel Processer (Ivy-, Sandy-Bridge) Intel Compiler Intel MKL
intel-avx2 Intel Processer (Haswell, Broadwell ..) Intel Compiler Intel MKL
fujitsu-fx100 FX100 Supercomputer Fujitsu Compiler SSL-II
fujitsu-k Fujitsu FX100 / K-computer Fujitsu Compiler SSL-II

ビルドに成功すると、salmon/binディレクトリにファイルsalmon.cpuが生成されます。 もしメニーコア・アーキテクチャであるintel-knlまたはintel-kncを指定した場合、ファイルsalmon.mic、または’’salmon.cpusalmon.micの両方が得られます。

シングルプロセス計算のためのビルド

標準設定では、pythonスクリプトは並列実行を前提としています。 もしシングルプロセッサマシンを利用する場合は、pythonスクリプトの実行の際に--disable-mpiを指定してください。

 $ python ../configure.py --arch=<ARCHITECTURE> --disable-mpi

SALMONの実行に必要となるファイル

SALMONを実行するために、どのような計算においても少なくとも2種類のファイルが必要です。 一つはファイル拡張子*.inpを持つインプットファイルであり、標準入力stdinから読み込まれます。 このファイルは、Fortran90のネームリスト書式で用意することが必要です。 計算に含まれる元素の擬ポテンシャルファイルも必要となります。 目的に応じて、これら以外のファイルが必要となる場合もあります。 例えば、物質の原子位置の座標は、インプットファイルに書くこともできるし、別ファイルとして用意することもできます。

擬ポテンシャル

SALMONはノルム保存擬ポテンシャルを用います。 いくつかの元素の擬ポテンシャルは、エクササイスにあるサンプルに含まれています。 SALMONでは、いくつかの擬ポテンシャルの書式を利用できます。 拡張子.fhiを持つ擬ポテンシャルは、以下に示すウェブサイトから得ることができます。 (これは、ABINITコードに対する以前の原子データファイルの一部です。)

pseudopotential website
ABINIT codeのための擬ポテンシャル https://www.abinit.org/sites/default/files/PrevAtomicData/psp-links/psp-links/lda_fhi

擬ポテンシャルのファイル名は、インプットファイルに記載することが必要です。

インプットファイル

インプットファイルは、ネームリストのいくつかのブロックから構成されます。

&namelist1
  variable1 = int_value
  variable2 = 'char_value'
 /
&namelist2
  variable1 = real8_value
  variable2 = int_value1, int_value2, int_value3
/

ネームリストのブロックは、&namelist行から始まり、 /行で終わります。 ブロックの現れる順番は任意です。

&namelist/'の間に変数とその値を記述します。 多くの変数には標準の値が与えられており、全ての変数に値を与える必要はありません。 変数の記述は、&namelist/の間であれば、どの位置に現れても構いません。

SALMONは、孤立系と周期系の両方の電子ダイナミクスを記述することができます。 その境界条件はnamelist&systemの変数iperiodicで指定します。

計算は、通常2つのステップで行います。最初に基底状態計算を行い、そして実時間の電子ダイナミクス計算を行います。 計算モードは、namelist&calculationの変数calc_modeにより指定されます。 孤立系では、基底状態計算と電子ダイナミクス計算は、2つに分離して実行することが必要です。 最初の基底状態計算は、calc_mode='GS' と指定して実行されます。 実時間の電子ダイナミクス計算は、calc_mode='RT' と指定して実行されます。 周期系では、calc_mode = 'GS_RT' と指定して、2つの計算を一度に実行する必要があります。

エクササイスでは、SALMONで実行可能となる典型的な計算をカバーする6つの練習課題を用意します。 練習課題のinputファイルの説明が準備されており、それらはあなたの興味を持つ計算のインプットファイルを 準備するのに役立ちます。

ネームリストには、20以上のグループがあります。ネームリスト変数の完全なリストは、 ファイルSALMON/manual/input_variables.mdにあります。 エクササイスにおいて用いられているネームリスト変数は、インプット変数において説明されています。

SALMONの実行

SALMONを実行する前に、上に記したように以下の準備をすることが必要です:実行ファイルsalmon.cpu(もしメニーコアマシンを用いる場合はsalmon.micも)をSALMONのソースファイルからビルドする。インプットファイルinputfile.inpと擬ポテンシャルファイルを準備する。

計算の実行は、以下のように行います。シングルプロセッサの環境では、次のコマンドを入力します。

$ salmon.cpu < inputfile.inp > fileout.out

マルチプロセッサの環境で、並列計算をMPIを用いて実行するコマンドがmpiexecである場合は、次のコマンドを入力します。

$ mpiexec -n NPROC salmon.cpu < inputfile.inp > fileout.out

ここで、NPROCは用いるMPIプロセスの数で表す。メニーコアプロセッサ環境(例えばintel-knl)では、実行コマンドは

$ mpiexec.hydra -n NPROC salmon.mic < inputfile.inp > fileout.out

実行コマンドとジョブ投入の手続きは、個別の計算機環境に強く依存します。以下に、SALMONを実行する上での一般的な条件をまとめます。

  • SALMONは、シングルプロセッサとMPIを用いたマルチプロセッサの両方の環境で実行できる。
  • 標準的なビルドの手続きを行うと、実行ファイルは、/salmon/bin/salmon.cpuまたは/salmon/bin/salmon.micとして用意される。
  • 計算を始めるには、inputfile.inpstdinから読み込むことが必要となる。

付録

configure.pyスクリプトの付加的な選択肢

コンパイラと環境変数の手動指定

configure.pyの実行時に、アーキテクチャを指定する代わりに手動でコンパイラや環境変数を指定することができます。例えば、

$ python ../configure.py FC=mpiifort CC=mpiicc FFLAGS="-xAVX" CFLAGS="-restrict -xAVX"

configure.pyの主な選択肢は、以下の通りです。

コマンドスイッチ 説明
-a ARCH, --arch=ARCH 用いるアーキテクチャ
--enable-mpi, --disable-mpi MPI並列を行う/行わない
---enable-scalapack, --disable-scalapack ScaLAPACKライブラリを利用する/しない
FC, FFLAGS ユーザの指定するFortranコンパイラと、そのオプション
CC, CFLAGS ユーザの指定するCコンパイラと、そのオプション

シングルプロセス計算のためのビルド

シングルプロセッサの計算機を用いる場合、pyrhonスクリプトの実行時に--disable-mpiを指定する必要がある。

 $ python ../configure.py --arch=<ARCHITECTURE> --disable-mpi

GCC/GFortran環境でのビルド

GCC/GFortranコンパイラを用いる場合、pythonスクリプトの実行時に以下のフラグを指定する必要がある。

$ python ../configure.py FC=gfortran CC=gcc FFLAG=-O3 CFLAG=-O3

GNU Makefileを用いたビルド

CMakeによるビルドがあなたの環境で失敗する場合には、Gnu Makeを用いたビルドを推奨します。 まず、ディレクトリmakefilesに入ります:

$ cd SALMON/makefiles

このディレクトリには、いくつかのアーキテクチャに対するMakefileファイルが用意されています:

  • fujitsu
  • gnu
  • gnu-without-mpi
  • intel
  • intel-avx
  • intel-avx2
  • intel-knc
  • intel-knl
  • intel-without-mpi

Makefileファイルで、-without-mpiと記述のあるものは、単一プロセッサ環境を意味します。 あなたの環境に適したMakefileを選び、makeコマンドを実行します:

$ make -f Makefile.PLATFORM

もしmakeが成功すれば、SALMON/bin/ディレクトリに実行ファイルが生成されます。