Actualité ROMEO
Projets du thème Mathématiques et informatique

Les équipes de recherche en mathématiques appliquées et en informatique développent de nouvelles approches pour exploiter au mieux les architectures parallèles actuelles.
Ces études se situent en amont des travaux menés par les équipes en sciences de l’ingénieur et en modélisation moléculaire.

Projet I : optimisation combinatoire et parallélisme

Ce projet est développé par le CReSTIC.
Chercheurs et doctorants impliqués : O. Flauzac (professeur), C. Jaillet (MC), M. Krajecki (professeur, responsable du projet), H. Deleau (post-doctorant), A. Renard (ATER).
Ce projet vise à développer des approches génériques de résolution de problèmes combinatoires, sur architectures parallèles.
détail du projet

Projet 2 : calcul de trajectoires d'avion

Ce projet est développé par le CReSTIC.
Chercheurs et doctorants impliqués : A. Bui (professeur), D. Sohier (MC, responsable du projet), A. d’Aspremont (Université de Princeton, USA).
Ce projet a pour but de calculer et de simuler des trajectoires d'appareils aériens soumis à des conditions de vol incertaines. La solution retenue pour ce travail a été de modéliser l'aléa par des une chaîne de Markov décrivant le nombre de zones bloquées par un orage à chaque instant.
détail du projet


Projet 3 : séparation de sources

Ce projet est développé par le laboratoire EDPPM en collaboration avec le CReSTIC.
Chercheurs et doctorants impliqués : F. Lefevre (MC, responsable du projet), A.Kéziou (MC), H.Fenniri (MC), M. G.Gelle (professeur), G.Delaunay (professeur), S. Lohrengel (MC), El-Rhabi (société Realeyes3D)
détail du projet

Projet 4 : schéma pararéel et équations de Maxwell

Ce projet est développé par le laboratoire EDPPM en collaboration avec le CReSTIC. Chercheurs et doctorants impliqués : F. Lefevre (MC, responsable du projet), S. Lohrengel (MC), M. Krajecki (professeur).
La résolution numérique des équations de Maxwell (système hyperbolique) nécessite l'usage de schémas numériques suffisamment précis en temps et en espace, et ayant surtout de bonnes propriétés de stabilité sous une condition de type CFL.
détail du projet

Actualité ROMEO
ROMEO II : Compilateur Intel C/C++ et Intel Math Kernel Library

Résumé: Ce document sert de base à ceux qui veulent utiliser la Cluster Math Kernel Library (CMKL) d'Intel, librairie optimisée pour les processeurs Itanium. Nous ne détaillerons pas comment programmer avec cette librairie, mais comment réussir à compiler lorsqu'on l'utilise.

1 Cas pratique : les nombres aléatoires

L'utilisation de la fonction rand() afin de générer un nombre aléatoire dans un programme parallèle C/C++ est à proscrire, car cette fonction bloque des ressources systèmes et vos processus doivent alors d'attendre la libération de ces ressources pour pouvoir poursuivre.
Il est préférable d'utiliser un autre moyen pour générer des nombres aléatoires pour pallier ce problème, et la librairie Intel Kernel Math nous en fournit un grand nombre dédié au processeur Itanium.

1.1 Compiler avec la librairie mkl

Pour compiler vos programmes utilisant la librairie mkl, vous devez inclure dans votre programme cette librairie :
#include<mkl.h>
Maintenant vous devez indiquer au compilateur où trouver cette librairie. Pour cela, on ajoute à la ligne de commande les paramètres suivants :

  • -I /opt/intel/cmkl/8.1.1/include/
  • -L /opt/intel/cmkl/8.1.1/lib/64
  • -lvml

Par exemple :

icc -I /opt/intel/cmkl/8.1.1/include/ -L /opt/intel/cmkl/8.1.1/lib/64 -lvml source.c -o executable
ou
icpc -I /opt/intel/cmkl/8.1.1/include/ -L /opt/intel/cmkl/8.1.1/lib/64 -lvml source.c -o executable

