[Wien] Parallel calculation

Gavin Abo gabo13279 at gmail.com
Wed Jun 9 04:56:09 CEST 2021


If you are using gfortran and gcc and it helps, some of the keystrokes I 
captured are shown below from when I installed WIEN2k 21.1.  These are 
just steps I follow as a guide for getting started and for a 
configuration that gets WIEN2k on my system up and running quickly.  
After that, I usually have to go back into ./siteconfig and further 
adjust the settings to make calculations complete faster by finding 
better settings to use for my system in the documentation for the 
compilers.  For example, the gfortran documentation is at [1].  Other 
compilers, like the Intel Fortran compiler [2], should have their own 
documentation.

The mpi parallel settings configured below don't always work depending 
on the configuration that I need on my computer systems.  When that 
happens, the WIEN2k usersguide [3] and FAQ questions page [4] help with 
choosing the correct siteconfig settings.  Or past posts on parallel 
calculations in the mailing list archive contained a solution to the 
issues I encountered.

I haven't tried the SRC_mpiutil on the unsupported page [5] with WIEN2k 
21.1 but I think that was helpful when I looked at that when using a 
past WIEN2k version.

For the below, I used Open MPI [6], but you could use another mpi 
implementation [7].

[1] https://gcc.gnu.org/wiki/GFortran
[2] 
https://software.intel.com/content/www/us/en/develop/documentation/fortran-compiler-oneapi-dev-guide-and-reference/top.html
[3] http://www.wien2k.at/reg_user/textbooks/usersguide.pdf
[4] http://www.wien2k.at/reg_user/faq/pbs.html
[5] http://www.wien2k.at/reg_user/unsupported/
[6] https://www.open-mpi.org/
[7] https://en.wikipedia.org/wiki/MPICH

*Installed Ubuntu LTS*

https://help.ubuntu.com/community/Installation
https://ubuntu.com/#download

username at computername:~$ lsb_release -a
No LSB modules are available.
Distributor ID:    Ubuntu
Description:    Ubuntu 20.04.2 LTS
Release:    20.04
Codename:    focal

*Installed XCrySDen*

username at computername:~$ cd ~
username at computername:~$ sudo apt update
username at computername:~$ sudo apt install tcsh ghostscript octave 
gnuplot gnuplot-x11 make autoconf libtool perl libquadmath0 gfortran 
build-essential libglu1-mesa-dev libtogl-dev tcl-dev tk-dev libfftw3-dev 
libxmu-dev
username at computername:~$ wget 
http://www.xcrysden.org/download/xcrysden-1.6.2.tar.gz
username at computername:~$ tar xvf xcrysden-1.6.2.tar.gz
username at computername:~$ cd xcrysden-1.6.2
username at computername:~/xcrysden-1.6.2$ cp ./system/Make.sys-shared Make.sys
username at computername:~/xcrysden-1.6.2$ make all
username at computername:~/xcrysden-1.6.2$ echo 'export 
XCRYSDEN_TOPDIR=/home/username/xcrysden-1.6.2'>>~/.bashrc
username at computername:~/xcrysden-1.6.2$ echo 'export 
PATH=$PATH:$XCRYSDEN_TOPDIR'>>~/.bashrc
username at computername:~/xcrysden-1.6.2$ source ~/.bashrc

*Installed libxc*

username at computername:~/xcrysden-1.6.2$ cd ~
username at computername:~$ wget 
http://www.tddft.org/programs/libxc/down.php?file=5.1.4/libxc-5.1.4.tar.gz
username at computername:~$ tar xvf down.php\?file\=5.1.4%2Flibxc-5.1.4.tar.gz
username at computername:~$ cd libxc-5.1.4/
username at computername:~/libxc-5.1.4$ autoreconf -i --force
username at computername:~/libxc-5.1.4$ ./configure FC=gfortran CC=gcc 
--prefix=$HOME/libxc-5.1.4
username at computername:~/libxc-5.1.4$ make
username at computername:~/libxc-5.1.4$ make check
username at computername:~/libxc-5.1.4$ make install

*Installed OpenBLAS*

username at computername:~/libxc-5.1.4$ cd ~
username at computername:~$ wget 
https://github.com/xianyi/OpenBLAS/releases/download/v0.3.15/OpenBLAS-0.3.15.tar.gz
username at computername:~$ tar zxvf OpenBLAS-0.3.15.tar.gz
username at computername:~$ cd OpenBLAS-0.3.15/
username at computername:~/OpenBLAS-0.3.15$ make FC=gfortran CC=gcc
username at computername:~/OpenBLAS-0.3.15$ echo 'export 
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/username/OpenBLAS-0.3.15'>>~/.bashrc
username at computername:~/OpenBLAS-0.3.15$ source ~/.bashrc

