Utilisation du calculateur Romeo
Attention, cet article traite du premier calculateur Romeo installé en 2002 !
Utilisation du calculateur Romeo
Le système batch sur Romeo
Romeo est à la disposition des utilisateurs dans le cadre des files d'attente gérées par SGE. Tout manquement à cette règle, sciemment, par négligence, ou par incompétence entraînera simplement la fermeture des comptes mis en cause. Pour aider à mieux maîtriser ce système de file d'attente SGE, cette page rappelle les différentes queues et les commandes permettant de lancer un job. Le mode de contrôle est également détaillé. Vous pouvez aussi télécharger la documentation complète de SGE au format pdf.
- Présentation des queues batchs
Les utilisateurs désirant faire des calculs longs sur Romeo (>1minute) doivent soumettre leurs travaux au système de gestion SGE (Sun Grid Engine). Le tableau suivant résume les différentes queues batch disponibles sur la machine.
| Noms queues |
- Comment soumettre un job?
- Comment monitorer la charge de la machine?
- La commande qsub
- Parallèlisme
- Parallèlisme avec MPI
- De l'interactif dans du batch
- qrsh: soumet une session interactive rsh à SGE
- qlogin: soumet une session interactive login à SGE
- qsh: soumet une session interactive X-Window à SGE
- Comment tuer un job?
| # de slots | Limite temps | Limite disque | Modes disponibles* |
Priorités (nice) |
|
| court | 4 | 30 mn | 10 Go | BIP | 2 |
| 6heures (désactivée) | 4 | 6 h | 1 Go | B | 4 |
| 12heures | 4 | 12 h | 10 Go | BP | 4 |
| 24heures (désactivée) | 2 | 24 h | 1 Go | B | 8 |
| 48heures | 8 | 48 h | 1 Go | BP | 10 |
| big48 | 6 | 48 h | 10 Go | BP | 10 |
| infini | 4 | 336 h (14 jours) | 1 Go | BP | 19 |
| biginf | 4 | 336 h (14 jours) | 10 Go | BP | 19 |
| 24procs | 24 | 1 h | 1 Go | P ¢ | 0 |
¢ queue spécifique au groupe "infoleri" pour job de 10' maximum sur toute la machine (priorité basse, nice 15).
Remarques importantes : Le nombre de jobs est limité à 8 par utilisateur.
Le nombre de jobs en parallèle est limité à 8 pour la machine entière (sauf 24procs)
Deux méthodes sont disponibles : soit on utilise l'interface graphique de SGE, soit on passe par la ligne de commande. On ne présentera ici que les commandes "clavier".
On dispose pour ce faire de la commande qstat. Une option pratique de qstat est -f (pour "full"), qui permet de formater l'affichage des jobs tournants en fonction des queues où ils se trouvent.
Une autre commande pratique est prstat. Elle ressemble à la commande bien connue top mais permet par exemple d'obtenir avec l'option -t les sous-totaux mémoires, cpu, temps consommés par chaque utilisateur.
La commande qacct -o permet quant à elle d'accèder aux totaux des temps machines consommés par chaque utilisateur depuis la création de leur compte
Ces commandes de monitoring sont rappelées afin de permettre à l'utilisateur de bien choisir l'emplacement où il veut lancer son job et aussi pour lui permetre de connaître sa consommation cpu.
La commande qsub est la principale commande de SGE et nous ne saurions que trop conseillé de lire sa page de man. Toutefois, nous allons résumé ici son utilisation.
La syntaxe principale est la suivante : qsub nom_du_script où nom_du_script est le nom du fichier de script où sont stockés les commandes que devra faire tourner SGE dans la queue. On devrait donc y trouver généralement nom_du_programme <fichier_input > fichier_output.
Nous allons résumer dans un tableau les principales options de qsub. Ces options peuvent être ajoutées au début du fichier de script en les faisant précéder d'un dièse et d'un dollar(#$).
| Options | Effets |
| -q nom_queue | soumet le job dans la queue demandée |
| -cwd | l'entrée et la sortie standard deviennent le répertoire de travail où se trouve le fichier de script |
| -M addresse e-mail | définit une addresse e-mail à laquelle SGE peut envoyer l'état d'un job |
| -m b | envoie un mail à l'addresse définie par -M lorsque le job démarre |
| -m e | envoie un mail à l'addresse définie par -M lorsque le job finit correctement ;-) |
| -m a | envoie un mail à l'addresse définie par -M lorsque le job plante :-( |
| -m s | envoie un mail à l'addresse définie par -M lorsque le job est suspendu :-o |
| -V | exporte les variables d'environnement |
| -S /path_to/shell | exécute le job avec le shell demandé |
Exemple de script pour lancer un job:
- #!/bin/ksh
#$ -S /bin/ksh
#$ -V -cwd
#$ -M nom_user@romeo
#$ -m b
#$ -m e
#$ -m s
#$ -m a
/home/nom_user/bin/program.exe < file.inp > file.out
Exemple de script pour lancer un job Fluent:
- #!/bin/ksh
#$ -S /bin/ksh
#$ -V -cwd
#$ -M Cet e-mail est protégé contre les robots collecteurs de mails, votre navigateur doit accepter le Javascript pour le voir
#$ -m b
#$ -m e
#$ -m s
#$ -m a
export FLUENT_INC=/opt/Fluent.Inc
/opt/Fluent.Inc/bin/fluent 2d -g -sge -i /data/home/user/fichier.jou
Romeo étant un calculateur SMP 24 processeurs, il est naturellement dédié aux calculs parallèles. Comment faire pour lancer un job en parallèle dans SGE?
Dans un premier temps, il est nécessaire pour certains logiciels (dont Gaussian) de spécifier la taille du cache. En Ksh, on ajoute dans son fichier de script ulimit -s 8192 (ne pas mettre #$) (les processeurs ont un cache de 8Mo). En Csh, cela donne limit -h stacksize 8192 (ne pas mettre #$).
Il faut ensuite demander à SGE de tourner en parallèle. Pour cela, un environnement parallèle SMP a été créé qui est accessible dans toutes les queues pour l'instant.
Remarque : les jobs MPI ou OpenMP nécessitent de créer d'autres environnements parallèles.
On ajoute donc dans les options de qsub : #$ -pe SMP nombre_procs. Valable sauf pour 24procs pour laquelle on utilise #$ -pe parallele nombre_procs
Lorsque que l'on lance un job avec MPI sur roméo il est nécessaire d'adapter son shell de lancement afin de respecter la priorité (nice) assignée à la file.
Il faut donc ajouter à la ligne de lancement la commande nice suivie de l'indice de priorité devant mprun et devant votre programme MPI.
Exemple:
Je souhaite lancer mon programme MPI dans la file "court" qui possède un nice de "2" (voir ci-dessus le tableau de correspondance file-nice)
- #!/usr/bin/bash
#$ -S /usr/bin/bash
#$ -V
#$ -cwd
#$ -M votre@email
#$ -m b
#$ -m e
#$ -m s
#$ -m a
#$ -pe SMP 4
nice -2 mprun -np 4 nice -2 monProgrammeMPI
Remarque: seule la dernière ligne de ce shell est importante pour gérér la priorité
Il est possible de lancer dans la queue "court" un job qui est en fait une session, càd, qu'un utilisateur peut à partir de sa session principale demander la création d'un job interactif. Les commandes sont:
C'est toujours l'étape la plus facile : qdel job_id où job_id est le numéro de job attribué par SGE et disponible via la commande qstat -f.
Pour toute question sur cette page, veuillez vous adresser à Cet e-mail est protégé contre les robots collecteurs de mails, votre navigateur doit accepter le Javascript pour le voir
Tutoriaux disponibles
- Journées de formation organisées par le centre de calcul ROMEO
- Cours MPI fait par l'IDRIS
- Cours MPI par l'exemple (Philippe Ris)
- Aide mémoire MPI (Fortran) par l'IDRIS
- Aide mémoire MPI (C) par l'IDRIS
Questions / Réponses
Q.0 :Lorsque je compile avec gcc, l'executable obtenu ne fonctionne pas sur Romeo. Est-ce normal ?
R.0: En effet, 2 gcc sont installés sur Roméo, et la commande make utilise le gcc Unix et non le gcc Solaris...
Q.1 :Je suis responsable d'un projet et je souhaite en soumettre un nouveau. Y a-t-il quelquechose de particulier à faire ?
R.1: Il faut impérativement que vous spécifiez un mot de passe différent de celui de votre autre projet. C'est la seule restriction connue.
Q.2 :Jobs MPI non terminés en sortie de SGE ?
R.2: SGE sort bien vos jobs de son système de file mais n'arrive pas à les stopper (uniquement sur les jobs MPI) il faut faire un kill de vos process, car ils continuent à tourner hors du système de file
Q.3 :Comment gérér la priorité de mes jobs MPI (nice) ?
R.3: Il suffit d'ajouter "nice -prioritéDeLaFile mprun -np nombreDeProcesseurs nice -prioritéDeLaFile jobMPI" à la fin de votre shell de lancement. Un exemple se trouve au bas de cette page.
Q.4 :Utilisation de X11 via SSH
R.4: Vous pouvez utiliser X11 à travers le tunnel SSH en utilisant lors de votre connexion "ssh -X romeo.univ-reims.fr", attention verifier alors la valeur de votre variable DISPLAY elle doit être égale à "localhost:10.0". Vous pourrez ensuite lancer des applications en mode graphique.
Q.5 :Comment lancer Scilab en mode texte ?
R.5: Utilisez la ligne de commande suivante "scilab -nw"
Q.6 :Comment lancer dans Sun Grid Engine des jobs dépendants ?
R.6: Vous pouvez utiliser la commande "qsub -hold_jid identifiant_job1, identifiant_job2, etc", ainsi le job numero 2 ne sera lancé que lorsque le job numéro 1 sera terminé.
Q.7 :Mon process vient d' être tué après 30 minutes ?
R.7: les jobs lancés hors systèmes de file sont limités dans le temps à 30 minutes, vous pouvez visualiser les restrictions en tapant "ulimit -a"
Q.8 :A quoi ressemble un script MPI ?
R.8: Regarder le tutorial fait par Philippe RIS vous en aurez un trés bon exemple. Cliquez ici
Q.9 :je veut diviser une matrice n*n sur un nombre p e processeur par mpi avec mpi_scatter ou mpi_send ca ne marche pas et je suis en blocage si mpi send et mpi rcv ...
R.9: je peux diffuser ce message à la liste des utilisateurs pour vous aider, ecrivez moi sur Cet e-mail est protégé contre les robots collecteurs de mails, votre navigateur doit accepter le Javascript pour le voir
[archive du site http://www.univ-reims.fr/calculateur au 4 mars 2007]
01/01/1970 Actualité
Présentation Hardware de ROMEO II
ROMEO II a été installé dans les locaux du Centre de Calcul Régional de Champagne-Ardenne en Novembre 2006. L'inauguration officielle des locaux et de la machine a eu lieu le 31 janvier 2007.
ROMEO II est un supercalculateur de type grappe d'ordinateur (Cluster) . Il est constitué de 11 noeuds et d'un total de 108 coeurs et de près de 400 giga octets de mémoire vivre, pour déployer 614 giga flops (milliards d'opérations par seconde). Les processeurs choisis sont les Intel Itanium II (génération Montecito) dotés chacun de deux cœurs de calcul, avec 8 méga octets de mémoire cache et une fréquence de 1,6 Giga Hertz (famille 9030, gravure à 90nm).
Trois nœuds sont réservés pour le service et les 8 autres pour le calcul :
Noeuds de service :
romeo0 : C'est le noeud d'administration, il gère l'authentification sécurisée des utilisateurs, maintient et sauvegarde les données et utilisateurs,gère l'accès aux ressources de calculs ainsi que la plupart des services du cluster. Novascale 3045, 2 processeurs, 8Go de Ram, 300Go de DD.
romeo1 : C'est le noeud frontal situé à l'Université de Reims Champagne-Ardenne. Ou qu'ils soient dans le monde, les utilisateurs se connectent au cluster par l'intermédiaire de ce noeud de login. Tirant ainsi bénéfice du réseau de recherche Renater et du réseau régional Télémus. Tous les outils pour créer des programmes y sont installés (compilateurs, débuggers, bibliothèques, ... ). Une fois mis au point, le programme est soumis comme une tache de calcul au gestionnaire de batch PBSpro qui exécutera le dit programme sur un nœud de calcul adapté au moment ou il sera disponible. Novascale 3045, 2 processeurs, 32Go de Ram, 300Go de DD.
romeoutt : c'est un frontal équivalent à romeo1 installé physiquement dans les locaux de l'Université de Technologie de Troyes et relié au cluster grâce au réseau Régional Télémus. Novascale 3045, 2 processeurs, 16Go de Ram, 300Go de DD.
Noeuds de calcul :
Chaque noeud est constitué de plusieurs processeurs qui partagent la mémoire
| romeo2 | Novascale 3045 | 8 cœurs de calcul | 16Go de Ram | 300Go de DD SCSI 3 |
| romeo3 | Novascale 3045 | 8 cœurs de calcul | 16Go de Ram | 300Go de DD SCSI 3 |
| romeo4 | Novascale 3045 | 8 cœurs de calcul | 16Go de Ram | 300Go de DD SCSI 3 |
| romeo5 | Novascale 3045 | 8 cœurs de calcul | 16Go de Ram | 300Go de DD SCSI 3 |
| romeo6 | Novascale 3045 | 8 cœurs de calcul | 32Go de Ram | 300Go de DD SCSI 3 |
| romeo7 | Novascale 3045 | 8 cœurs de calcul | 32Go de Ram | 300Go de DD SCSI 3 |
| romeo8 | Novascale 5165 | 16 cœurs de calcul | 128Go de Ram | 600Go de DD SCSI 3 |
| romeo9 | Novascale 5325 | 32 coeurs de calcul | 64Go de Ram | 600Go de DD SCSI 3 |
Les périphériques suivants sont intégrés à la machine :
- Baie de disques FDA 1500 NEC contenant 20 disques de 146 Go chacun, et connectés en Raid 6 permettant une redondance des 2 TO d'informations et donc une sécurité en cas de panne. La baie est reliée en fibre optique sur le noeud d'administration.
- Sauvegarde sur Bandes Neo2000-LXN2000, avec 2 lecteurs LTO3 (débit 1840Go/h), 30 cassettes (66To). Une sauvegarde est effectuée chaque jour, ce qui permet de retrouver des information détruites ou effacées par erreur.
- 4 Onduleurs avec 8 batteries supplémentaires (APC) permettent 30 minutes d'autonomie en cas de panne.
- Un système KVM permet de se connecter tour à tour à tous les nœuds avec un seul clavier, souris et écran, d'une simple pression.
- Un serveur PAP (sous windows serveur 2003) permet de contrôler et surveiller les Novascales 5xx5 (romeo8 et romeo 9).
- Réseau de données Gigabit (Cisco 3560-G 24 ports)
- Réseau de calcul Quadrics (QS32A-CR 16 voies avec prise en charge MPI) avec RMS, permettant une communication soutenue et bidirectionelle de plus de 900 Mo/s entre les noeuds.
- Tous les nœuds sont équipés d'un Système Linux BAS de Bull à base de RedHat (2.6.18-B64k.2.17, installé en décembre 2007)
- Système de soumission de jobs PBSpro
Mercredi 15 novembre 2006, Claude Piccoli (Bull) nous a présenté la partie Hardware de Romeo2
Retrouvez sa présentation ici .
01/01/1970, arnaud_renard ActualitéBoost

version ROMEOII : http://cosy.univ-reims.fr/romeo2/documents/boost/
- les threads (Boost.Threads)
- les matrices (uBLAS) et les tableaux à dimensions multiples (Boost.MultiArray)
- les expressions régulières (Boost.Regex)
- la méta-programmation Boost.Mpl
- l'utilisation de foncteurs (Boost.lambda, Boost.bind)
- la date et l'heure (Boost.Date_Time)
- les fichiers et les répertoires (Boost Filesystem)
- gérer la mémoire avec des pointeurs intelligents (Smart Pointers)
- faire de la sérialisation en binaire / texte / XML, en particulier sur les conteneurs standards (Boost Serialization)
- manipuler des graphes mathématiques (Boost Graph)
- manipuler les chaînes de caractères (Boost String Algorithms)
- la création de parsers (Boost.spirit)
- et bien d'autres...
Turoriel BOOST par Aurélien Regat-Barrel
01/01/1970 ActualitéGaussian
Gaussian est un ensemble de programmes pour le calcul de structures électroniques (calculs de Chimie Quantique).
Site web : www.gaussian.com
Parmi les possibilités importantes on trouve:
- Le calcul de l'energie potentielle a plusieurs niveaux de theorie possibles : semiempirique, HF, DFT, MP2, MP4, CCSD(T), CASSCF, CASPT2, ..., ONIOM, effet de solvant, ...
- La recherche de points stationnaires sur la SEP (minima, états de transition,...)
- Le calcul de propriétés moléculaires diverses (fréquences de vibration, moment dipolaire, déplacments chimiques RMN, propriétés thermodynamiques (H, S, G), ...
La version G.03 est installée sur Romeo2
Script de soumission :
Il existe aussi un outil pour générer un script de manière interactive : gscr est disponible dans /opt/tools, il vous suffit de le copier dans votre répertoire de travail pour l'utiliser et éventuellement le modifier. Merci à Eric Henon qui a créé cet outil.
utilisation en ligne: csh gscr molecule :repondre aux questions (nb proc. demandes ...)=> genere molecule.sh et il ne reste qu'a soumettre par qsub molecule.sh
Script de soumission type
#!/bin/sh
### URCA launching file for jobs
###
#PBS -N Gaussian_jobname
### declare job non-rerunable
#PBS -r n
### output file
#PBS -e Gaussian_job.err
#PBS -o Gaussian_job.out
### Mail to user - abort, begin and end -
#PBS -m abe
#PBS -M Cet e-mail est protégé contre les robots collecteurs de mails, votre navigateur doit accepter le Javascript pour le voir
### Queue name
#PBS -q long
### Resources query: number of nodes, cpu per node, cpu time
#PBS -l nodes=1:ppn=2:romeo25
### working directory
PBS_O_WORKDIR=/tmp/user.Gaussian.jobname.27835
mkdir $PBS_O_WORKDIR
echo Working directory is $PBS_O_WORKDIR
cd $PBS_O_WORKDIR
echo Running on host `hostname`
echo Time is `date`
echo Directory is `pwd`
### run executable
export g03root=/opt/Gaussian
source $g03root/g03/bsd/g03.profile
export LD_LIBRARY_PATH="/opt/intelruntime:$LD_LIBRARY_PATH"
cp /home_nfs/user/jobname.inp $PBS_O_WORKDIR
g03 jobname.out
cp jobname.out /home_nfs/henon
### preciser le nbre de processeurs ayant servi
cd /home_nfs/user
echo "************" >> jobname.out
echo Run on 2 nodes >> jobname.out
B3LYP/6-311++g** test job
molecule: C2H5NO2
Le second jeu incore fait reference au meme calcul avec les integrales bielectroniques conservees en memoire vive au lieu du disque dur: 550Mo/par proc
- ROMEO2 9.1 Compiler
| NPROC | TIME | SPEEDUP | EFFICIENCY(%) | ROMEO1/ROMEO2 |
|---|---|---|---|---|
| 1 proc | 164 s | 1 | 100 | 6.0 |
| 2 procs | 92 s | 1.8 | 89.1 | 5.7 |
| 4 procs | 45 s | 3.6 | 91.1 | 5.7 |
| 8 procs | 32 s | 5.1 | 64.0 | 4.9 |
- ROMEO2 9.0 Compiler
| NPROC | TIME | SPEEDUP | EFFICIENCY(%) | ROMEO1/ROMEO2 |
|---|---|---|---|---|
| 1 proc | 575 s | 1 | 100 | 1.73 |
| 2 procs | 299 s | 1.92 | 96.1 | 1.74 |
| 4 procs | 149 s | 3.86 | 96.5 | 1.71 |
| 8 procs | 105 s | 5.48 | 68.5 | 1.45 |
| 16 procs | 59 s | 9.75 | 60.9 | |
| 32 procs | 38 s | 15.13 | 47.3 |
- Direct/Incore ROMEO1/ROMEO2
| 1 proc incore | 114 s | 1.00 | 100 | 5.04 | 7.7 |
| 2 procs incore | 69 s | 1.65 | 82.6 | 4.33 | 9.6 |
| 4 procs incore | 38 s | 3.00 | 75.0 | 3.92 | 14.9 |
| 8 procs incore | 31 s | 3.68 | 46.0 | 3.39 | 16.2 |
| 16 procs incore | 26 s | 4.38 | 27.4 | 2.27 |
- CRIHAN (p5)
| NPROC | TIME | SPEEDUP | EFFICIENCY(%) |
|---|---|---|---|
| 1 proc | 206 s | 1 | 100 |
- ROMEO1
| NPROC | TIME | SPEEDUP | EFFICIENCY(%) |
|---|---|---|---|
| 1 proc | 992 s | 1 | 100 |
| 2 procs | 520 s | 1.91 | 95.4 |
| 4 procs | 255 s | 3.89 | 97.3 |
| 8 procs | 156 s | 6.36 | 79.5 |
- incore:
| 1 proc | 878 s | 1 | 100 |
| 2 procs | 665 s | 1.32 | 66 |
| 4 procs | 567 s | 1.55 | 38.7 |
| 8 procs | 502 s | 1.75 | 21.8 |
****************
01/01/1970 ActualitéJython
JPython est né d'une volonté d'utiliser les technologies Java avec un langage simple et puissant : Python. L'interpréteur python a donc été réécrit en Java pour permettre le mélange entre les classes du jdk et l'intrépeteur python au sein de la même machine virtuelle Java. Suite à des problèmes de license déténue par le CNRI (qui a vu la naissance de Python et de JPython), un nouveau nom a été donné à ce projet : Jython.
Jython 2 est une version plus mature, qui subit un processus de développement plus intense que celui de JPython.
Jython permet de
- compiler dynamiquement du python en bytecode Java
- hériter des classes Java en Jython
- compiler statiquement (création d'applets, servlets, beans...)
- utiliser la syntaxe et les modules python dans les programmes Java
- avoir un interpréteur python manipulant des objets Java
- Jython est certifié 100% Pure Java (portabilité assurée)
La procédure d'installation de Jython 2 n'a plus rien à voir avec celle de son ancêtre JPython 1.1. Elle est en effet vraiment trés simple. Pour ceux qui désirent travailler avec JPython 1.1, il faut non seulement installer JPython mais aussi l'errata de Finn Bock permettant de fixer pas mal de petites défaillances (voir liens). Cela dit, il n'y a pas vraiment de raison d'utiliser cette dernière, d'autant plus que la compatibilité ascendante est assurée.
site officiel :http://www.jython.org/
infos et tutoriels : http://flrt.free.fr/jython/intro.html
Installation utilisateur de jython sur votre compte :
copy du fichier sur votre compte : cp /opt/tools/jython_installer-2.2b2.jar .
lancement de l'installation : java5 -jar ./jython_installer-2.2b2.jar --console
il faut ensuite répondre à toutes les questions et choisir un répertoire d'installation dans votre compte, par exemple /home_nfs/nomCompte/jython
01/01/1970 Actualité