Il sera parfois nécessaire d'ajouter les arguments -lkml_ipf et -lmk_lapack selon vos besoins.

1.2 Exécuter un programme utilisant la librairie mkl

Une fois votre programme compilé, vous allez vouloir l'exécuter, et une erreur indiquant que le programme ne trouve pas les librairies nécessaires à son fonctionnement apparaît. Nous devons modifier la variable d'environnement référençant les librairies afin de lui indiquer où elles se trouvent. Pour cela, tapez la commande suivante :
export LD_LIBRARY_PATH = opt/intel/cmkl/8.1.1/lib/64 : $LD_LIBRARY_PATH
Bien évidemment, à chaque nouvelle session, vous devrez taper cette commande. Pour éviter cela, nous allons modifier notre fichier .bashrc se trouvant à la racine de notre compte (voir listing 1)

Listing 1: Le fichier .bashrc

# .bashrc
# User specific aliases and functions
if [ "$HOSTNAME" == romeo1 ]; then
# Acces au compilateur C/C++ d'Intel
source /opt/intel/iccvars.sh
fi
# Ajout du chemin de la librairie CMKL
export LD_LIBRARY_PATH=/opt/intel/cmkl/8.1.1/lib/64/ : $LD_LIBRARY_PATH
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi

2 Pour finir

Afin de savoir utiliser correctement cette librairie, je vous invite à consulter le Intel Math Kernel Library - Vector Statistical Library Notes (intel_vlsnotes.pdf) disponible sur le site http://cosy.univ-reims.fr/romeo2/.

Actualité ROMEO
Compilateur Intel C/C++, Fortran et OpenMP

Résumé: Ce document sert juste de rapide introduction à l'utilisation du compilateur Intel C/C++ avec OpenMP installé sur le cluster Romeo2. Nous ne détaillerons pas comment programmer avec OpenMP, ce n'est pas le but recherché.

1 Connexion à Romeo2

Pour se connecter à Romeo2, vous pouvez utiliser la commande ssh :

ssh nom@romeo2.univ?reims.fr

ou

ssh ?X nom@romeo2.univ?reims.fr

si vous souhaitez exporter le Display. Vous trouverez plus d'informations sur la commance ssh en tapant dans votre terminal man ssh.

2 Le compilateur Intel C/C++ - Fortran

Le compilateur Intel C/C++ est le seul compilateur ?actuellement? sur Romeo2 capable d'utiliser la librairie OpenMP. Cependant, l'appel au compilateur icc (langage C) ou icpc (langage C++) ne vous renverra qu'un message d'erreur (command not found). Pour pouvoir utiliser ces compilateurs vous devez tout d'abord en définir la source. Pour cela tapez :

source /opt/intel/iccvars.sh

pour charger l'environnement Fortran

source /opt/intel/ifortvars.sh

 


Cette commande est à taper à chaque nouvelle session sur Romeo2. Afin de nous faciliter la tâche, nous allons rajouter cette ligne dans notre fichier .bashrc se trouvant à la racine de notre compte (voir listing 1).

Listing 1: Le fichier .bashrc

 

# .bashrc
# User specific aliases and functions
# Acces au compilateur C/C++ d'Intel (uniquement sur Romeo1)
if [ "$HOSTNAME" == romeo1 ]; then
source /opt/intel/iccvars.sh
fi
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi

Désormais, à chaque nouvelle session, nous aurons accès au compilateur icc et icpc directement.

3 Intel C/C++ et OpenMP

Pour compiler votre projet OpenMP avec les compilateurs Intel, il suffit de rajouter l'argument -openmp à la ligne de commande. Par exemple :

icc ?openmp source.c ?o executable
ou
icpc ?openmp source.c ?o executable

4 Soumettre un job

