BubbleSched, plate-forme de conception d'ordonnanceurs de threads sur machines hiérarchiques
L'efficacité de l'exécution d'une application multithreadée irrégulière sur une architecture multiprocesseur hiérarchique repose essentiellement sur la qualité de l'ordonnancement des threads et du placement des données. Pour obtenir d'excellentes performances, les programmeurs sacrifient souvent la portabilité de leur application en câblant dans celle-ci des stratégies de placement ad hoc dépendant fortement de l'architecture. Pour garantir la portabilité des performances, nous avons défini des abstractions appelées « bulles » capturant la nature structurée du parallélisme du calcul d'une part, et modélisant l'architecture de la machine cible, d'autre part. Un ensemble de primitives de haut niveau permet alors de définir simplement des ordonnanceurs dédiés, efficaces et portables. Nous justifions l'intérêt de cette approche et décrivons les techniques mises au point pour définir simplement de tels ordonnanceurs.
Exploiting full computational power of hierarchical multiprocessor machines with irregular multithreaded applications requires a very careful distribution of threads and data. To achieve most of the available performance, programmers often have to forget about portability and wire down ad hoc placement strategies that highly depend on the architecture. To guarantee the portability of performance, we have defined abstractions called "bubbles" for capturing both the hierarchical structure of the application's parallelism, and the hierarchical architecture of the targeted machine. We have defined a set of high level primitives to ease the implementation of dedicated, efficient and portable schedulers. We show the relevance of our approach and describe the mechanisms we developped for easily implementing such schedulers.
S.THIBAULT, R.NAMYST, P.WACRENIER
Reçu le 23 janvier 2007.
Accepté le 25 octobre 2007.
threads, ordonnancement, bulles, NUMA, SMP, multicore.
threads, scheduling, bubbles, NUMA, SMP, multicore.
Français
|