Méthodes de parallélisation d’algorithmes

26
ALPHA BOUBACAR DIALLO Étudiant au Doctorat en Informatique [email protected]

description

Méthodes de parallélisation d’algorithmes. ALPHA BOUBACAR DIALLO. Étudiant au Doctorat en Informatique [email protected]. Ordre du jour. Problématique et quelques définitions Architectures parallèles Environnements parallèles Programmes parallélisés Futures avenues. - PowerPoint PPT Presentation

Transcript of Méthodes de parallélisation d’algorithmes

Page 1: Méthodes de parallélisation d’algorithmes

ALPHA BOUBACAR DIALLO

Étudiant au Doctorat en Informatique

[email protected]

Page 2: Méthodes de parallélisation d’algorithmes

Problématique et quelques définitions

Architectures parallèles

Environnements parallèles

Programmes parallélisés

Futures avenues

Page 3: Méthodes de parallélisation d’algorithmes

Taille des problèmes à résoudre

Accélération de la résolution

Prix…

Page 4: Méthodes de parallélisation d’algorithmes

CPU ( Central Process Unit)Unité centrale de calcul

GPU ( Graphic Process Unit)Unité graphique de calcul

Page 5: Méthodes de parallélisation d’algorithmes

Programme séquentiel:définit une séquence d’actions ( instructions)

Programme parallèle: contient plusieurs processus qui coopèrent

Système parallèle:dispose d’au moins 2 CPU ( Unité de calcul)

Page 6: Méthodes de parallélisation d’algorithmes

Conditions du parallélisme:

« Soit P1 et P2 deux programmes; on suppose que chacun des programmes utilisent des variables en entrée (E1 et E2) et produit des valeurs en sortie (S1 et S2). Les programmes P1 et P2 sont exécutables en parallèle (noté P1 | | P2) si et seulement si les conditions suivantes sont respectées : E1 ∩ S2 = Ø, E2 ∩ S1 = Ø et S1 ∩ S2 = Ø.  »

Philip Bernstein

Page 7: Méthodes de parallélisation d’algorithmes

Parallélisme de donnéesmême opération effectuée par des processeurs

différents sur des ensembles disjoints de données

Parallélisme de contrôledifférentes opérations indépendantes sont réalisées

simultanément

Parallélisme de fluxl’opération suivante est amorcée avant que la

précédente ne soit terminée

Page 8: Méthodes de parallélisation d’algorithmes

La classification de Flynn en 1972 La classification de Hockney en 1987La classification de Treleaven en 1988La classification de Skillicorn en 1988 La classification de Krishnamurthy en 1989La classification de Duncan en 1990 La classification de Germain-Renaud en 1991La classification d’Ibett en 1992 La classification d’Esclangon en 1992

Page 9: Méthodes de parallélisation d’algorithmes

SISD

un seul flot d’instructions opère sur un même flot de données.

Page 10: Méthodes de parallélisation d’algorithmes

SIMD

un seul flot d’instructions opère sur un ensemble disjoint de données.

Page 11: Méthodes de parallélisation d’algorithmes

MISD

Plusieurs flots d’instructions opèrent sur un même flot de données.

Page 12: Méthodes de parallélisation d’algorithmes

MIMD

Plusieurs flots d’instructions opèrent sur ensemble de données indépendants.

Page 13: Méthodes de parallélisation d’algorithmes

MPI (Message Passing Interface)

Librairie standard de passage de messages

CUDA (Compute Unified Device Arch.)

nouvelle architecture (logicielle et matérielle) pour la mise en œuvre et la gestion des opérations exécutées sur le GPU

Méthode par

laquelle les

données de

la mémoire

d’un CPU

sont copiées

dans la

mémoire

d’un autre

CPU

Page 14: Méthodes de parallélisation d’algorithmes

MPI résulte des efforts de nombreux groupes d’individus entre les années 1992 et 1994.

En avril 1992, sponsorisation d’un atelier sur les standards de passage de messages.

En novembre 1992, présentation de la version MPI-1 et création du premier forum MPI.

En novembre 1993 MPI standard fut dévoilé.

En mai 1994 une version finale disponible.

Page 15: Méthodes de parallélisation d’algorithmes

Le GPU était programmé seulement à travers une API graphique.

1 Milliard

d’opérations

à virgule

flottante par

seconde

Page 16: Méthodes de parallélisation d’algorithmes

CPU(host)

GPU

