Comparaison entre parallélisation OpenMP et threads sur des applications régulières et irrégulières 1/20 Eugen Dedu dedu@ese-metz.fr Supélec, campus de Metz 27 janvier 2000
Contexte 2/20
Caractéristiques majeures d OpenMP simplicité : parallélisation d une boucle 3/20 // Classic threads version // size: the number of values assigned to every thread size = last_index / nb_threads; first = MY_TID * size; last = (MY_TID == nb_threads-1)? first + size : last_index; for (i=first ; i<last ; i++) array[i] =...; // OpenMP version // automatic loop decomposition #pragma omp parallel for for (i=0 ; i<last_index ; i++) array[i] =...;
Écriture de code parallèle OpenMP parallélisation incrémentale code source séquentiel 4/20 débogage en séquentiel parallélisation (par directives) débogage en parallèle fin
Caractéristiques majeures d OpenMP simple à apprendre et à utiliser (plus haut niveau que les threads) parallélisation incrémentale calcul automatique du nombre de threads codes source séquentiel et parallèle identiques portable performant variables privées réduction (basée sur des arbres) régions critiques 5/20
Avantage des threads niveau plus bas qu OpenMP Pthreads OpenMP 3 types de mutexes 1 type sémaphores richesse d expression élevée moyenne travail par groupes de threads : facile faisable parfois Thread 1 Thread 2 Thread 3 Barrière barrières, exclusions mutuelles limitées à des groupes de threads OpenMP plus approprié pour le parallélisme de données que de tâches 6/20
Carte Kohonen input data vector x in w in,out neuron map 7/20 d out = in (w in,out x in ) 2 w in,out = w in,out + η(x in w in,out )
Performances implantation Kohonen (texec) 8/20 50 45 C-threads Fortran-OpenMP execution time (sec) 40 35 30 25 20 15 10 5 0 1 2 4 6 8 10 12 14 16 number of processors
Performances implantation Kohonen (speed up) 9/20 3.5 3 C-threads Fortran-OpenMP 2.5 speed up 2 1.5 1 0.5 0 1 2 4 6 8 10 12 14 16 number of processors
Performances implantation Kohonen (efficacité) 10/20 1 C-threads Fortran-OpenMP 0.8 efficiency 0.6 0.4 0.2 0 1 2 4 6 8 10 12 14 16 number of processors
Système multi-agent situé Agent : environnement, perceptions, actions, but. 11/20 U Agent M M M U Mine Usine Obstacle
Système multi-agent situé 12/20 Difficile à paralléliser, car : migration des agents paramètres qui changent coopération propagation des champs algorithme irrégulier influences sur le load-balancing, la gestion des caches etc.
Algorithme de propagation par vagues 13/20 Example of increasing potential way, avoiding obstacles Source Obstacle
Performances implantation SMAS (texec) 14/20 250 C-threads execution time (sec) 200 150 100 50 0 1 2 4 6 8 10 12 14 16 18 20 number of processors
Performances implantation SMAS (speed up) 15/20 3 C-threads 2.5 speed up 2 1.5 1 0.5 0 1 2 4 6 8 10 12 14 16 18 20 number of processors
Performances implantation SMAS (efficacité) 16/20 1 C-threads 0.8 efficiency 0.6 0.4 0.2 0 1 2 4 6 8 10 12 14 16 18 20 number of processors
Comparaison (subjective) OpenMP/threads, application régulière/irrégulière 17/20 Algorithme régulier: Carte Kohonen Implantation C-threads Fortran- OpenMP Algorithme irrrégulier: SMAS C-threads C-OpenMP Maximum speed-up 3 3.5 2.7 Nombre de threads optimal 5 7 8 16 18 Complexité parallélisation moyenne facile grande Temps de développement 2 semaines 1 semaine 5 semaines > 5 sem. Lignes de code source 450 400 950 850
Conclusions 18/20 une application régulière et une autre irrégulière implantées en OpenMP et threads temps d exécution comparables pour applications régulières temps de développement plus petits en OpenMP pour applications régulières niveau plus haut d OpenMP difficultés en programmation, voire utilisation de fonctions non-openmp
Notre avis 19/20 Type d application Approprié Raison régulière OpenMP rapide en développement et exécution irrégulière threads meilleur contrôle (ou OpenMP?) (richesse d expression)
Bibliographie Leonardo Dagum and Ramesh Menon. OpenMP: An Industry- Standard API for Shared-Memory Programming. IEEE Computational Science & Engineering, janvier mars 1998. Jeff Fier (documentation SGI). Performance Tuning Optimization for Origin2000 and Onyx. http://techpubs.sgi.com/ library/manuals/3000/007-3511-001/html/o2000tuning. 0.html Spécifications, informations... : http://www.openmp.org 20/20