Actualité ROMEO
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.

  1. Présentation des queues batchs
  2. 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
    # 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
    * B=batch, I=interactif (job=shell), P=parallèle
    ¢ 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)

     

  1. Comment soumettre un job?
  2.  

    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".

     

    • Comment monitorer la charge de la machine?
    • 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
    • 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

       

    • Parallèlisme
    • 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


    • Parallèlisme avec MPI
    • 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é

    • De l'interactif dans du batch
    • 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:

      • qrsh: soumet une session interactive rsh à SGE
      • qlogin: soumet une session interactive login à SGE
      • qsh: soumet une session interactive X-Window à SGE
      Ces sessions interactives sont limitées à la queue courte (en queue infini un utilisateur pourrait bloquer la machine indéfiniment). Les options de ces trois commandes sont disponibles dans la page de man, elles sont globalement les mêmes que pour qsub.

       

     

  3. Comment tuer un job?
  4. 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

 

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é

Actualité ROMEO
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é

Actualité ROMEO
Boost


version ROMEOII : http://cosy.univ-reims.fr/romeo2/documents/boost/

 

Boost est un ensemble de bibliothèques C++ gratuites et portables dont certaines seront intégrées au prochain standard C++. On y retrouve donc naturellement les concepts de la bibliothèque standard actuelle, et en particulier ceux de la STL avec laquelle elle se mélange parfaitement. Boost est très riche : elle fournit notamment des bibliothèques pour :

 

  • 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...

 

La liste complète des bibliothèques classées par catégories est disponible ici : http://www.boost.org/libs/libraries.htm

 

La plupart de ces bibliothèques tentent d'exploiter au maximum les possibilités du langage C++. En fait, Boost se veut un laboratoire d'essais destiné à expérimenter de nouvelles bibliothèques pour le C++. Il s'agit donc aussi d'une communauté d'experts (dont plusieurs sont membres du comité ISO de normalisation du C++) qui mettent un point d'honneur à ce qu'un maximum de compilateurs et de systèmes soient supportés. Ils débattent aussi de l'acceptation de nouvelles bibliothèques et l'évolution de celles déjà existantes, préfigurant ainsi ce que à quoi ressemblera certainement la prochaine bibliothèque standard du C++.

 

C'est donc là que réside le grand intérrêt de Boost. Outre son excellence technique et sa license très permissive (compatible avec la GPL) qui permet de l'utiliser gratuitement dans des projets commerciaux, Boost est aussi un choix très viable sur le long terme. En effet, on peut légétimement espérer qu'un nombre important de ses bibliothèques soient un jour standardisées, ce qui en fait un outil dans lequel on peut investir du temps (et donc de l'argent) sans craindre de tout perdre au bout de quelques années faute de support ou d'évolution.

Turoriel BOOST par Aurélien Regat-Barrel

01/01/1970    Actualité

Actualité ROMEO
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é

Actualité ROMEO
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é