This page also exists in english

A propos de Myrinet

Myrinet est un cluster linux de l' Université de Genève et géré par le Centre Universitaire d'Informatique (CUI). Il consiste en:

  • 1 noeud maître: dual Xeon 2.4GHz, 2Gb RAM
  • 32 noeuds de calcul: Sun V60x dual Intel Xeon 2.8GHz, 2Gb RAM
  • Réseau: Gigabit ethernet et connexion Myrinet
  • Système de fichier partagé: NFS

L'activité du cluster peut être monitorée (uniquement depuis le réseau de l'université) avec ganglia. Pour toute question, problème, sugestion, contacter l'administrateur du clusteur: EMail: Nicolas Mayencourt

Téléphone: +41 (0)22 379 0198

La liste de distribution EMail: myrinet est à votre disposition pour les annonces et les discussions. Les archives de cette liste sont ici.

Optenir un compte

Le cluster myrinet est ouvert à l'ensemble de la communauté universitaire. La demande de login se fait par e-mail auprès de EMail: Nicolas Mayencourt

Utilisation

Le cluster s'utilise depuis le noeud central myri00. Les noeuds de calcul myri01-myri32 sont réservés pour les batches. Les utilsateurs ne devraient pas se logger sur les noeuds de calcul, mais lancer les batches depuis myri00. (voir les détails plus bas)

Environnement logiciel

Un certain nombre d'outils spécifiques à Myrinet sont disponible sous /opt, et des outils Linux plus génériques sous /unige. Pour chaque outil, un environnement est disponible sous /opt/env et /unige/util/env.

Attention utiliser de préférence /opt, le contenu de /unige n'étant pas toujours à jour (en particulier TOUT ce qui concerne MPI)

Définir son environnement

Pour définir son environnement, il faut sourcer le script correspondant (extention .csh pour Csh ou TCsh, et .sh pour Bash ou BourneShell). Par exemple pour utiliser le compilateur GCC 4.1:

[user@myri00 ~] source /opt/env/gcc41.csh
[user@myri00 ~] gcc MyProgram.c

MPI

Plusieurs compilateurs sont disponible sur Myrinet, avec la version de MPICH correspondante installée. Pour utiliser une version particulière, il faut charger (source) le script correspondant. Par exemple, pour gcc4.1:

[user@myri00 ~] source /opt/env/mpich-gcc41.csh
[user@myri00 ~] mpicc MyProgram_mpi.c

MPICH and C++

Il existe un conflit entre MPICH 1.x et C++. Les constantes `SEEK_SET', `SEEK_CUR' et `SEEK_END' sont définies dans les 2 standard. C'est considéré comme un bug du standard MPI 1.1. Il est recommandé de ne pas utiliser ces constantes, mais plutôt de remplacer (par exemple) `fseek()' par `fgetpos()'.

Les compilateurs

Les compilateurs GNU

La version par défaut est 4.0.1. La version 4.1.0 est également installée, cette version est généralement plus rapide

Pour utiliser gcc 4.1, sans mpich, l'environnement peut-être défini ainsi:

En C-shell:

[user@myri00 ~] source /opt/env/gcc41.csh

En BASH:

user@myri00:~$ source /opt/env/gcc41.sh

Il est possible de placer ces commandes dans ~/.cshrc ou ~/.bashrc, respectivement.

Les flags de compilation suivants sont intéressants:

-O2 or -O3 Enable compiler optimizations.
-march=pentium4 Generate code exclusively for the type of processor in the computation nodes, including vectorization (SSE2).
-funroll-loops Unroll loops if the number of iterations can be determined at compile-time.

idem pour gcc 3.4.6:

% source /opt/env/gcc346.csh

Les compilateurs Intel

La version 9.1 des compilateurs Intel sont disponibles sur Myrinet. Les compilateurs ne sont utilisables que sur myri00, mais le code est exécutable sur chaque noud du cluster. Pour les utiliser:

[user@myri00 ~] source /unige/util/env/intel.csh
[user@myri00 ~] icc MyProgram.c
[user@myri00 ~] ifc MyProgram.f

Les flags de compilations suivants sont intéressants:

-ipo Enable interprocedural optimizations.
-xW Generate code exclusively for the type of processor in the computation nodes.
-fno-alias Assume no aliasing in program. Use with caution - only if you know what you are doing. Your program might show unexpected behavior otherwise.
-fno-falias Assume aliasing in program, but not in functions. Use with caution - only if you know what you are doing. Your program might show unexpected behavior otherwise.

Pour plus d'informations `icc –help | less'.

