SIESTA

De MaGridWiki
Aller à : Navigation, rechercher

N.B :

  • Ce tutoriel explique un exemple d’exécution de l'application SIESTA sur la grille de calcul.
  • Ce tutoriel est adapté principalement à la VO nationale : magrid
  • L'utilisateur est supposé connecté à l'interface utilisateur (ex: ui.magrid.ma), authentifié (certificat valide) et autorisé (vo magrid).


Sommaire

Description de Siesta

Siesta is both a method and its computer program implementation, to perform efficient electronic structure calculations and ab initio molecular dynamics simulations of molecules and solids. SIESTA's efficiency stems from the use of strictly localized basis sets and from the implementation of linear-scaling algorithms which can be applied to suitable systems. A very important feature of the code is that its accuracy and cost can be tuned in a wide range, from quick exploratory calculations to highly accurate simulations matching the quality of other approaches, such as plane-wave and all-electron methods.

The possibility of treating large systems with some first-principles electronic-structure methods has opened up new opportunities in many disciplines. The SIESTA program is distributed freely to academics and has become quite popular, being increasingly used by researchers in geosciences, biology, and engineering (apart from those in its natural habitat of materials physics and chemistry). Currently there are several thousand users all over the world, and the paper describing the method (J. Phys. Cond. Matt. 14, 2745 (2002)) has had more than 4000 citations.

Description des inputs/outputs

  • Inputs: h2o.fdf , O.psf , H.psf et le script exécutable siesta.sh qui va lancer l’exécution de Siesta avec l'argument d'entrée h2o.
  • Outputs: std.out et std.err qui sont simplement les sorties standard et d'erreurs, et la sortie sera h2o.out.
Fichier: h2o.fdf
 SystemName          Water molecule
 SystemLabel         h2o
 NumberOfAtoms       3
 NumberOfSpecies     2
 
 MeshCutoff  50 Ry
 
 %block ChemicalSpeciesLabel
  1  8  O      # Species index, atomic number, species label
  2  1  H
 %endblock ChemicalSpeciesLabel
 
 AtomicCoordinatesFormat  Ang
 %block AtomicCoordinatesAndAtomicSpecies
  0.000  0.000  0.000  1
  0.757  0.586  0.000  2
 -0.757  0.586  0.000  2
 %endblock AtomicCoordinatesAndAtomicSpecies
 
 save-rho T
 save-delta-rho T
 save-total-potential T
 save-neutral-atom-potential T
 save-hs T

Le fichier du job: siesta.jdl

Fichier: siesta.jdl
Type = "Job";
JobType = "Normal";
Executable = "siesta.sh";
Arguments = "h2o";
StdOutput = "std.out";
StdError = "std.err";
InputSandbox = {"siesta.sh", "h2o.fdf", "H.psf", "O.psf"};
OutputSandbox = {"std.err","std.out","h2o.out"};
Requirements = Member("VO-magrid-siesta_v3.2",other.GlueHostApplicationSoftwareRunTimeEnvironment);

Le fichier exécutable: siesta.sh

Fichier: siesta.sh
#!/bin/bash
source $VO_MAGRID_SW_DIR/setenv_siesta_v3.2.sh
siesta<$1.fdf> $1.out


Ce fichier exécute d'abord le fichier setenv_siesta_v3.2.sh qui charge l’environnement d’exécution de sietsa ensuite

il exécute Siesta avec les argument passés du fichier JDL i.e h2o.fdf , H.psf, O.psf.

Soumettre le job

Ce job est soumis sur la grille en utilisant la commande

[talhaoui@ui siesta]$ glite-wms-job-submit -a -o jobId siesta.jdl Connecting to the service https://wms2.magrid.ma:7443/glite_wms_wmproxy_server ====================== glite-wms-job-submit Success ====================== The job has been successfully submitted to the WMProxy Your job identifier is: https://wms2.magrid.ma:9000/9hU5ShhM9pZ4yJr3GNKxxA The job identifier has been saved in the following file: /home/talhaoui/exemples/siesta/jobId ==========================================================================

