Méthodes de parallélisation d’algorithmes
-
Upload
rhiannon-navarro -
Category
Documents
-
view
44 -
download
3
description
Transcript of 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
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)