Utilisation de la grappe de calcul MPI

Information sur la grappe

La grappe de calcul est composée de 24 machines (noeuds) de 8 processeurs Intel XeonTM . Les noeuds de calcul sont reliés par un réseau Ethernet gigabit. Les calculs sont lancés depuis un ordinateur dédié, appellé le frontal. Le noeud frontal comprend un ordonnanceur qui gère une queue FIFO de scripts. Le nombre de noeuds à réserver est spécifié dans le script à lancer. Ceci permet de partager les ressources pour un accès exclusif. Dans le cas du laboratoire, le script lancera un calcul MPI. 

Attention: cette grappe de calcul est une ressource partagée. Veuillez tester votre code avant de le lancer!

Avertissement: prévoyez l'exécution de votre code, n'attendez pas la veille de la remise pour obtenir vos données de performance!

Préparation des sources

La grappe s'accède à distance par SSH avec votre nom d'utilisateur Linux.

ssh username@frontalrocks.info.polymtl.ca

La copie de fichiers doit se faire avec SCP. Une façon simple de procéder est de refaire une archive avec vos sources du laboratoire.

cd inf8601-lab3-2.1.4
make dist
scp inf8601-lab3-2.1.4.tar.gz username@frontalrocks.info.polymtl.ca:

Puis, en se connectant à frontalrocks, il suffit de décompresser, exécuter la commande configure et make. Notez que sur le frontalrocks, mpicc fonctionne correctement, donc la commande configure à utiliser est la suivante:

CC=mpicc ./configure

Lancement d'un script de test

Dans le but de vous familiariser avec le système, voici comment lancer un script simple sur la grappe. Dans cet exemple, un script contenant un sleep de 30 secondes est lancé. Le script réserve 2 noeuds de calcul dans l'ordonnanceur. Voici le script basic.sh:

#!/bin/bash
#
#These commands set up the Grid Environment for your job:
#PBS -N basic
#PBS -q recherche
#PBS -j oe
#PBS -l nodes=2:ppn=8
sleep 30

Il s'agit d'un script bash, dont les premières lignes sont en commentaires. En fait, ces commentaires sont lus par l'ordonnanceur, donc il sont importants. Ceci indique le nom de la tâche (-N basic), le nom de la queue à utiliser (-q default), redirection de stderr vers stdout (-j oe) puis la réservation de 2 noeud à 8 processeurs par noeud (-l nodes=2:ppn=8). Dans le cas d'un calcul MPI, on remplacerait la commande sleep par un appel à mpirun.

Le script est ajouté à l'ordonnanceur avec la commande qsub:

chmod +x basic.sh
qsub basic.sh

Une fois lancé, le script obtient un numéro de tâche (Job ID) qui identifie la tâche pour toute la durée de son exécution. L'état de la queue est obtenu avec la commande qstat:

$ qstat 
Job id Name User Time Use S Queue
------------------------- ---------------- --------------- -------- - -----
57.frontalrocks job-heatsim-2 fgiraldeau 04:41:47 R ens
59.frontalrocks job-heatsim-8 fgiraldeau 0 Q ens

Les statuts S normaux sont Running (R) Queued (Q) et Completed (C). Vous pouvez annuler une tâche avec la commande qdel et son numéro de tâche. Vous ne pouvez annuler que vos propres tâches.

Lancement de l'expérience

Des scripts pour l'expérience sont fournis avec les sources du laboratoire, dans le répertoire "cluster". Les fichiers sont:

  • lib.sh: commande de lancement du calcul avec MPI. Commun à tous les scripts.
  • heatsim-{1,2,4,8,12,16}.sh: Script pour lancer les calculs avec différents paramètres. Il faut un script différent selon le nombre de noeuds de calcul à réserver. 
  • cart-16.sh: test de la division cartésienne sur 128 processeurs.
  • all.sh: Ajout de tous les scripts dans la queue de l'ordonnanceur.
Le lancement du calcul se fait en exécutant le script all.sh dans le bon répertoire sur frontalrocks:
cd inf8601-lab3-2.0.1/cluster
./all.sh
Les résultats seront écrits dans le fichier results/heatsim.stats. Une fois tous les résultats obtenus, puis exécutez le script preprocess.py. Les fichiers heatsim_compute.stats et heatsim_startup.stats seront produits et peuvent être importés dans une feuille de calcul directement. 
Vous pouvez récupérer ces résultats en passant encore une fois par scp :
scp username@frontalrocks.info.polymtl.ca:inf8601-lab3-2.1.4/results/* ~/path/to/lab/results/
Faites part de vos questions le cas échéant sur le forum, il me fera un plaisir d'y répondre.
Modifié le: lundi 6 novembre 2017, 08:11