Lancer des jobs en batch

Les jobs doivent être soumis via TORQUE. Torque est un système de queues batch dérivé de PBS (Portable Batch System).

Définition d'un script TORQUE

on suppose que le programme ci-dessous se nomme job.sh

Exemple 1

#!/bin/sh
 
cd /program/working/directory
mpiexec myprogram input.txt

Exemple 2 les pseudocommentaires '#PBS' sont des options pour qsub. Ces options peuvent également être passé en ligne de commande

#!/bin/sh
#PBS -l nodes=3
#PBS -q test
#PBS -l walltime=00:01:00
 
cd /program/working/directory
mpiexec myprogram input.txt

Exemple 3 Si votre programme nécessite un environnement particulier, il est bien sû possible de le spécifier dans le script

#!/bin/sh
 
source /opt/env/mpich-gcc41.sh
 
cd /program/working/directory
mpiexec myprogram input.txt

Soumettre un job

Pour exécuter un programme, l'utilisateur doit le soumettre à Torque, en utilisant la commande 'qsub', et préciser les resources dont il a besoin, par exemple le temps CPU nécessaire, ou le nombre de CPU pour un job parallèle. Par défaut, le temps d'exécution d'une tache est limité à 1 heure. Passé ce délai, la tâche est tuée. Le temps maximal n'est pas limité, mais il est nécessaire de l'indiquer. Un job soumis à Torque doit être un script. Il est possible de passer les paramètres à qsub ou de les préciser dans le script.

Example 1

qsub job.sh

Cette commande va soumettre le job dans la queue par défaut, pour un temps CPU de 1 heure, sur un CPU.

Example 2

qsub -l nodes=3 -q batch -l walltime=00:01:00 job.sh

Cette commande va soumettre le job dans la queue 'batch', demander 3 noeuds, pour un temps CPU de 1 minute.

Queues

Il y a 2 queues: `batch' and `test'.

Queue `batch'

la queue batch est la queue par défaut, avec comme paramètres par défaut:

  • nombre de noeuds: 1
  • temps CPU: 1 heure

Avec la limite maximale supplémentaire:

  • nombre maximal de processeur par utilisateur: 20
  • nombre maximal de processeurs pour l'ensemble des jobs: 62

Queue `test'

la queue test est utile pour les essais et le développement, les contraintes suivantes sont définies:

  • nombre de CPU: 1
  • temps CPU: 5 minutes (00:05:00)
  • temps maximal d'exécution: 5 minutes (00:05:00)

Comme la queue 'batch' ne peut utiliser que 62 processeurs au maximum sur les 64, il reste en permanence au moins 2 processeurs pour la queue test.

How to determine the right parameters

Cette section est disponible uniquement en anglais

Quelques commandes utiles

Ces commandes sont à utiliser sur myri00. xpbs et xpbsmon nécessite Xwindow, il est éventuellement nécessaire de lancer ssh avec l'option -X ou -Y.

qstat montre le status des queues, les jobs en attente, etc.
showq idem (avec d'autres possibilités).
qdel <job-id> Supprime le job de la queue. Si le job est actif, il est tué.
xpbs Interface graphique pour PBS
xpbsmon Interface graphique pour monitorer les noeuds.
showstart <job-id> estimation des temps de démarrage et de complétion d'un job.
diagnose diagnostique pour divers problems avec les queues, le scheduling des jobs, et cetera dans MAUI.
checkjob <job-id> Donne des informations sur un job.
showbf Let MAUI show the backfill window.
showres Let MAUI show the reservations.

Autres notes

Espace temporaire

Sur chaque noeud (y compris myri00), il y un espace local temporaire /scratch à votre disposition. Vous pouvez librement y créer un dossier à votre nom, mais n'oubliez d'y faire de l'ordre après usage. Attention: cet espace est local à chaque noeud et n'est donc pas accessible depuis les autres noeuds.

Conseils

Si vos jobs sont très long, il est recommandé de prévoir un mécanisme de 'checkpoint' pour ne pas tout perdre en cas de panne.

PBS setup

Voir la version anglaise

Network

Voir la version anglaise

Liens