Méthodes de parallélisation d’algorithmes

Post on 03-Jan-2016

44 views 3 download

description

Méthodes de parallélisation d’algorithmes. ALPHA BOUBACAR DIALLO. Étudiant au Doctorat en Informatique diallo.alphaboubacar@gmail.com. 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

ALPHA BOUBACAR DIALLO

Étudiant au Doctorat en Informatique

diallo.alphaboubacar@gmail.com

Problématique et quelques définitions

Architectures parallèles

Environnements parallèles

Programmes parallélisés

Futures avenues

Taille des problèmes à résoudre

Accélération de la résolution

Prix…

CPU ( Central Process Unit)Unité centrale de calcul

GPU ( Graphic Process Unit)Unité graphique de calcul

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)

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

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

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

SISD

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

SIMD

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

MISD

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

MIMD

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

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

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.

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

1 Milliard

d’opérations

à virgule

flottante par

seconde

CPU(host)

GPU

// 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

// 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);}

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

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

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)

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

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

Automatisation du processus de parallélisationProjet de doctorat…

AMD-ATIAMD FireStream 9170 (Stream Processor)