Formation à la programmation parallèle

Les applications destinées à être executées sur un cluster doivent tirer parti des capacités d'exécutions parallèles.

Pour ce faire, un ensemble de méthodes peuvent être mises en oeuvre, selon le type de calculateur parallèle et selon les problématiques étudiées.

Module de Formation à la Programmation Parallèle

Première journée : La théorie

Les machines parallèles

SIMD

MIMD

Introduction

Algorithmes parallèles

Synchronisation des processus

Protection des données : lock

Synchronisation des processus : semaphore / barrier

Partage des données

Mémoire partagée

Scatter / Gather

Débits de données sur un cluster

Parallélisation

Etude de cas : multiplication de matrices

Méthode de Strassen

Processeur vectoriel : un SIMD sous le capot

MMX / SSE / 3DNow / AltiVec

Principes et Algorithmes

Algèbre binaire

Utilisation

ATLAS : Automatically Tuned Linear Algebra Software

openMosix : un simulateur MIMD

Présentation

Utilisation

"fork() sub-problems"

MPI : Message Passing Interface

Présentation

Utilisation

MPIch

Bibliothèques d'algèbre linéaire parallèles

BLACS : Basic Linear Algebra Subroutines

scaLAPACK : Scalable Linear Algebra Package

Programmation parallèle

Conclusion

2ème journée : La pratique avec openMosix

Présentation

Matériel

Linux-openMosix

praKsys/Debian

Accès shell

ssh / fish, mosrun

Compilateurs

gcc, g77, ifort

Monitoring

ganglia, mtop, mps

Utilisation d'un cluster

SIMD

Addition de vecteurs

Addition de vecteurs avec ATLAS2

openMosix

Multiplication de matrices

MPI

Multiplication de matrices avec MPIch

Multiplication de matrices avec BLACS

Multiplication de matrices avec scaLAPACK

Programmation parallèle

Calculs parallèles : mythes et réalités

Perspectives

Conclusion

Tous les exemples sont basés sur des programmes en C ou FORTRAN, sous licence GPL. Les codes sources seront donc fournis et réutilisables.

Certains exemples sont spécifiques au cluster openMosix.

Si vous avez des questions, contactez-nous par mail.

Créé par Admin
Dernière modification lundi 22 mai 2006 23:38