Difference between revisions of "テスト"

From salmon
Jump to: navigation, search
(Created page with "# SALMON: Scalable Ab-initio Light-Matter simulator for Optics and Nanoscience SALMON is an open-source software based on first-principles time-dependent density functional t...")
 
(Blanked the page)
 
Line 1: Line 1:
# SALMON: Scalable Ab-initio Light-Matter simulator for Optics and Nanoscience
 
  
SALMON is an open-source software based on first-principles time-dependent density functional theory
 
to describe optical responses and electron dynamics in matters induced by light electromagnetic fields.
 
 
SALMON has been developed in such a way that it runs optimally in the following supercomputer platforms:
 
 
- K-computer
 
- Fujitsu FX100 supercomputer system
 
- Linux PC Cluster with x86-64 CPU
 
- Linux PC Cluster with Intel Xeon Phi processor
 
 
For more information, please visit our website.
 
 
http://salmon-tddft.jp/
 
 
## License
 
 
SALMON is available under Apache License version 2.0.
 
 
    Copyright 2017 SALMON developers
 
   
 
    Licensed under the Apache License, Version 2.0 (the "License");
 
    you may not use this file except in compliance with the License.
 
    You may obtain a copy of the License at
 
 
 
      http://www.apache.org/licenses/LICENSE-2.0
 
 
    Unless required by applicable law or agreed to in writing, software
 
    distributed under the License is distributed on an "AS IS" BASIS,
 
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 
    See the License for the specific language governing permissions and
 
    limitations under the License.
 
 
 
# Files
 
 
This package is composed of the following files:
 
 
- configure.py
 
The python script to build SALMON. It uses CMake for the build process, and is the default choice for the build process.
 
 
- CMakeList.txt
 
CMake script that is used in configure.py.
 
 
- cmakefiles (directory)
 
CMake related files.
 
 
- examples (directory)
 
A few sample calculations using SALMON are included.
 
Detailed explanations of these examples are described in the web site, http://salmon-tddft.jp/wiki/Exercises.
 
 
- LICENCE
 
License document of SALMON.
 
 
- makefiles
 
GNU Makefiles to build SALMON.
 
 
- manual
 
A list of namalist variables that is usable in input files.
 
 
- README.md
 
This file.
 
 
- src
 
Source code files of SALMON.
 
 
- testsuites
 
Files that are used in the automatic test of SALMON.
 
It can also be used to examine if the build process is successful in the user’s environment.
 
 
- tools
 
Some tools and utilities related to SALMON.
 
 
# Install and Run
 
 
== Prerequisites ==
 
 
In this guide, it is assumed that readers have a basic knowledge of Unix and its command line operations.
 
For the installation of SALMON, following packages are required.
 
 
* Fortran90/C compiler. SALMON assumes users have one of the following compilers:
 
** GCC (Gnu Compiler Collection)
 
** Intel Fortran/C Compiler
 
** Fujitsu Compiler (at FX100 / K-Computer)
 
 
* One of the following library packages for linear algebra:
 
** BLAS/LAPACK
 
** Intel Math Kernel Library (MKL)
 
** Fujitsu Scientific Subroutine Library 2 (SSL-II)
 
 
* Build tools.
 
