|
# Prepare for running the KKRimp program
|
|
# Prepare for running the KKRimp program
|
|
|
|
|
|
## Source code for KKRimp program
|
|
|
|
|
|
|
|
### Common code version
|
|
## Main files
|
|
|
|
|
|
Download recent impurity code package
|
|
* [config.cfg](kkrimp/config_file)
|
|
from: <https://iffgit.fz-juelich.de/kkr/kkrimp>
|
|
* [kkrflex_* files](kkrimp/kkrflex_files)
|
|
|
|
|
|
### Compile
|
|
## Special files
|
|
|
|
|
|
Go to the folder containing the source code (called *SOURCE*) and type:
|
|
* [kkrflex_angle](kkrimp/kkrflex_angle) (contains the non-collinear angles for all atoms in the impurity cluster)
|
|
|
|
|
|
```
|
|
|
|
[USER@iff123 IMP_CODE_DIRECTORY/SOURCE]$ make
|
|
|
|
```
|
|
|
|
|
|
|
|
If you want to have an MPI parallelized version type:
|
|
## Source code for KKRimp program
|
|
|
|
|
|
```
|
|
The impurity code is part of the JuKKR package and can easily be installed with the `install.py` script choosing the `kkrimp` option. See the [readme page](https://iffgit.fz-juelich.de/kkr/jukkr/blob/master/README.md) for further instructions on how to compile the codes of the JuKKR package.
|
|
[USER@iff123 IMP_CODE_DIRECTORY/SOURCE]$ make mpi
|
|
|
|
```
|
|
|
|
|
|
|
|
If using a small to moderately sized cluster, the "make mpi" option
|
|
### Some remarks
|
|
should be sufficient. However, for larger clusters (#imp atoms > 150),
|
|
|
|
you should compile with the make hybrid option. Then the code will be
|
|
So far the impurity code uses MPI parallelization only over energies, and explicit OpenMP parallelization in some parts (e.g. the radial Chebychev solver) or threaded libraries for linear algebra (LAPACK). If using a small to moderately sized cluster, the `mpi` compile option
|
|
hybrid parallel.
|
|
should be sufficient. However, for larger clusters (# of imp atoms > 150),
|
|
|
|
you should compile with the `hybrid` option. Then the code will be hybrid parallel using both MPI and OpenMP levels.
|
|
|
|
|
|
Consider a code which takes 40 energy points on its complex contour.
|
|
Consider a code which takes 40 energy points on its complex contour.
|
|
Then the maximum scalability of the impurity program would be 1 node per
|
|
Then the maximum scalability of the impurity program would be 1 node per
|
... | @@ -45,33 +40,3 @@ echo "Running $NSLOTS MPI tasks with $MKL_NUM_THREADS processors per task" |
... | @@ -45,33 +40,3 @@ echo "Running $NSLOTS MPI tasks with $MKL_NUM_THREADS processors per task" |
|
|
|
|
|
mpiexec -np 40 --exports=MKL_NUM_THREADS,OMP_NUM_THREADS ./kkrflex.exe > out
|
|
mpiexec -np 40 --exports=MKL_NUM_THREADS,OMP_NUM_THREADS ./kkrflex.exe > out
|
|
``` |
|
``` |
|
|
|
\ No newline at end of file |
|
|
|
|
|
A comprehensive list of all available options for the make
|
|
|
|
command is given here:
|
|
|
|
|
|
|
|
* make hybrid - MPI + OMP (using MKL) for hybrid parallel
|
|
|
|
* make - standart compilation using ifort on a single core
|
|
|
|
* make mpi - for using MPI parallelization with ifort
|
|
|
|
* make gfort - uses gfort as the compiler
|
|
|
|
* make pg - uses portland group compiler
|
|
|
|
* make mac - uses compiler options for MacOSX
|
|
|
|
* make clean - removes all \*.o files
|
|
|
|
* make openmp - uses openmp
|
|
|
|
* make rwth - for compilation on RWTH cluster
|
|
|
|
* make rwthmpi - compilation on RWTH cluster with mpi
|
|
|
|
* make rwthhybrid- compilation on RWTH cluster in hybrid OpenMP/MPI mode
|
|
|
|
* make jureca - compilation on Jureca cluster with MPI
|
|
|
|
|
|
|
|
FIXME Do all these options work?
|
|
|
|
|
|
|
|
: ?: make mac works only if libraries are saved locally on the mac
|
|
|
|
: ?: does openmp implementation work?
|
|
|
|
|
|
|
|
## Main files
|
|
|
|
|
|
|
|
* [config.cfg](kkrimp/config_file)
|
|
|
|
* [kkrflex_* files](kkrimp/kkrflex_files)
|
|
|
|
|
|
|
|
## Special files
|
|
|
|
|
|
|
|
* [kkrflex_angle](kkrimp/kkrflex_angle) (contains the non-collinear angles for all atoms in the impurity cluster) |
|
|