*Installed Open MPI*

username at computername:~/OpenBLAS-0.3.15$ cd ~
username at computername:~$ wget 
https://download.open-mpi.org/release/open-mpi/v4.1/openmpi-4.1.1.tar.gz
username at computername:~$ tar xvf openmpi-4.1.1.tar.gz
username at computername:~$ cd openmpi-4.1.1/
username at computername:~/openmpi-4.1.1$ ./configure 
--prefix=$HOME/openmpi-4.1.1
username at computername:~/openmpi-4.1.1$ make all install
username at computername:~/openmpi-4.1.1$ echo 'export 
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/username/openmpi-4.1.1/lib'>>~/.bashrc
username at computername:~/openmpi-4.1.1$ echo 'export 
PATH=$PATH:/home/username/openmpi-4.1.1/bin'>>~/.bashrc
username at computername:~/openmpi-4.1.1$ source ~/.bashrc

*Installed fftw*

username at computername:~/openmpi-4.1.1$ cd ~
username at computername:~$ wget http://www.fftw.org/fftw-3.3.9.tar.gz
username at computername:~$ tar xvf fftw-3.3.9.tar.gz
username at computername:~$ cd fftw-3.3.9/
username at computername:~/fftw-3.3.9$ ./configure FCC=gfortran CC=gcc 
MPICC=mpicc --enable-mpi --prefix=$HOME/fftw-3.3.9
username at computername:~/fftw-3.3.9$ make
username at computername:~/fftw-3.3.9$ make install

*Installed ScaLAPACK*

username at computername:~/fftw-3.3.9$ cd ~
username at computername:~$ wget 
http://www.netlib.org/scalapack/scalapack-2.1.0.tgz
username at computername:~$ tar xvf scalapack-2.1.0.tgz
username at computername:~$ cd scalapack-2.1.0/
username at computername:~/scalapack-2.1.0$ cp SLmake.inc.example SLmake.inc
username at computername:~/scalapack-2.1.0$ gedit SLmake.inc
username at computername:~/scalapack-2.1.0$ cat SLmake.inc
############################################################################
#
#  Program:         ScaLAPACK
#
#  Module:          SLmake.inc
#
#  Purpose:         Top-level Definitions
#
#  Creation date:   February 15, 2000
#
#  Modified:        October 13, 2011
#
#  Send bug reports, comments or suggestions to scalapack at cs.utk.edu
#
############################################################################
#
#  C preprocessor definitions:  set CDEFS to one of the following:
#
#     -DNoChange (fortran subprogram names are lower case without any 
suffix)
#     -DUpCase   (fortran subprogram names are upper case without any 
suffix)
#     -DAdd_     (fortran subprogram names are lower case with "_" appended)

CDEFS         = -DAdd_

#
#  The fortran and C compilers, loaders, and their flags
#

FC            = mpifort
CC            = mpicc
NOOPT         = -O0
FCFLAGS       = -O3
CCFLAGS       = -O3
FCLOADER      = $(FC)
CCLOADER      = $(CC)
FCLOADFLAGS   = $(FCFLAGS)
CCLOADFLAGS   = $(CCFLAGS)

#
#  The archiver and the flag(s) to use when building archive (library)
#  Also the ranlib routine.  If your system has no ranlib, set RANLIB = echo
#

ARCH          = ar
ARCHFLAGS     = cr
RANLIB        = ranlib

#
#  The name of the ScaLAPACK library to be created
#

SCALAPACKLIB  = libscalapack.a

#
#  BLAS, LAPACK (and possibly other) libraries needed for linking test 
programs
#

BLASLIB       = -L/home/username/OpenBLAS-0.3.15 -lopenblas
LAPACKLIB     =
LIBS          = $(LAPACKLIB) $(BLASLIB)


username at computername:~/scalapack-2.1.0$ make
username at computername:~/scalapack-2.1.0$ echo 'export 
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/username/scalapack-2.1.0'>>~/.bashrc
username at computername:~/scalapack-2.1.0$ source ~/.bashrc

*Installed WIEN2k*

Went to:

http://www.wien2k.at/reg_user/index.html

Clicked "Code download (after registration)"

Downloaded "WIEN2k_21.1.tar"

