Ada : Siesta

Présentation

Le logiciel Siesta est installé à l'IDRIS.

Disponibilité

Siesta a été compilé en mode parallèle/MPI. Les versions disponibles sont :

  • 4.0
  • 3.2 (version par défaut)
  • 3.1

Pour avoir accès aux exécutables que nous avons compilés, vous devez avoir validé l'agrément d'utilisation de Siesta. La démarche à suivre consiste à venir cliquer sur leur site : enregistrement . Contactez ensuite l'assistance en écrivant explicitement avoir eu cette action pour que l'accès vous soit donné.

N.B.: Nous pouvons être tenu d'informer les gestionnaires de ce logiciel des utilisateurs ayant accès à ce produit à l'IDRIS.

L'exécutable permettant de lancer le code se nomme siesta_par pour les version 3 et siesta pour la version 4. Cette dernière a été générée avec l'environnement intel/2016.4, de ce fait l'exécutable devra être lancé avec mpirun et non poe.

Script de lancement

Pour charger l'environnement du logiciel, il est nécessaire de lancer la commande :

  • module load siesta (pour la version 3.2 par défaut)

ou bien, par exemple :

  • module load siesta/4.0 pour la version 4.0

Exemple de script de soumission

Voici un exemple de script de lancement pour un calcul en version 3 exécuté depuis le WORKDIR :

job.ll
# @ job_name         = siesta_par
# @ job_type         = parallel
# @ total_tasks      = 8
# @ wall_clock_limit = 1:00:00
# @ output           = $(job_name).$(jobid)
# @ error            = $(job_name).$(jobid)
# @ queue
 
### Initialisation de Module ###
module load siesta
 
### Echo des commandes ###
set -x
 
### Lancement du calcul ###
poe siesta_par < H2O.fdf > H2O.out

Voici le même exemple exécuté depuis le TMPDIR :

job.ll
# @ job_name         = siesta_par
# @ job_type         = parallel
# @ total_tasks      = 8
# @ wall_clock_limit = 1:00:00
# @ output           = $(job_name).$(jobid)
# @ error            = $(job_name).$(jobid)
# @ queue
 
### Initialisation de Module ###
module load siesta
 
### Echo des commandes ###
set -x
 
### Copie vers le TMPDIR ###
cp ./* $TMPDIR
 
### Lancement du calcul ###
cd $TMPDIR
poe siesta_par < H2O.fdf > H2O.out
 
### Copie vers le dossier de soumission ###
cd -
cp $TMPDIR/* .

Même exemple en version 4 depuis le WORDIR :

job_vers4.ll
# @ job_name         = siesta
# @ job_type         = mpich
# @ total_tasks      = 8
# @ wall_clock_limit = 1:00:00
# @ output           = $(job_name).$(jobid)
# @ error            = $(job_name).$(jobid)
# @ environment = NB_TASKS=$(total_tasks)
# @ queue
 
### Initialisation de Module ###
module load siesta/4.0
 
### Echo des commandes ###
set -x
 
### Lancement du calcul ###
mpirun -np $NB_TASKS siesta < H2O.fdf > H2O.out

Paramètres propres au logiciel

Si vous souhaitez modifier les fichiers sources de Siesta et donc compiler Siesta vous-même, nous vous proposons d'utiliser le fichier de paramètres suivant à copier sous Src/Sys :

Siesta_par.mk
# 
# 11/08/17 IDRIS: Mise en place pour ADA (X3750)
#
# This file is part of the SIESTA package.
#
# Copyright (c) Fundacion General Universidad Autonoma de Madrid:
# E.Artacho, J.Gale, A.Garcia, J.Junquera, P.Ordejon, D.Sanchez-Portal
# and J.M.Soler, 1996-2006.
# 
# Use of this software constitutes agreement with the full conditions
# given in the SIESTA license, as signed by all legitimate users.
#
#
SIESTA_ARCH=ibm-ada
 
FC=mpiifort
FC_ASIS=$(FC)
 
FFLAGS=-O3 -fpic -fp-model precise
 
FFLAGS_DEBUG= -g -C 
 
LIBS=-Wl,--start-group -lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core \
     -lmkl_blacs_intelmpi_lp64 -lmkl_scalapack_lp64 -Wl,--end-group  \
     -lpthread -liomp5
LDFLAGS=$(LIBS)
# essl lacks zhegv of lapack used for scalar diagonalization.
# It is not called in mpi runs, but it is within a not preprocessed
# if, and requires to be resolved. The following line is thus added
# to link the scalar lapack and blas routines provided within the siesta
# package, even though it has no influence on the run
COMP_LIBS=
#
# Add code for descinit, not in pessl
#
SYS=ibm_pessl
RANLIB=ranlib
#MPI_INCLUDE=/opt/ibmhpc/pecurrent/ppe.poe/include
MPI_INCLUDE=/dev/null
MPI_INTERFACE=libmpi_f90.a
DEFS=-DMPI -DGRID_DP
FREE_F90=
FREE_F90_CPP=
#
.F.o:
	$(FC) -c $(FFLAGS) $(INCFLAGS) $(DEFS) $<
.f.o:
	$(FC) -c $(FFLAGS) $(INCFLAGS) $<
.f90.o:
	$(FC) -c $(FFLAGS) $(INCFLAGS) $(FREE_F90) $<
.F90.o:
	$(FC) -c $(FFLAGS) $(INCFLAGS) $(DEFS) $(FREE_F90_CPP) $<

Afin qu'il soit pris en compte, effectuer le lien qui suit sous votre répertoire de construction (Obj est celui conseillé) :

ln -s ../Src/Sys/Siesta_par.mk arch.make