** CMake
 
 
If you use other compilers, you may need to change build scripts (CMake). See [[#Additional options in configure.py script]].
 
If no numerical library is installed on your computer system, you may need to install BLAS/LAPACK by yourself.
 
See [[Troubleshooting of the Installation Process]].
 
 
For the installation of SALMON, we adopt the CMake tools as the first option.
 
If there were any problems to use CMake tools in your environment, you may use the GNU make tools.
 
See [[Troubleshooting of the Installation Process]].
 
 
== Download ==
 
 
The newest version of SALMON can be downloaded from [[Download]].
 
To extract files from the downloaded file ''salmon-<VERSION>.tar.gz'', type the following command in the command-line,
 
 
$ tar –zxvf ./salmon-<VERSION>.tar.gz
 
 
After the extraction, the following directories will be created.
 
 
SALMON
 
  |- src        Source codes
 
  |- example    Samples
 
  |- makefiles  GNU Makefiles for building
 
  |- cmakefiles  CMake related files
 
  |- makefiles  GNU Makefiles for building
 
 
== Build ==
 
 
To compile SALMON to create executable the binary files, we adopt to use CMake tools as the first option.
 
In case you fail to build SALMON using CMake in your environment, we may use Gnu Make. See [[#Build using GNU Makefile]].
 
 
=== Checking CMake availability ===
 
 
First, examine whether CMake is usable in your environment or not.
 
Type the following in Unix command-line:
 
 
$ cmake --version
 
 
If CMake is not installed in your system, an error message such as <code>cmake: command not found</code> will appear.
 
If CMake is installed on your system, the version number will be shown.
 
To build SALMON, CMake of version 3.0.2 or later is required.
 
If you confirm that CMake of version 3.0.2 or later is installed in your system, proceed to [[#Build using 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] 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.
 
 
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>
 
$ wget https://cmake.org/files/v3.8/cmake-3.8.2-Linux-x86_64.tar.gz
 
</pre>
 
Next, unpack the archive by
 
<pre>
 
$ tar -zxvf cmake-3.8.2-Linux-x86_64.tar.gz
 
</pre>
 
and you will have the binary <code>make-3.8.2-Linux-x86_64/bin/cmake</code> in your directory. 
 
 
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>.
 
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,
 
<pre>
 
$ export PATH=<SALMON_INSTALLATION_DIRECTORY>/cmake-3.8.2-Linux-x86_64/bin:$PATH
 
</pre>
 
and then reload the configuration by typing:
 
<pre>
 
$ source ~/.bashrc
 
</pre>
 
 
=== Build using CMake ===
 
 
Confirming that CMake of version 3.0.2 or later can be usable in your environment, proceed the following steps.
 
We assume that you are in the directory SALMON.
 
* Create a new temporary directory ''build'' and move to the directory,
 
 
$ mkdir build
 
$ cd build
 
 
* Execute the python script ''configure.py'' and then make,
 
 
$ python ../configure.py –arch=ARCHITECTURE --prefix=../
 
$ make
 
$ 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 ''ARCHITECUTRE'' are as follows:
 
 
{| class="wikitable"
 
| 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
 
|-
 
| intel-avx512 || Intel Processer (Skylake-SP) || Intel Compiler || Intel MKL
 
|-
 
| fujitsu-fx100 || FX100 Supercomputer || Fujitsu Compiler || SSL-II
 
|-
 
| fujitsu-k || Fujitsu FX100 / K-computer || Fujitsu Compiler || SSL-II
 
|}
 
 
If the build is successful, you will get a file ''salmon.cpu'' at the directory ''salmon/bin''.
 
If you specify many-core architechtures, ''intel-knl'' or ''intel-knc'', you find a file ''salmon.mic'' or both files ''salmon.cpu'' and ''salmon.mic''.
 
 
=== Build for single process calculations ===
 
 
In default, the python script assumes parallel execution.
 
If you use a single processor machine, specify <code>--disable-mpi</code> in executing the python script:
 
 
  $ python ../configure.py --arch=<ARCHITECTURE> --disable-mpi
 
 
== Files necessary to run SALMON ==
 
 
To run SALMON, at least two kinds of files are required for any calculations.
 
One is an input file with the filename extension ''*.inp*'' that should be read from the standard input ''stdin''.
 
This file should be prepared in the Fortran90 namelist format.
 
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.
 
You may find pseudopotentials of some elements in the samples prepared in [[Exercises]].
 
In SALMON, several formats of pseudopotentials may be usable.
 
Pseudopotentials with an extension ''.fhi'' can be obtained from the website listed below.
 
(This is a part of previous atomic data files for the ABINIT code.)
 
 
{| class="wikitable"
 
| pseudopotential || website
 
|-
 
| Pseudopotentials for the 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
 
  variable1 = int_value
 
  variable2 = 'char_value'
 
  /
 
&namelist2
 
  variable1 = real8_value
 
  variable2 = int_value1, int_value2, int_value3
 
/
 
 
A block of namelists starts with ''&namelist'' line and ends with ''/'' line.
 
The blocks may appear in any order.
 
 
Between two lines of ''&namelist'' and ''/'', descriptions of variables and their values appear.
 
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 ''/''.
 
 
SALMON describes electron dynamics in systems with both isolated and periodic boundary conditions.
 
The boundary condition is specified by the variable ''iperiodic'' in the namelist ''&system''.
 
 
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''.
 
For isolated systems, the ground state and the electron dynamics calculations should be carried out as two separate executions.
 
First the ground state calculation is carried out specifying ''calc_mode = 'GS' ''.
 
Then the real-time electron dynamics calculation is carried out specifying ''calc_mode = 'RT' ''.
 
For periodic systems, two calculations should be carried out as a single execution specifying ''calc_mode = 'GS_RT' ''.
 
 
In [[Exercises]], we prepare six exercises that cover typical calculations feasible by SALMON.
 
We prepare explanations of the input files of the exercises that will help to prepare input files of your own interests.
 
 
There are more than 20 groups of namelists. A complete list of namelist variables is given in the file ''SALMON/manual/input_variables.md''.
 
Namelist variables that are used in our exercises are explained at [[Input variables]].
 
 
== Run 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.
 
 
The execution of the calculation can be done as follows: In single process environment, type the following command:
 
 
$ 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:
 
 
$ mpiexec -n NPROC salmon.cpu < inputfile.inp > fileout.out
 
 
where NPROC is the number of MPI processes that you will use.
 
In many-core processor (e.g. intel-knl)  environment, the execution command is
 
 
$ 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 runs in both single-process and multi-process environments using MPI.
 
* executable files are prepared as ''/salmon/bin/salmon.cpu'' and/or ''/salmon/bin/salmon.mic'' in the standard build procedure.
 
* to start calculations, ''inputfile.inp'' should be read through ''stdin''.
 
 
=  Appendix  =
 
 
== Additional options in configure.py script ==
 
 
=== 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:
 
 
$ python ../configure.py FC=mpiifort CC=mpiicc FFLAGS="-xAVX" CFLAGS="-restrict -xAVX"
 
 
The major options of <code>configure.py</code> are as follows:
 
{| class="wikitable"
 
| Commandline switch      || Detail                       
 
|-
 
| -a ARCH, --arch=ARCH || Target architecture 
 
|-
 
| --enable-mpi, --disable-mpi  ||  enable/disable MPI parallelization.
 
|-
 
| --enable-scalapack, --disable-scalapack  ||  enable/disable computations with ScaLAPACK library
 
|-
 
| FC, FFLAGS  ||  User-defined Fortran Compiler, and the compiler options
 
|-
 
| CC, CFLAGS  ||  User-defined C Compiler, and the compiler options
 
|}
 
 
=== Build for single process calculations ===
 
 
If you use a single processor machine, specify <code>--disable-mpi</code> in executing the python script:
 
 
  $ python ../configure.py --arch=<ARCHITECTURE> --disable-mpi
 
 
=== Build in GCC/GFortran environemnt ===
 
 
If you use GCC/GFortran compiler, specify the following flags in executing the python script:
 
 
$ python ../configure.py FC=gfortran CC=gcc FFLAG=-O3 CFLAG=-O3
 
 
== Build using GNU Makefile ==
 
 
If CMake build fails in your environment, we recommend you to try to use Gnu Make for the build process.
 
First, enter the directory ''makefiles'':
 
 
$ cd SALMON/makefiles
 
 
In the directory, ''Makefile'' files are prepared for several architectures:
 
* fujitsu
 
* gnu
 
* gnu-without-mpi
 
* intel
 
* intel-avx
 
* intel-avx2
 
* intel-knc
 
* intel-knl
 
* intel-without-mpi
 
 
''Makefile'' files with <code>-without-mpi</code> indicate that they are for single processor environment.
 
Choose ''Makefile'' appropriate for your environment, and execute the make command:
 
 
$ make -f Makefile.PLATFORM
 
 
If the make proceeds successful, a binary file is created in the directory <code>SALMON/bin/</code>.
 

Latest revision as of 10:04, 10 April 2018