username at computername:~/scalapack-2.1.0$ cd ~
username at computername:~$ mkdir WIEN2k
username at computername:~$ cd WIEN2k/
username at computername:~/WIEN2k$ ls
WIEN2k_21.1.tar
username at computername:~/WIEN2k$ tar xvf WIEN2k_21.1.tar
username at computername:~/WIEN2k$ gunzip *.gz
username at computername:~/WIEN2k$ chmod +x ./expand_lapw
username at computername:~/WIEN2k$ export LC_NUMERIC=en_US.UTF-8
username at computername:~/WIEN2k$ ./expand_lapw
continue (y/n)
y
username at computername:~/WIEN2k$ ./siteconfig
continue or stop (c/s) c
   Selection: LG
      Your compiler: gfortran
      Your compiler: gcc
  Would you like to use LIBXC (usually not needed, ONLY for experts who 
want to play with different DFT options. It must have been installed 
before)? (y,N):
y
  Do you want to automatically search for LIBXC installations? (Y,n):
Y
  Please specify a comma separated list of directories to search! (If no 
list is entered, /usr/lib64, /usr/local and /opt will be searched as 
default):
/home/username/libxc-5.1.4
  Pick one of the following (enter the number of the line of your choice 
or 0 to manually specify a path)!:
/home/username/libxc-5.1.4/src/.libs/libxc.a
/home/username/libxc-5.1.4/lib/libxc.a
2
   Do you want to automatically search for FFTW installations? (Y,n):
Y
  Please specify a comma separated list of directories to search! (If no 
list is entered,
  /usr/lib64, /usr/local and /opt will be searched as default):
/home/username/fftw-3.3.9
  Finding the required fftw3 library-files in /home/username/fftw-3.3.9 ....

/home/username/fftw-3.3.9/.libs/libfftw3.a
/home/username/fftw-3.3.9/lib/libfftw3.a

Do you want to use a FFTW version from the list above? (Y,n):
Y
  Please enter the line number of the chosen version or enter 0 to 
manually specify your choice!:
2
  Please specify the target achitecture of your FFTW library (e.g. 
lib64) or accept present choice (enter): lib
   Please specify the name of your FFTW library or accept present choice 
(enter): fftw3
   Is this correct? (Y,n): Y
Selection: R
      Real libraries=-L/home/username/OpenBLAS-0.3.15 -lopenblas -lpthread
Selection: X
Selection:F
Enter the name of your LIBXC fortran interface!: xcf03
Selection:B

Current settings:
   M   OpenMP switch:           -fopenmp
   O   Compiler options:        -ffree-form -O2 -ftree-vectorize 
-march=native -ffree-line-length-none -ffpe-summary=none
   L   Linker Flags:            $(FOPT) -L../SRC_lib
   P   Preprocessor flags       '-DParallel'
   R   R_LIBS (LAPACK+BLAS):    -L/home/username/OpenBLAS-0.3.15 
-lopenblas -lpthread
   F   FFTW options:            -DFFTW3 -I/home/username/fftw-3.3.9/include
       FFTW-LIBS:               -L/home/username/fftw-3.3.9/lib -lfftw3
   X   LIBX options:            -DLIBXC -I/home/username/libxc-5.1.4/include
       LIBXC-LIBS:              -L/home/username/libxc-5.1.4/lib -lxcf03 
-lxc

Selection: S
   Shared Memory Architecture? (y/N):y
   Do you know/need a command to bind your jobs to specific nodes?
   (like taskset -c). Enter N / your_specific_command: N
    Do you have MPI, ScaLAPACK, ELPA, or MPI-parallel FFTW installed and 
intend
    to run finegrained parallel?
    (y/N) y
    Your compiler: mpifort
  Do you want to use a present ScaLAPACK installation? (Y,n): Y
  Please specify the target architecture of your ScaLAPACK libraries 
(e.g. intel64)!:
  Please specify the root path of your ScaLAPACK installation!:
  ScaLAPACK root: /home/username/scalapack-2.1.0
  Please specify the name of your ScaLAPACK library!:
  ScaLAPACK library: scalapack
  Please specify the root path of your BLACS installation!:
  BLACS root:
  Please specify the name of your BLACS library!:
  BLACS library:
Is this correct? (Y,n): Y
  Do you want to use ELPA? (y,N):
N
  Please enter your choice of additional libraries!:
$(R_LIBS) -lmpi
  Is this correct?  (Y,n): Y
    Please specify your parallel compiler options or accept the 
recommendations (Enter - default)!:
-ffree-form -O2 -ftree-vectorize -march=native -ffree-line-length-none 
-ffpe-summary=none

    Please specify your MPIRUN command or accept the recommendations 
