|
|
###### Prepare for running the KKRimp program {#prepare_for_running_the_kkrimp_program}
|
|
|
|
|
|
##### Source code for KKRimp program {#source_code_for_kkrimp_program}
|
|
|
|
|
|
#### Common code version {#common_code_version}
|
|
|
|
|
|
\<WRAP center round download 60%\> Download recent impurity code package
|
|
|
from: <https://iffgit.fz-juelich.de/kkr/kkrimp> </WRAP>
|
|
|
|
|
|
#### Compile
|
|
|
|
|
|
Go to the folder containing the source code (called *SOURCE*) and type:
|
|
|
|
|
|
`[USER@iff123 IMP_CODE_DIRECTORY/SOURCE]$ make`
|
|
|
|
|
|
If you want to have an MPI parallelized version type:
|
|
|
|
|
|
`[USER@iff123 IMP_CODE_DIRECTORY/SOURCE]$ make mpi`
|
|
|
|
|
|
If using a small to moderately sized cluster, the \"make mpi\" option
|
|
|
should be sufficient. However, for larger clusters (\#imp atoms \> 150),
|
|
|
you should compile with the make hybrid option. Then the code will be
|
|
|
hybrid parallel.
|
|
|
|
|
|
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
|
|
|
energy point (MPI), with all processors on each node working together
|
|
|
(OpenMP / MKL). Using JUROPA as an example: <code>
|
|
|
|
|
|
1. !/bin/bash -x
|
|
|
2. MSUB -l nodes=40:ppn=8 //specify 40 nodes; 1 node per energy; 8
|
|
|
processors per node
|
|
|
3. MSUB -l walltime=05:59:59
|
|
|
4. MSUB -v tpt=8 //8 threads per MPI task
|
|
|
5. MSUB -N IrFe211
|
|
|
|
|
|
export MKL\_NUM\_THREADS=8 export OMP\_NUM\_THREADS=8
|
|
|
|
|
|
cd \$PBS\_O\_WORKDIR echo \"Work Directory is: \$PBS\_O\_WORKDIR\"
|
|
|
NSLOTS=40 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
|
|
|
|
|
|
</code> 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 {#main_files}
|
|
|
|
|
|
` * `[`config.cfg`](kkrimp:config_file "wikilink")\
|
|
|
` * `[`kkrflex_*`` ``files`](kkrimp:kkrflex_files "wikilink")
|
|
|
|
|
|
##### Special files {#special_files}
|
|
|
|
|
|
` * `[`kkrflex_angle`](kkrimp:kkrflex_angle "wikilink")` (contains the non-collinear angles for all atoms in the impurity cluster)` |