Page 17: Méthodes de parallélisation d’algorithmes
Page 18: Méthodes de parallélisation d’algorithmes
Page 19: Méthodes de parallélisation d’algorithmes

// includes, project#include <cutil.h>

// Matrix multiplication on the devicevoid MatrixMulOnDevice(const Matrix M, const Matrix N, Matrix P){ // Load M and N to the device Matrix Md = AllocateDeviceMatrix(M); CopyToDeviceMatrix(Md, M); Matrix Nd = AllocateDeviceMatrix(N); CopyToDeviceMatrix(Nd, N);

// Allocate P on the device Matrix Pd = AllocateDeviceMatrix(P); CopyToDeviceMatrix(Pd, P); // Clear memory

// includes, project#include <cutil.h>

// Matrix multiplication on the devicevoid MatrixMulOnDevice(const Matrix M, const Matrix N, Matrix P){ // Load M and N to the device Matrix Md = AllocateDeviceMatrix(M); CopyToDeviceMatrix(Md, M); Matrix Nd = AllocateDeviceMatrix(N); CopyToDeviceMatrix(Nd, N);

// Allocate P on the device Matrix Pd = AllocateDeviceMatrix(P); CopyToDeviceMatrix(Pd, P); // Clear memory

Page 20: Méthodes de parallélisation d’algorithmes

// Setup the execution configuration dim3 dimBlock(WIDTH, WIDTH); dim3 dimGrid(1, 1);

// Launch the device computation threads! MatrixMulKernel<<<dimGrid, dimBlock>>> (Md, Nd, Pd);

// Read P from the device CopyFromDeviceMatrix(P, Pd);

// Free device matrices FreeDeviceMatrix(Md); FreeDeviceMatrix(Nd); FreeDeviceMatrix(Pd);}

// Setup the execution configuration dim3 dimBlock(WIDTH, WIDTH); dim3 dimGrid(1, 1);

// Launch the device computation threads! MatrixMulKernel<<<dimGrid, dimBlock>>> (Md, Nd, Pd);

// Read P from the device CopyFromDeviceMatrix(P, Pd);

// Free device matrices FreeDeviceMatrix(Md); FreeDeviceMatrix(Nd); FreeDeviceMatrix(Pd);}

Page 21: Méthodes de parallélisation d’algorithmes

Serveur web (www.trex.uqam.ca)

Internet

Calculateur32 processeurs

de 3.4 Ghz PHP 4.4.1

GeneBase UQAMOracle 10g

UQAM

Chercheurs en bioinformatique de l’ UQAM

Autres utilisateurs

www.trex.uqam.ca

Page 22: Méthodes de parallélisation d’algorithmes

Reconstruction basée sur les méthodes de distancesNeighbor Joining – Saitou and Nei (1987)ADDTREE – Sattath and Tversky (1977)Unweighted Neighbor Joining – Gascuel (1997)Circuluar order recontruction – Makarenkov and Leclerc (1997)Weighted least-squares method MW- Makarenkov and Leclerc (1999)

Reconstruction basée sur la parcimonie

Reconstruction basée sur le maximum de vraisemblance

033344F

302455E

320455D

344033C

455302B

455320A

FEDCBA

033344F

302455E

320455D

344033C

455302B

455320A

FEDCBAA

F

E

D

C

B

Page 23: Méthodes de parallélisation d’algorithmes

0

0,05

0,1

0,15

0,2

0,25

0,3

0,35

0,4

0,45

0,5

0,55

0,6

0,65

8 16 32 64 128

Nombre d'espèces

Te

mp

s d

'ex

éc

uti

on

(s

ec

on

de

s)

1 Lame

2 Lames

4 Lames

8 Lames

16 Lames

O(n3)O(n3)

Page 24: Méthodes de parallélisation d’algorithmes

O(n5)O(n5)

0

0,2

0,4

0,6

0,8

1

1,2

1,4

1,6

1,8

2

8 16 32 64

Nombre d'espèces

Te

mp

s e

n s

ec

on

de

s

1 Blade

2 Blades

4 Blades

8 Blades

16 Blades

Page 25: Méthodes de parallélisation d’algorithmes

MPI un standard ???ClustalW-MPI, MPI-Blast, …

Automatisation du processus de parallélisationProjet de doctorat…

AMD-ATIAMD FireStream 9170 (Stream Processor)

Page 26: Méthodes de parallélisation d’algorithmes