L'option -o jobId permet de sauvegarder l'ID du job soumis dans le fichier jobId. Ce fichier pourra ensuite être utilisé comme paramètre pour interroger le statut du job ou bien télécharger les fichiers de sorties de l'OutputSandbox. L'option -a est indispensable pour des raisons de délégation de proxy.

Pour interroger le statut du job, vous devez utiliser la commande suivante en spécifiant le fichier dans lequel vous avez sauvé l'ID du job :

[talhaoui@ui siesta]$ glite-wms-job-status -i jobId ======================= glite-wms-job-status Success ===================== BOOKKEEPING INFORMATION: Status info for the Job : https://wms2.magrid.ma:9000/APYXI_FiFf4hitAEATmukw Current Status: Running Status Reason: unavailable Destination: atlas-ce1.cnrst.magrid.ma:8443/cream-pbs-magrid Submitted: Tue Apr 15 11:59:10 2014 WET ==========================================================================

Current Status peut prendre les valeurs suivantes :

   Submitted : soumis avec succès à la grille
   Waiting : un CE répondant aux besoins du job doit être sélectionnée
   Ready : un CE a été trouvée
   Scheduled : le job a été soumis avec succès au CE sélectionné
   Running : le job est en cours d'exécution
   Done : l'exécution est terminée (sans erreur ou non)
   Cleared : les sorties du job ont été téléchargées
   Aborted : le job a échoué et a été arrêté
   Cancelled : le job a été annulé

Récupérer les résultats du job

Lorsque le job a le statut Done (Success), cela signifie qu'il s'est terminé correctement, sans retourner de code d'erreur. Les sorties - le contenu de l'OutputSandbox, peut alors être téléchargé avec la commande :

[talhaoui@ui siesta]$ glite-wms-job-output -i jobId --dir . Connecting to the service https://wms2.magrid.ma:7443/glite_wms_wmproxy_server ================================================================================ JOB GET OUTPUT OUTCOME Output sandbox files for the job: https://wms2.magrid.ma:9000/APYXI_FiFf4hitAEATmukw have been successfully retrieved and stored in the directory: /home/talhaoui/exemples/siesta/talhaoui_APYXI_FiFf4hitAEATmukw ================================================================================ Les fichiers de l'OutputSandbox du job dont l'ID est contenu dans jobId sont sauvés dans le répertoire spécifié par l'option --dir, dans un sous-répertoire au nom généré aléatoirement. Pour notre exemple, voici le contenu du fichier std.out : {{Commande|<nowiki>[talhaoui@ui siesta]$ cd talhaoui_APYXI_FiFf4hitAEATmukw/ [talhaoui@ui talhaoui_APYXI_FiFf4hitAEATmukw]$ ll total 28 -rw-rw-r-- 1 talhaoui talhaoui 25327 Apr 15 12:01 h2o.out -rw-rw-r-- 1 talhaoui talhaoui 0 Apr 15 12:01 std.err -rw-rw-r-- 1 talhaoui talhaoui 0 Apr 15 12:01 std.out [talhaoui@ui talhaoui_APYXI_FiFf4hitAEATmukw]$cat h2o.out Siesta Version: siesta-3.2 Architecture : x86_64-unknown-linux-gnu--unknown Compiler flags: f95 -g -O2 SERIAL version * Running in serial mode >> Start of run: 15-APR-2014 11:59:39 *********************** * WELCOME TO SIESTA * *********************** reinit: Reading from standard input ************************** Dump of input data file **************************** SystemName Water molecule SystemLabel h2o NumberOfAtoms 3 NumberOfSpecies 2 MeshCutoff 50 Ry %block ChemicalSpeciesLabel 1 8 O # Species index, atomic number, species label 2 1 H %endblock ChemicalSpeciesLabel AtomicCoordinatesFormat Ang %block AtomicCoordinatesAndAtomicSpecies 0.000 0.000 0.000 1 0.757 0.586 0.000 2 -0.757 0.586 0.000 2 %endblock AtomicCoordinatesAndAtomicSpecies save-rho T save-delta-rho T save-total-potential T save-neutral-atom-potential T save-hs T ************************** End of input data file ***************************** reinit: ----------------------------------------------------------------------- reinit: System Name: Water molecule reinit: ----------------------------------------------------------------------- reinit: System Label: h2o reinit: ----------------------------------------------------------------------- initatom: Reading input for the pseudopotentials and atomic orbitals ---------- Species number: 1 Label: O Atomic number: 8 Species number: 2 Label: H Atomic number: 1 Ground state valence configuration: 2s02 2p04 Reading pseudopotential information in formatted form from O.psf Valence configuration for pseudopotential generation: 2s( 2.00) rc: 1.47 2p( 4.00) rc: 1.47 .....

