Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
1
Parallélisation d’un Algorithme CNFT
SIDP-SID Supélec Parallélisation d’un Algorithme CNFT Olivier Gilloire, Issa Kebe (2A) Stéphane Vialle, Hervé Frezza-Buet Février-Juin 2002
2
La CNFT: définition succincte
Algorithme qui permet de déterminer le meilleur neurone dans l’algorithme de Kohonen (phase de compétition)… Algorithme de calcul numérique intensif en virgule flottante, régulier. Exemple : extraction de contours démo
3
La CNFT: objectifs du projet
Concevoir une algorithmique parallèle et séquentielle optimisée pour la CNFT Développement parallèle optimisé en environnement de bas niveau (C, MPI, Pthreads) Développement parallèle en environnement de haut niveau (bibliothèque ParCeL-6/NRV) Expérimentation sur Cluster de PC multiprocesseurs : Séq +Parallèle ShM +Blocage en cache +Parallèle Cluster
4
Version séquentielle de référence
L’algorithme CNFT Version séquentielle de référence
5
L’algorithme CNFT Données de type double (utilisation du FPU)
Balayage d’une image d’entrée de taille m x m Influence du voisinage dans un rayon n avec un poids précalculé « chapeau mexicain » Environ M.N calculs, M=m² et N=n² Démonstration
6
L’algorithme CNFT Erreur = |Sortie(influence ) - Sortie(influence n)|
Taux d’erreurs en fonction du rayon d’influence : minimal à partir de 35 : nmin = 35
7
L’algorithme CNFT Performances (image 300x300, voisinage 50, 10 itérations) Algorithme « naïf » : 2m27s Avec optimisations sérielles : s ,1% (Loop Unrolling, etc…)
8
L’algorithme CNFT Performances en séquentiel, en fonction de la taille du fichier d’entrée… cache resonance! Athlon 1GHz, L2=256Ko, L1=64Ko
9
L’algorithme CNFT P-III Xeon 700MHz L2=1Mo, L1=16Ko
Performances en fonction de la taille du voisinage pris en compte… cache resonance! P-III Xeon 700MHz L2=1Mo, L1=16Ko
10
L’algorithme CNFT Performances indépendantes de la taille du fichier
Performances dépendantes de la taille du voisinage (vs. taille cache). Bilan de l’algorithme séquentiel : Optimisation de l’utilisation des caches Parallélisation : décomposition en domaines
11
Version Parallèle SPMD
CNFT Parallèle Version Parallèle SPMD
12
CNFT Parallèle Multiprocesseur
PC à mémoire partagée - Pthreads Découpage de l’image en tranches horizontales SPMD-Barrière de synchronisation Pas de problèmes de False Sharing (perte du cache) Pas d’exclusions mutuelles nécessaires Démonstration du balayage P0 P1 P2 P3
13
CNFT Parallèle Multiprocesseur
Performances en fonction de la taille de voisinage, sur QuadX1: PC 4-Xeon 700MHz, L2=1Mo, L1=16Ko, RAM=1Go
14
CNFT Parallèle Multiprocesseur
Accélération réelle sur QuadX1 MAIS Fonction de la taille de voisinage
15
CNFT Parallèle Multiprocesseur
Performances (image 300x300, voisinage 50, 10 itérations) Parallèle sur 4 processeurs avec optimisations sérielles : 12,7s ,2% (+71% par rapport au séquentiel optimisé)
16
CNFT Parallèle Multiprocesseur
Bilan parallélisation en mémoire partagée : Gain de performances x4 dans le cache Les performances s’écroulent en dehors du cache : En Mflops : normal En Speed up : anormal (S < 1,2 pour 4 processeurs) Phénomène classique sur PC multiprocesseur. Nécessité de blocage des données à la taille du cache
17
CNFT Parallèle Bloquée
Nouvelle optimisation sérielle : blocage des données en cache
18
CNFT Parallèle Bloquée
Dans chaque thread : Limite du calcul à un sous-ensemble du voisinage Nécessité de plusieurs passes (sommes partielles) Démonstration
19
CNFT Parallèle Bloquée
Performances sur QuadX1, 4 PIII-Xeon utilisés (700 MHz, L2=1Mo, L1=16Ko) Chute réduite/annulée hors du cache
20
CNFT Parallèle Bloquée
Bilan du blocage Ce type de problèmes se prête bien au blocage Blocage efficace mais imparfait, impossible de contrôler précisément le niveau de performances Performances aussi grandes sur des processeurs simples (Athlon, Pentium…) que sur des Pentium III Xeon (2Mo cache, quadri-processeurs…)
21
L’algorithme CNFT Version Cluster MPI
22
CNFT Parallèle Cluster
Même distribution de données qu’en parallèle local Conservation du multithread sur nœud multiprocesseur Utilisation de MPI : envoi de messages Utilisation d’un maître pour la gestion des données (le numéro 0). Ethernet 100Mbits
23
CNFT Parallèle Cluster
Évaluation des pertes dues à MPI Comparaison de deux configurations à 4 threads : Pertes indépendantes de la taille de l’image
24
CNFT Parallèle Cluster
Performances en fonction de la taille de voisinage (Volume de communications constant) Comparaison de deux configurations à 4 et 8 threads :
25
CNFT Parallèle Cluster
Accélération en fonction de la taille du voisinage : globalement bénéfique 2 machines 1 machine
26
CNFT Parallèle Cluster
Inefficace pour des voisinages trop petits. Mais dans un cas réel (n 35 50Ko), gain de performances notable. Supérieur au multiprocesseur en terme de €/Mflops dans la zone de rendement optimal (données 100Ko).
27
CNFT Cluster Test sur un cluster plus étendu :
6 machines/14 processeurs : 6,2 Gflops en pointe.
28
Courbe de performances sur Cluster
Speed up en fonction du nombre de processeurs : proche de l’optimum
29
Conclusion L’élément d’importance majeure dans ces algorithmes est le cache. Nécessité de « cache-driven parallelization ». Bon résultat général sur un calcul flottant intensif : Version séquentielle naïve : 120Mflops puis :
30
Parallélisation d’un Algorithme CNFT
Questions ?
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.