Objectifs du TP :
Les
processeurs d'aujourd'hui sont multi-coeurs, et les serveurs de calculs
sont multi-processeurs. Un noeud de calcul possède donc de nombreux
coeurs de calculs connectés à une mémoire partagée. Un paradigme de
programmation possible est le multithreading et le partage de mémoire
entre threads.
Ce TP a pour objectif de paralléliser sur plusieurs coeurs un
produit de matrices carrées pleines, implanté initialement selon
plusieurs algorithmes optimisés mais sur un seul coeur. On
parallélisera successivement 3 implantations initiales,et on mesurera
les performances
de chaque version. Ce travail sera réalisé sur des PC classiques sous
linux
(mais une mise en oeuvre similaire est possible sous Windows), et en
langage C avec OpenMP.
Documents à rendre :
Vous rendrez un SEUL document : un fichier Word ou PDF :
- il sera nommé avec vos noms précédés
de "TP2-OpenMP". Ex : "TP2-OpenMP-Pignon.pdf"
- il comportera sur la première page :
- vos nom et prénoms, et le nom de votre option de 3A,
- la date de remise du rapport,
- le titre ("TP2 : Parallélisation OpenMP").
- il comportera ensuite :
- une description des optimisations
réalisées (pourquoi ? comment ?), y compris de celles permettant d'engager les unités vectorielles
- des tableaux ou graphiques de synthèse représentant vos mesures de performances,
- votre analyse/synthèse de la démarche,
- les extraits importants des codes sources (ex : les routines de calculs après les optimisations importantes).
- Taille maximale de vos rapports : 3 pages.
- Date limite de remise de vos rapports : <voir date annoncée en cours>.
- Remise par e-mail à Stephane Vialle (Stephane.Vialle@centralesupelec.fr)
Travail à effectuer :
Remarques préliminaires :
- L'accès
aux clusters de calculs du Data Center d'Enseignement de CentraleSupélec se fait à travers
l'environnement OAR, et en utilisant des comptes informatique locaux au
campus de Metz. La procédure d'utilisation de OAR pour ce TP est ici.
- Les codes de calcul de ce TP seront évalués par
leurs temps d'exécution des routines de calculs dont on
déduira les GigaFlops (performances absolues), puis par leurs
accélérations vis-à-vis de la version "naïve"
(performances relatives).
- Conservez chacun de vos codes (les codes de chacune des étapes), car il vous resserviront dans d'autres questions.
Fichiers à télécharger :
- Code source initial à compléter : ici
- Fichier Excel de relevé des performances : ici