Afin de soumettre un job à Romeo2, il faut passer par un gestionnaire. On l'appelle par la commande qsub. Cette commande prend une série de paramètres assez conséquent et où il est facile de se tromper. C'est pourquoi nous allons créer un script (listing 2) contenant les informations à passer à qsub.

Listing 2: Le fichier Script

 

#!/bin/sh
### On nomme le job afin de l'identifier facilement
#PBS -N NOM_NB_DE_PROC_UTIL
### Le job peut-il être relancé ? (ici non)
#PBS -r n
### Fichier de sortie d'erreur
#PBS -e erreur.err
### Fichier de sortie standard
#PBS -o sortie.log
### Configuration de la messagerie
### Le serveur enverra un message si le job :
### (a) est tué / (b) commence / (e) est terminé
#PBS -m abe
### Le serveur enverra le mail à l'adresse :
#PBS -M Cet e-mail est protégé contre les robots collecteurs de mails, votre navigateur doit accepter le Javascript pour le voir
### Placement du job dans la file correspondante à sa durée
### small / long / infinite
#PBS -q long
### Réservation des ressources
### Attention : si votre programme fonctionne en mémoire partagée
### (OpenMP) vous ne devez demander qu'un seul noeud.
#PBS -l nodes=1:ppn=32
### Pour les utilisateurs de OpenMP, il faut indiquer le nombre de threads
export OMP_NUM_THREADS=32
### Définition du répertoire
PBS_O_WORKDIR=/home_nfs/nom/chemin/repertoire_de_l_application/
cd $PBS_O_WORKDIR
./l_applicaton parametres_de_l_application

Le script créé (et adapté à vos besoins) est soumis au gestionnaire par la commande :

qsub Script

5 Pour finir

Vous savez maintenant compiler vos programmes C/C++ utilisant OpenMP sur Romeo2, et les soumettre au système. Pour plus d'informations, je vous invite à lire le User's Guide (User.pdf) disponible sur le site http://cosy.univ-reims.fr/romeo2/.

Actualité ROMEO
Journée débugger parallèle graphique DDT


Dans le cadre de l'animation scientifique du Centre de Calcul Régional - ROMEO II, la journée du mardi 12 juin 2007 est organisée autour du débugger graphique DDT. Cet outil permet de debugger et d'analyser le comportement de vos applications scalaires, multithreadées ou plus largement parallèles (MPI, Pthreads, OpenMP), écrites en C, C++ ou Fortran. L'interface graphique (copies d'écran ci-dessous) permet par exemple de visualiser l'utilisation mémoire sur plusieurs processeurs ... un outil performant et très utile qui est disponible sur ROMEO II.

La journée se déroulera en anglais. Outre la présentation de l'utilisation et des fonctionnalités de DDT, cette journée laissera la place à une partie pratique où chacun pourra expérimenter l'outil. Un déjeuner est aussi prévu pour les participants.


  • Afin de préparer au mieux cette journée et notamment la réservation du repas, merci de vous inscrire par mail avant le 26 mai 2007 auprès de Cet e-mail est protégé contre les robots collecteurs de mails, votre navigateur doit accepter le Javascript pour le voiren indiquant vos noms, prénoms et labo, et en précisant votre participation au repas.
  • Programme prévisonnel :
    9h30 - 10h00 - accueil des participants.RDV au batiment Mathématiques-Informatique (numéro 3) de l'Ufr Sciences
    10h00 - 11h00 - introduction, comment démarrer ?
    11h00 - 12h20 - première manipulation séquentielle suivie d'un premier code parallèle MPI.
    12h20 - 13h30 - repas
    13h30 - 14h45 - débuggage de code OpenMP sur processeur multi-core, modules Fortran et templates C++. Gestion de la mémoire.
    15h00 - 17h00 - DDT sur vos codes et introduction au profileur / optimiseur OPT

Lien : http://www.allinea.com/?page=48


Site web en cours de création.