(Enter - default)!:

    Please specify your parallel OMP_SWITCH (type "del" to blank it)
    or accept the recommendations (Enter - default)!:

    Please specify your MPIRUN command or accept the recommendations 
(Enter - default)!:

    Current settings:

          Parallel compiler      : mpifort
          SCALAPACK_LIBS         : -L/home/username/scalapack-2.1.0/ 
-lscalapack
          FFTW_PLIBS             : -lfftw3_mpi
          ELPA_OPT               :
          ELPA_LIBS              :
          FPOPT(par.comp.options): -ffree-form -O2 -ftree-vectorize 
-march=native -ffree-line-length-none -ffpe-summary=none
          OMP_SWITCH             : -fopenmp
          MPIRUN command         : mpirun -np _NP_ -machinefile _HOSTS_ 
_EXEC_

    parallel execution:

          RP_LIBS                : $(R_LIBS) -lmpi

Selection: S
Selection: Q
Selection: A

  Please enter the full path of the perl program: /usr/bin/perl

  Please enter the full path to your temporary directory: /tmp

username at computername:~/WIEN2k$ ./userconfig_lapw

      Specify your prefered editor (default is emacs):
      editor shall be: gedit


      Set editor to  gedit (Y/n) Y

      Specify your prefered DATA directory, where your cases should be
      stored (for  /home/username/WIEN2k, just enter RETURN key):
      DATA directory: /home/username/wiendata

      Set DATA directory to  /home/username/wiendata (Y/n) Y

      Specify your prefered scratch directory, where big case.vector files
      can be stored (Recommended is a local directory (maybe /scratch), 
not a
      NFS directory. For your working directory, just enter RETURN key):
      scratch directory:

      Set scratch directory to  working directory (Y/n) Y

      Specify your program to read pdf files (default is okular)
      (on some Linux systems use xpdf, evince, pdfstudio, ...):evince

      Set PDFREADER to  evince (Y/n) Y

WIEN2k can use OpenMP parallelization on multicore computers.
For details please read the "Parallelization section" of the Usersguide.
Your present computer has 4 cores, but more than 4 (8) cores is useless.
How many cores do you want to use by default (4):1

      Set OMP_NUM_THREADS to  1 (Y/n) Y


!!!  The following lines will be added to your .bashrc file if you 
continue !!!
      A copy of your current .bashrc will be saved under .bashrc.savelapw !

# added by WIEN2k: BEGIN
# --------------------------------------------------------
alias lsi="ls -aslp *.in*"
alias lso="ls -aslp *.output*"
alias lsd="ls -aslp *.def"
alias lsc="ls -aslp *.clm*"
alias lss="ls -aslp *.scf* */*scf"
alias lse="ls -aslp *.error"
alias LS="ls -alsp |grep /"
alias pslapw="ps -ef |grep "lapw""
alias cdw="cd /home/username/wiendata"
if [ "$OMP_NUM_THREADS" = "" ]; then export OMP_NUM_THREADS=1; fi
#export LD_LIBRARY_PATH=.....
export EDITOR="gedit"
export SCRATCH=./
if [ "$WIENROOT" = "" ]; then export WIENROOT=/home/username/WIEN2k; fi
export W2WEB_CASE_BASEDIR=/home/username/wiendata
export STRUCTEDIT_PATH=$WIENROOT/SRC_structeditor/bin
export PDFREADER=evince
export 
PATH=$WIENROOT:$STRUCTEDIT_PATH:$WIENROOT/SRC_IRelast/script-elastic:$PATH:.
export OCTAVE_EXEC_PATH=${PATH}::
export OCTAVE_PATH=${STRUCTEDIT_PATH}::

ulimit -s unlimited
alias octave="octave -p $OCTAVE_PATH"
# --------------------------------------------------------
      Do you want to continue (Y/n)? Y

      Edit .rhosts file now? (y/N) N

username at computername:~/WIEN2k$ w2web

Please enter the username: [admin]
Please enter the password: [password]
admin:password

Select the port to run on: [7890]

Please enter this system's hostname: [computername] localhost

Is this your master node?: [y] y

On 6/8/2021 8:15 AM, ben amara imen wrote:
> Dear
>
> Can someone tell me how I can install the parallel calculation for 
> Wien2k .
> Thanks in advance
>
>
> Best regards
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://zeus.theochem.tuwien.ac.at/pipermail/wien/attachments/20210608/c680f5bb/attachment.htm>


More information about the Wien mailing list