Jobs de longue durée et utilisation de MyProxy

Les proxys standards ne durent que 12h. Si votre job n'est pas terminé au bout de ces 12h, alors il échoue.

Il existe un moyen de demander au proxy de se renouveler automatiquement pour permettre à un job de durer jusqu'à 7 jours.

Il faut pour cela demander un proxy longue durée. D'abord il faut avoir un proxy standard valide :

[talhaoui@ui siesta]$voms-proxy-init --voms magrid

puis créer un proxy de longe durée à l'aide de la commande

[talhaoui@ui siesta]$ myproxy-init -d -n -s myproxy.ct.infn.it Your identity: /C=MA/O=MaGrid/OU=CNRST/CN=Nabil Talhaoui Enter GRID pass phrase for this identity: Creating proxy ............................................................................... ............................................................................ Done Proxy Verify OK Warning: your certificate and proxy will expire Tue Apr 22 14:00:00 2014 which is within the requested lifetime of the proxy A proxy valid for 168 hours (7.0 days) for user /C=MA/O=MaGrid/OU=CNRST/CN=Nabil Talhaoui now exists on myproxy.ct.infn.it.

L'existence d'un proxy longue durée permet au Workload Management System de demander automatiquement un renouvellement de votre proxy standard afin de permettre aux jobs en cours de se poursuivre.

L'option -d signifie que vous voulez associer l'identité inscrite dans votre certificat à ce proxy, l'option -n signifie que vous voulez pouvoir accéder à ce proxy longue durée sans passphrase (ce qui permet au WMS d'accéder au proxy longue durée) et l'option -s précise le serveur MyProxy sur lequel vous voulez stocker votre proxy longue durée.

Pour pouvoir initialiser un proxy longue durée, vous devez tout d'abord créer un proxy standard.

Pour qu'un job utilise ce proxy longue durée pour pouvoir s'exécuter pendant plus de 12h, vous devez ajouter une ligne à votre fichier .jdl :

Fichier: joblong.jdl
Type = "Job";
JobType = "Normal";
Executable = "siesta.sh";
Arguments = "h2o";
StdOutput = "std.out";
StdError = "std.err";
InputSandbox = {"siesta.sh", "h2o.fdf", "H.psf", "O.psf"};
OutputSandbox = {"std.err","std.out","h2o.out"};
Requirements = Member("VO-magrid-siesta_v3.2",other.GlueHostApplicationSoftwareRunTimeEnvironment);
MyProxyServer = "myproxy.ct.infn.it";

Pour obtenir des informations sur votre proxy longue durée, vous devez utiliser la commande

[talhaoui@ui siesta]$ myproxy-info -d -s myproxy.ct.infn.it username: /C=MA/O=MaGrid/OU=CNRST/CN=Nabil Talhaoui owner: /C=MA/O=MaGrid/OU=CNRST/CN=Nabil Talhaoui timeleft: 166:33:32 (6.9 days)

Vous pouvez détruire ce proxy longue durée avec la commande

[talhaoui@ui siesta]$ myproxy-destroy -d -s myproxy.ct.infn.it Default MyProxy credential for user /C=MA/O=MaGrid/OU=CNRST/CN=Nabil Talhaoui was successfully removed..
Navigation
Administrateur
Utilisateur
Applications
Autorité de Certification