This wiki has been deprecated and will be removed soon.

The new Advanced Computing and e-Science wiki is located at http://grid.ifca.es/wiki.

Please update your bookmarks.

SIESTA

De e-Ciencia

SIESTA (Spanish Initiative for Electronic Simulations with Thousands of Atoms) is an original method and a software implementation for performing electronic structure calculations and ab initio molecular dynamics simulations of molecules and solids.

Tabla de contenidos

Obtaining SIESTA

Siesta is distributed free of charge for academics, under some conditions which have been stated into its licences. For information on academic and non-academic licenses available, refer to:

to download the code, you have to first log into the SIESTA site. You can register through the following link:

Compiling SIESTA

SIESTA is most commonly obtained as a gzip-compressed TAR file (.tgz), and contains a sample Makefile. In general, we will unpack it, edit the arch.make file in the Src/ dir, and make:

% tar -zxvf siesta-x.y.z.tgz
% cd siesta-x.y.z/Src/
% ./configure
% vi arch.make
% make
% make clean

The third step is optional, and tries to generate an arch.make file suited to our architecture. Usually manual edition of the latter (fourth step) will be necessary anyway.

Serial version

SIESTA needs the BLAS and LAPACK libraries to compile. We can use the BLAS and LAPACK libraries that come with SIESTA, modifying the third step above as follows:

 % ./configure --with-siesta-blas --with-siesta-lapack

If you choose to compile them yourself (recommended), refer to the BLAS and LAPACK articles for instructions.

Sample arch.make

Once the required libraries have been compiled, you can compile a serial version of SIESTA in an int.eu.grid site modifying the stock arch.make.in file provided with SIESTA. It is recommended that you run the configure command, which will create a good starting arch.make from arch.make.in:

% cd Src/
% ./configure
% vi arch.make

Then modify arch.make as follows. The SIESTA_ARCH variable is a string that describes your system. You can put whatever here:

SIESTA_ARCH = i686-linux-intel

You must provide the name of the Fortran compiler to use (including full path if it is not in the $path variable). Among the compiler flags, you can set a level of optimization. Experience suggests that a level 3 optimization leads to diminished reliability of executable, caused by excessive internal numerical inaccuracy. A level 2 optimization is thus recommended:

FC     = ifort
FFLAGS = -g -O2

You must also provide the path to the BLAS and LAPACK libraries (that you presumably compiled beforehand). Leave the COMP_LIBS variable as shown:

BLAS_LIBS   = $(HOME)/Software/BLAS/BLAS/blas_LINUX.a
LAPACK_LIBS = $(HOME)/Software/LAPACK/lapack-3.2/lapack_LINUX.a
COMP_LIBS   = dc_lapack.a

Parallel version

Apart from the aforementioned BLAS and LAPACK, and valid Open MPI libraries and compilers, the parallel version of SIESTA requires the BLACS and ScaLAPACK libraries.

Unlike with the former two, BLACS and ScaLAPACK are not included in SIESTA, so we are forced to compile them ourselves. For that, refer to the BLACS and ScaLAPACK articles, respectively.

Sample arch.make

Once the required libraries have been compiled, you can compile a parallel version of SIESTA in an int.eu.grid site modifying the stock arch.make.in file provided with SIESTA. It is recommended that you run the configure command, which will create a good starting arch.make from arch.make.in:

% cd Src/
% ./configure
% vi arch.make

Then modify arch.make as follows. The SIESTA_ARCH variable is a string that describes your system. You can put whatever here:

SIESTA_ARCH = i686-linux-intel-openmpi

You must provide the name of the Fortran compiler to use (including full path if it is not in the $path variable). In general, it will be an Open MPI wrapper script for the actual compilers (Intel, in our site). As for the serial version, a level 2 optimization is recommended (read above):

FC       = /opt/openmpi/bin/mpif90
FFLAGS   = -g -O2 
FPPFLAGS = -DMPI -DFC_HAVE_FLUSH -DFC_HAVE_ABORT

You must also provide the path to the BLAS and LAPACK libraries, as in the serial case. In addition, you must provide the path for the BLACS and ScaLAPACK libraries. Leave the COMP_LIBS variable as shown. Needless to say, the three arguments in the BLACS_LIBS variable go in a single line:

BLAS_LIBS      = $(HOME)/Software/BLAS/BLAS/blas_LINUX.a
LAPACK_LIBS    = $(HOME)/Software/LAPACK/lapack-3.2/lapack_LINUX.a
BLACS_LIBS     = $(HOME)/Software/BLACS/BLACS/LIB/blacsF77init_MPI-LINUX-0.a \
                 $(HOME)/Software/BLACS/BLACS/LIB/blacs_MPI-LINUX-0.a \
                 $(HOME)/Software/BLACS/BLACS/LIB/blacsCinit_MPI-LINUX-0.a
SCALAPACK_LIBS = $(HOME)/Software/ScaLAPACK/scalapack-1.8.0/libscalapack.a
COMP_LIBS      = dc_lapack.a

Finally, additional MPI information needs to be provided:

MPI_INTERFACE=libmpi_f90.a
MPI_INCLUDE=.

Using SIESTA

Main article: SIESTA usage

SIESTA is available in the Grid through $VO_ICOMPCHEM_SW_DIR/siesta-serial (serial version), and $VO_ICOMPCHEM_SW_DIR/siesta-parallel (Open MPI version).

Benchmarks

Main article: SIESTA benchmarks

In general, the current performance of SIESTA for high parallelization is limited, and 2- or 4-CPU jobs are advised.

External links

Grid Administration
Users Support