Difference between revisions of "インストールと実行"

From salmon
Jump to: navigation, search
(ビルド)
(CMakeを用いたビルド)
 
(33 intermediate revisions by the same user not shown)
Line 4: Line 4:
 
SALMONのインストールにあたり、以下のパッケージが必要です。
 
SALMONのインストールにあたり、以下のパッケージが必要です。
  
* Fortran90/Cコンパイラ。このパッケージは、ユーザが以下のいずれかのコンパイラを利用できることを仮定します。
+
* Fortran90/Cコンパイラ。SALMONは、ユーザが以下のいずれかのコンパイラを利用できることを仮定します。
 
** GCC (Gnu Compiler Collection)
 
** GCC (Gnu Compiler Collection)
 
** Intel Fortran/C Compiler
 
** Intel Fortran/C Compiler
Line 17: Line 17:
 
** CMake
 
** CMake
  
もし他のコンパイラを利用する場合は、ビルドスクリプト(Cmake)を変更することが必要です。[[#configure.pyスクリプトの付加的な選択肢]]をご覧ください。
+
もし他のコンパイラを利用する場合は、ビルドスクリプト(CMake)を変更することが必要です。[[#configure.pyスクリプトの付加的な選択肢]]をご覧ください。
 
もしあなたの計算機環境で数値ライブラリがインストールされていない場合は、あなた自身でBLAS/LAPACKをインストールすることが必要です。
 
もしあなたの計算機環境で数値ライブラリがインストールされていない場合は、あなた自身でBLAS/LAPACKをインストールすることが必要です。
 
[[インストールでのトラブルシューティング]]をご覧ください。
 
[[インストールでのトラブルシューティング]]をご覧ください。
Line 56: Line 56:
 
もしCMakeがあなたのシステムにインストールされている場合は、バージョンナンバーが表示されます。
 
もしCMakeがあなたのシステムにインストールされている場合は、バージョンナンバーが表示されます。
 
SALMONをビルドするためには、バージョン3.0.2以降のCMakeが必要です。
 
SALMONをビルドするためには、バージョン3.0.2以降のCMakeが必要です。
 +
あなたのシステムで、バージョン3.0.2以降のCMakeがインストールされていることが確認できたら、[[#CMakeを用いたビルド]]に進んでください。
 +
しかし、多くのシステムで古いバージョンのCMakeがインストールされています。
 +
あなたのシステムでCMakeがインストールされていない場合、あるいは古いバージョンのCMakeがインストールされている場合は、新しいバージョンをあなた自身でインストールすることが必要です。これは簡単な作業であり、以下で説明します。
  
If you confirm that Came of version 3.0.2 or later is installed in your system, proceed to [[#Build using CMake]].
+
=== CMakeのインストール  ===
However, we realize that old versions of CMake are installed in many systems.
 
If CMake is not installed or CMake of older versions is installed in your system, you need to install the new version by yourself.
 
It is a simple procedure and explained below.
 
  
=== Installation of CMake  ===
+
[https://cmake.org/|CMake CMake]は、複数のプラットフォームに対応したビルドツールです。
 +
あなたの環境でCMakeを利用可能にする最も簡単な方法は、CMakeのバイナリ配布を[https://cmake.org/download/ download page]から入手することです。
 +
バイナリ配布のファイル名は、<code>cmake-<VERSION>-<PLATFORM>.tar.gz</code>)となっています。
 +
標準的なUnix環境では、Linux x86_64プラットフォームに対するファイルが適切です。
  
[https://cmake.org/|CMake CMake] is a cross-platform build tool.
+
バイナリファイルをダウンロードするために、以下の作業を行います。
The simplest way to make CMake usable in your environment is to get the binary distribution of CMake from the [https://cmake.org/download/  download page]. The file name of the binary distribution will be <code>cmake-<VERSION>-<PLATFORM>.tar.gz</code>). In standard Unix environment, a file for the platform of Linux x86_64 will be appropriate.  
+
まず、あなたは現在、SALMONのダウンロードファイルからファイルを抽出したディレクトリにいるとします。そして、CMakeのバージョン3.8.2を利用するものとします。
 
+
最初に、ブラウザからダウンロードリンクのURLを取得し、Unixコマンドラインから次のように入力します。
To download the file, proceed as follows: We assume that you are in the directory that you extracted files from the downloaded file of SALMON,
 
and that you will use the version 3.8.2. First get the URL of the download link from your browser, and use <code>wget</code> command in your Unix command-line.
 
 
<pre>
 
<pre>
 
$ wget https://cmake.org/files/v3.8/cmake-3.8.2-Linux-x86_64.tar.gz
 
$ wget https://cmake.org/files/v3.8/cmake-3.8.2-Linux-x86_64.tar.gz
 
</pre>
 
</pre>
Next, unpack the archive by
+
次に、取得したアーカイブを解凍します。
 
<pre>
 
<pre>
 
$ tar -zxvf cmake-3.8.2-Linux-x86_64.tar.gz
 
$ tar -zxvf cmake-3.8.2-Linux-x86_64.tar.gz
 
</pre>
 
</pre>
and you will have the binary <code>make-3.8.2-Linux-x86_64/bin/cmake</code> in your directory. 
+
すると、あなたのディレクトリにバイナリファイル<code>make-3.8.2-Linux-x86_64/bin/cmake</code>が得られます。
  
To make the <code>cmake</code> command usable in your command-line, you need to modify the environment variable <code>$PATH</code> so that the executable of CMake are settled inside the directory specified in your <code>$PATH</code>.
+
<code>cmake</code>コマンドがコマンドラインから利用可能となるように、環境変数<code>$PATH</code>を、CMakeの実行ファイルが<code>$PATH</code>で指定されたディレクトリの内部にあるように設定することが必要です。
If you use the bash shell, you need to modify the file <code>~/.bashrc</code> that specifies the <code>$PATH</code> variable. It can be done by typing the following command in your login directory,
+
あなたがbash shellを利用している場合は、<code>$PATH</code>変数を指定しているファイル<code>~/.bashrc</code>を修正することが必要です。
 +
あなたのログイン・ディレクトリから、次のコマンドを入力してください。
 
<pre>
 
<pre>
 
$ export PATH=<SALMON_INSTALLATION_DIRECTORY>/cmake-3.8.2-Linux-x86_64/bin:$PATH
 
$ export PATH=<SALMON_INSTALLATION_DIRECTORY>/cmake-3.8.2-Linux-x86_64/bin:$PATH
 
</pre>
 
</pre>
and then reload the configuration by typing:
+
そして、環境をリロードするために、
 
<pre>
 
<pre>
 
$ source ~/.bashrc
 
$ source ~/.bashrc
 
</pre>
 
</pre>
 +
を入力してください。
  
=== Build using CMake ===
+
=== CMakeを用いたビルド ===
  
Confirming that CMake of version 3.0.2 or later can be usable in your environment, proceed the following steps.
+
バージョン3.0.2以降のCMakeがあなたの環境で利用できることを確認後、以下のステップに進んでください。
We assume that you are in the directory SALMON.
+
あなたがSALMONディレクトリにいるとします。
* Create a new temporary directory ''build'' and move to the directory,
+
* 一時的なディレクトリ''build''を作成し、そのディレクトリに移動してください。
  
 
  $ mkdir build
 
  $ mkdir build
 
  $ cd build
 
  $ cd build
  
* Execute the python script ''configure.py'' and then make,
+
* pythonスクリプト''configure.py''を実行し、makeを行なってください。
  
  $ python ../configure.py –arch=ARCHTECTURE --prefix=../
+
  $ python ../configure.py --arch=ARCHITECTURE --prefix=../
 
  $ make
 
  $ make
 
  $ make install
 
  $ make install
  
In executing the python script, you need to specify ''ARCHITECTURE'' that indicates the architecture of the CPU in your computer system such as ''intel-avx''. The options of the ''ARCHTECUTRE'' are as follows:
+
pythonスクリプトの実行にあたり、あなたのシステムの持つCPUのアーキテクチャを表す''ARCHITECTURE''、例えば''intel-avx''、を指定することが必要です。
 +
''ARCHITECTURE'の選択肢は、以下の通りです。
  
 
{| class="wikitable"
 
{| class="wikitable"
Line 121: Line 125:
 
|}
 
|}
  
If the build is successful, you will get a file ''salmon.cpu'' at the directory ''salmon/bin''.
+
ビルドに成功すると、''salmon/bin''ディレクトリにファイル''salmon.cpu''が生成されます。
If you specify many-core archtechtures, ''intel-knl'' or ''intel-knc'', you find a file ''salmon.mic'' or both files ''salmon.cpu'' and ''salmon.mic''.
+
もしメニーコア・アーキテクチャである''intel-knl''または''intel-knc''を指定した場合、ファイル''salmon.mic''、または’’salmon.cpu''''salmon.mic''の両方が得られます。
  
=== Build for single process calculations ===
+
=== シングルプロセス計算のためのビルド ===
  
In default, the python script assumes parallel execution.
+
標準設定では、pythonスクリプトは並列実行を前提としています。
If you use a single processor machine, specify <code>--disable-mpi</code> in executing the python script:
+
もしシングルプロセッサマシンを利用する場合は、pythonスクリプトの実行の際に<code>--disable-mpi</code>を指定してください。
  
 
   $ python ../configure.py --arch=<ARCHITECTURE> --disable-mpi
 
   $ python ../configure.py --arch=<ARCHITECTURE> --disable-mpi
  
== Files necessary to run SALMON ==
+
== SALMONの実行に必要となるファイル ==
  
To run SALMON, at least two kinds of files are required for any calculations.
+
SALMONを実行するために、どのような計算においても少なくとも2種類のファイルが必要です。
One is an input file with the filename extension ''*.inp*'' that should be read from the standard input ''stdin''.
+
一つはファイル拡張子''*.inp''を持つインプットファイルであり、標準入力''stdin''から読み込まれます。
This file should be prepared in the Fortran90 namelist format.
+
このファイルは、Fortran90のネームリスト書式で用意することが必要です。
Pseudopotential files of relevant elements are also required.
+
計算に含まれる元素の擬ポテンシャルファイルも必要となります。
Depending on your purpose, some other files may also be necessary.
+
目的に応じて、これら以外のファイルが必要となる場合もあります。
For example, coordinates of atomic positions of the target material may be either written in the input file or prepared as a separate file.
+
例えば、物質の原子位置の座標は、インプットファイルに書くこともできるし、別ファイルとして用意することもできます。
  
=== Pseudopotentials ===
+
=== 擬ポテンシャル ===
  
SALMON utilizes norm-conserving pseudpotentials.
+
SALMONはノルム保存擬ポテンシャルを用います。
You may find pseudopotentials of some elements in the samples prepared in [[Exercises]].
+
いくつかの元素の擬ポテンシャルは、[[エクササイス]]にあるサンプルに含まれています。
In SALMON, several formats of pseudopotentials may be usable.
+
SALMONでは、いくつかの擬ポテンシャルの書式を利用できます。
Pseudopotentials with an extension ''.fhi'' that can be obtained from the website listed below.
+
拡張子''.fhi''を持つ擬ポテンシャルは、以下に示すウェブサイトから得ることができます。
(This is a part of previous atomic data files for the abinit code.)
+
(これは、ABINITコードに対する以前の原子データファイルの一部です。)
  
 
{| class="wikitable"
 
{| class="wikitable"
 
| pseudopotential || website  
 
| pseudopotential || website  
 
|-
 
|-
| Pseudopotentials for the ABINIT code ||  https://www.abinit.org/sites/default/files/PrevAtomicData/psp-links/psp-links/lda_fhi
+
| ABINIT codeのための擬ポテンシャル ||  https://www.abinit.org/sites/default/files/PrevAtomicData/psp-links/psp-links/lda_fhi
 
|}
 
|}
  
Filenames of the pseudopotentials should be written in the input file.
+
擬ポテンシャルのファイル名は、インプットファイルに記載することが必要です。
  
=== input file ===
+
=== インプットファイル ===
  
Input files are composed of several blocks of namelists,
+
インプットファイルは、ネームリストのいくつかのブロックから構成されます。
  
 
  &namelist1
 
  &namelist1
Line 169: Line 173:
 
  /
 
  /
  
A block of namelists starts with ''&namelist'' line and ends with ''/'' line.
+
ネームリストのブロックは、''&namelist''行から始まり、 ''/''行で終わります。
The blocks may appear in any order.
+
ブロックの現れる順番は任意です。
  
Between two lines of ''&namelist'' and ''/'', descriptions of variables and their values appear.
+
''&namelist''''/'の間に変数とその値を記述します。
Note that many variables have their default values so that it is not necessary to give values for all variables.
+
多くの変数には標準の値が与えられており、全ての変数に値を与える必要はありません。
Descriptions of the variables may appear at any position if they are between ''&namelist'' and ''/''.
+
変数の記述は、''&namelist''''/''の間であれば、どの位置に現れても構いません。
  
SALMON describes electron dynamics in systems with both isolated and periodic boundary conditions.
+
SALMONは、孤立系と周期系の両方の電子ダイナミクスを記述することができます。
The boundary condition is specified by the variable ''iperiodic'' in the namelist ''&system''.
+
その境界条件はnamelist''&system''の変数''iperiodic''で指定します。
  
Calculations are usually achieved in two steps; first, the ground state calculation is carried out and then electron dynamics calculations in real time is carried out. A choice of the calculation mode is specified by the variable ''calc_mode'' in the namelist ''&calculation''.
+
計算は、通常2つのステップで行います。最初に基底状態計算を行い、そして実時間の電子ダイナミクス計算を行います。
For isolated systems, the ground state and the electron dynamics calculations should be carried out as two separate executions.
+
計算モードは、namelist''&calculation''の変数''calc_mode''により指定されます。
First the ground state calculation is carried out specifying ''calc_mode = 'GS' ''.
+
孤立系では、基底状態計算と電子ダイナミクス計算は、2つに分離して実行することが必要です。
Then the real-time electron dynamics calculation is carried out specifying ''calc_mode = 'RT' ''.
+
最初の基底状態計算は、''calc_mode='GS' ''と指定して実行されます。
For periodic systems, two calculations should be carried out as a single execution specifying ''calc_mode = 'GS_RT' ''.
+
実時間の電子ダイナミクス計算は、''calc_mode='RT' ''と指定して実行されます。
 +
周期系では、''calc_mode = 'GS_RT' ''と指定して、2つの計算を一度に実行する必要があります。
  
In [[Exercises]], we prepare six exercises that cover typical calculations feasible by SALMON.
+
[[エクササイス]]では、SALMONで実行可能となる典型的な計算をカバーする6つの練習課題を用意します。
We prepare explanations of the input files of the tutorials that will help to prepare input files of your own interests.
+
練習課題のinputファイルの説明が準備されており、それらはあなたの興味を持つ計算のインプットファイルを
 +
準備するのに役立ちます。
  
There are more than 20 groups of namelists. A complete list of namelist variables is given in the file ''SALMON/manual/input_variables.md''.
+
ネームリストには、20以上のグループがあります。ネームリスト変数の完全なリストは、
Namelist variables that are used in our tutorials are explained at [[Input variables]].
+
ファイル''SALMON/manual/input_variables.md''にあります。
 +
エクササイスにおいて用いられているネームリスト変数は、[[インプット変数]]において説明されています。
  
== Run SALMON ==
+
== SALMONの実行 ==
  
Before running SALMON, the following preparations are required as described above: The executable file of ''salmon.cpu'' (and ''salmon.mic'' if your system is the many-core machine) should be built from the source file of SALMON. An input file ''inputfile.inp'' and pseudopotential files should also be prepared.
+
SALMONを実行する前に、上に記したように以下の準備をすることが必要です:実行ファイル''salmon.cpu''(もしメニーコアマシンを用いる場合は''salmon.mic''も)をSALMONのソースファイルからビルドする。インプットファイル''inputfile.inp''と擬ポテンシャルファイルを準備する。
  
The execution of the calculation can be done as follows: In single process environment, type the following command:
+
計算の実行は、以下のように行います。シングルプロセッサの環境では、次のコマンドを入力します。
  
 
  $ salmon.cpu < inputfile.inp > fileout.out
 
  $ salmon.cpu < inputfile.inp > fileout.out
  
In multiprocess environment in which the command to execute parallel calculations using MPI is ''mpiexec'', type the following command:
+
マルチプロセッサの環境で、並列計算をMPIを用いて実行するコマンドが''mpiexec''である場合は、次のコマンドを入力します。
  
 
  $ mpiexec -n NPROC salmon.cpu < inputfile.inp > fileout.out
 
  $ mpiexec -n NPROC salmon.cpu < inputfile.inp > fileout.out
  
where NPROC is the number of MPI processes that you will use.
+
ここで、NPROCは用いるMPIプロセスの数で表す。メニーコアプロセッサ環境(例えばintel-knl)では、実行コマンドは
In many-core processor (e.g. intel-knl) environment, the execution command is
 
  
 
  $ mpiexec.hydra -n NPROC salmon.mic < inputfile.inp > fileout.out
 
  $ mpiexec.hydra -n NPROC salmon.mic < inputfile.inp > fileout.out
  
The execution command and the job submission procedure depends much on local environment. We summarize general conditions to execute SALMON:
+
実行コマンドとジョブ投入の手続きは、個別の計算機環境に強く依存します。以下に、SALMONを実行する上での一般的な条件をまとめます。
  
* salmon runs in both single-process and multi-process environments using MPI.
+
* SALMONは、シングルプロセッサとMPIを用いたマルチプロセッサの両方の環境で実行できる。
* executable files are prepared as ''/salmon/bin/salmon.cpu'' and/or ''/salmon/bin/salmon.mic'' in the standard build procedure.
+
* 標準的なビルドの手続きを行うと、実行ファイルは、''/salmon/bin/salmon.cpu''または''/salmon/bin/salmon.mic''として用意される。
* to start calculations, ''inputfile.inp'' should be read through ''stdin''.
+
* 計算を始めるには、''inputfile.inp''''stdin''から読み込むことが必要となる。
  
Appendix =
+
付録 =
  
== Additional options in configure.py script ==
+
== configure.pyスクリプトの付加的な選択肢 ==
  
=== Manual specifications of compiler and environment variables ===
+
=== コンパイラと環境変数の手動指定 ===
  
In executing <code>configure.py</code>, you may manually specify compiler and environment variables instead of specifying the architecture, for example:
+
<code>configure.py</code>の実行時に、アーキテクチャを指定する代わりに手動でコンパイラや環境変数を指定することができます。例えば、
  
 
  $ python ../configure.py FC=mpiifort CC=mpiicc FFLAGS="-xAVX" CFLAGS="-restrict -xAVX"
 
  $ python ../configure.py FC=mpiifort CC=mpiicc FFLAGS="-xAVX" CFLAGS="-restrict -xAVX"
  
The major options of <code>configure.py</code> are as follows:
+
<code>configure.py</code>の主な選択肢は、以下の通りです。
 +
 
 
  {| class="wikitable"
 
  {| class="wikitable"
  | Commandline switch       || Detail                        
+
  | コマンドスイッチ       || 説明                        
 
  |-
 
  |-
  | -a ARCH, --arch=ARCH || Target architecture 
+
  | -a ARCH, --arch=ARCH || 用いるアーキテクチャ 
 
  |-
 
  |-
  | --enable-mpi, --disable-mpi  ||  enable/disable MPI parallelization.
+
  | --enable-mpi, --disable-mpi  ||  MPI並列を行う/行わない
 
  |-
 
  |-
  | ---enable-scalapack, --disable-scalapack  ||  enable/disable computations with ScaLAPACK library
+
  | ---enable-scalapack, --disable-scalapack  ||  ScaLAPACKライブラリを利用する/しない
 
  |-
 
  |-
  | FC, FFLAGS  ||  User-defined Fortran Compiler, and the compiler options
+
  | FC, FFLAGS  ||  ユーザの指定するFortranコンパイラと、そのオプション
 
  |-
 
  |-
  | CC, CFLAGS  ||  User-defined C Compiler, and the compiler options
+
  | CC, CFLAGS  ||  ユーザの指定するCコンパイラと、そのオプション
 
  |}
 
  |}
  
 +
=== シングルプロセス計算のためのビルド ===
  
=== Build for single process calculations ===
+
シングルプロセッサの計算機を用いる場合、pyrhonスクリプトの実行時に<code>--disable-mpi</code>を指定する必要がある。
 
 
If you use a single processor machine, specify <code>--disable-mpi</code> in executing the python script:
 
  
 
   $ python ../configure.py --arch=<ARCHITECTURE> --disable-mpi
 
   $ python ../configure.py --arch=<ARCHITECTURE> --disable-mpi
  
=== Build in GCC/GFortran environemnt ===
+
=== GCC/GFortran環境でのビルド ===
  
If you use GCC/GFortran compiler, specify the following flags in executing the python script:
+
GCC/GFortranコンパイラを用いる場合、pythonスクリプトの実行時に以下のフラグを指定する必要がある。
  
 
  $ python ../configure.py FC=gfortran CC=gcc FFLAG=-O3 CFLAG=-O3
 
  $ python ../configure.py FC=gfortran CC=gcc FFLAG=-O3 CFLAG=-O3
  
== Build using GNU Makefile ==
+
== GNU Makefileを用いたビルド ==
  
If CMake build fails in your environment, we recommend you to try to use Gnu Make for the build process.
+
CMakeによるビルドがあなたの環境で失敗する場合には、Gnu Makeを用いたビルドを推奨します。
First, enter the directory ''makefiles'':
+
まず、ディレクトリ''makefiles''に入ります:
  
 
  $ cd SALMON/makefiles
 
  $ cd SALMON/makefiles
  
In the directory, ''Makefile'' files are prepared for several architectures:
+
このディレクトリには、いくつかのアーキテクチャに対する''Makefile''ファイルが用意されています:
 
* fujitsu
 
* fujitsu
 
* gnu
 
* gnu
Line 270: Line 276:
 
* intel-without-mpi
 
* intel-without-mpi
  
''Makefile'' files with <code>-without-mpi</code> indicate that they are for single processor environment.
+
''Makefile''ファイルで、<code>-without-mpi</code>と記述のあるものは、単一プロセッサ環境を意味します。
Choose ''Makefile'' appropriate for your environment, and execute the make command:
+
あなたの環境に適した''Makefile''を選び、makeコマンドを実行します:
  
 
  $ make -f Makefile.PLATFORM
 
  $ make -f Makefile.PLATFORM
  
If the make proceeds successful, a binary file is created in the directory <code>SALMON/bin/</code>.
+
もしmakeが成功すれば、<code>SALMON/bin/</code>ディレクトリに実行ファイルが生成されます。

Latest revision as of 09:33, 13 June 2018

必要条件

このガイドでは、ユーザは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/ディレクトリに実行ファイルが生成されます。