300 likes | 465 Views
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. La CNFT: définition succincte. Algorithme qui permet de déterminer le meilleur neurone dans l’algorithme de Kohonen (phase de compétition)…
E N D
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
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
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
L’algorithme CNFT Version séquentielle de référence
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
L’algorithme CNFT • Erreur = |Sortie(influence ) - Sortie(influence n)| • Taux d’erreurs en fonction du rayon d’influence : minimal à partir de 35 : nmin= 35
L’algorithme CNFT • Performances (image 300x300, voisinage 50, 10 itérations) • Algorithme « naïf » : 2m27s • Avec optimisations sérielles : 44s+70,1%(Loop Unrolling, etc…)
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
L’algorithme CNFT • Performances en fonction de la taille du voisinage pris en compte… cache resonance! P-III Xeon 700MHzL2=1Mo, L1=16Ko
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
CNFT Parallèle Version Parallèle SPMD
P0 P1 P2 P3 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
CNFT Parallèle Multiprocesseur • Performances en fonction de la taille de voisinage, sur QuadX1: PC 4-Xeon 700MHz, L2=1Mo, L1=16Ko, RAM=1Go
CNFT Parallèle Multiprocesseur • Accélération réelle sur QuadX1 • MAIS Fonction de la taille de voisinage
CNFT Parallèle Multiprocesseur • Performances (image 300x300, voisinage 50, 10 itérations) • Parallèle sur 4 processeurs avec optimisations sérielles : • 12,7s+91,2%(+71% par rapport au séquentiel optimisé)
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
CNFT Parallèle Bloquée Nouvelle optimisation sérielle :blocage des données en cache
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
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
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…)
L’algorithme CNFT Version Cluster MPI
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
CNFT Parallèle Cluster Comparaison de deux configurations à 4 threads : • Évaluation des pertes dues à MPI Pertes indépendantes de la taille de l’image
CNFT Parallèle Cluster Comparaison de deux configurations à 4 et 8 threads : • Performances en fonction de la taille de voisinage (Volume de communications constant)
CNFT Parallèle Cluster • Accélération en fonction de la taille du voisinage : globalement bénéfique 2 machines 1 machine
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).
CNFT Cluster • Test sur un cluster plus étendu : 6 machines/14 processeurs : 6,2 Gflops en pointe.
Courbe de performances sur Cluster • Speed up en fonction du nombre de processeurs : proche de l’optimum
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 :
Parallélisation d’un Algorithme CNFT Questions ?