Difference between revisions of "インストールと実行"
(→inputファイル) |
(→CMakeを用いたビルド) |
||
(6 intermediate revisions by the same user not shown) | |||
Line 102: | Line 102: | ||
* pythonスクリプト''configure.py''を実行し、makeを行なってください。 | * pythonスクリプト''configure.py''を実行し、makeを行なってください。 | ||
− | $ python ../configure.py | + | $ python ../configure.py --arch=ARCHITECTURE --prefix=../ |
$ make | $ make | ||
$ make install | $ make install | ||
Line 191: | Line 191: | ||
[[エクササイス]]では、SALMONで実行可能となる典型的な計算をカバーする6つの練習課題を用意します。 | [[エクササイス]]では、SALMONで実行可能となる典型的な計算をカバーする6つの練習課題を用意します。 | ||
− | + | 練習課題のinputファイルの説明が準備されており、それらはあなたの興味を持つ計算のインプットファイルを | |
準備するのに役立ちます。 | 準備するのに役立ちます。 | ||
− | + | ネームリストには、20以上のグループがあります。ネームリスト変数の完全なリストは、 | |
ファイル''SALMON/manual/input_variables.md''にあります。 | ファイル''SALMON/manual/input_variables.md''にあります。 | ||
− | + | エクササイスにおいて用いられているネームリスト変数は、[[インプット変数]]において説明されています。 | |
== SALMONの実行 == | == SALMONの実行 == | ||
− | SALMONを実行する前に、上に記したように以下の準備をすることが必要です:実行ファイル''salmon.cpu''(もしメニーコアマシンを用いる場合は''salmon.mic'' | + | SALMONを実行する前に、上に記したように以下の準備をすることが必要です:実行ファイル''salmon.cpu''(もしメニーコアマシンを用いる場合は''salmon.mic''も)をSALMONのソースファイルからビルドする。インプットファイル''inputfile.inp''と擬ポテンシャルファイルを準備する。 |
計算の実行は、以下のように行います。シングルプロセッサの環境では、次のコマンドを入力します。 | 計算の実行は、以下のように行います。シングルプロセッサの環境では、次のコマンドを入力します。 | ||
Line 233: | Line 233: | ||
{| class="wikitable" | {| class="wikitable" | ||
− | | | + | | コマンドスイッチ || 説明 |
|- | |- | ||
− | | -a ARCH, --arch=ARCH || | + | | -a ARCH, --arch=ARCH || 用いるアーキテクチャ |
|- | |- | ||
− | | --enable-mpi, --disable-mpi || | + | | --enable-mpi, --disable-mpi || MPI並列を行う/行わない |
|- | |- | ||
− | | ---enable-scalapack, --disable-scalapack || | + | | ---enable-scalapack, --disable-scalapack || ScaLAPACKライブラリを利用する/しない |
|- | |- | ||
− | | FC, FFLAGS || | + | | FC, FFLAGS || ユーザの指定するFortranコンパイラと、そのオプション |
|- | |- | ||
− | | CC, CFLAGS || | + | | CC, CFLAGS || ユーザの指定するCコンパイラと、そのオプション |
|} | |} | ||
− | |||
=== シングルプロセス計算のためのビルド === | === シングルプロセス計算のためのビルド === | ||
Line 261: | Line 260: | ||
== GNU Makefileを用いたビルド == | == GNU Makefileを用いたビルド == | ||
− | + | CMakeによるビルドがあなたの環境で失敗する場合には、Gnu Makeを用いたビルドを推奨します。 | |
− | + | まず、ディレクトリ''makefiles''に入ります: | |
$ cd SALMON/makefiles | $ cd SALMON/makefiles | ||
− | + | このディレクトリには、いくつかのアーキテクチャに対する''Makefile''ファイルが用意されています: | |
* fujitsu | * fujitsu | ||
* gnu | * gnu | ||
Line 277: | Line 276: | ||
* intel-without-mpi | * intel-without-mpi | ||
− | ''Makefile'' | + | ''Makefile''ファイルで、<code>-without-mpi</code>と記述のあるものは、単一プロセッサ環境を意味します。 |
− | + | あなたの環境に適した''Makefile''を選び、makeコマンドを実行します: | |
$ make -f Makefile.PLATFORM | $ make -f Makefile.PLATFORM | ||
− | + | もしmakeが成功すれば、<code>SALMON/bin/</code>ディレクトリに実行ファイルが生成されます。 |
Latest revision as of 09:33, 13 June 2018
Contents
必要条件
このガイドでは、ユーザは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.cpuとsalmon.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.inpをstdinから読み込むことが必要となる。
付録
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/
ディレクトリに実行ファイルが生成されます。