1. Memory access classification for vertical task parallelism
- Author
-
Gustedt, Jens, Mogé, Maxime, Compilation pour les Architectures MUlti-coeurS (CAMUS), Inria Nancy - Grand Est, Institut National de Recherche en Informatique et en Automatique (Inria)-Institut National de Recherche en Informatique et en Automatique (Inria)-Laboratoire des sciences de l'ingénieur, de l'informatique et de l'imagerie (ICube), École Nationale du Génie de l'Eau et de l'Environnement de Strasbourg (ENGEES)-Université de Strasbourg (UNISTRA)-Institut National des Sciences Appliquées - Strasbourg (INSA Strasbourg), Institut National des Sciences Appliquées (INSA)-Institut National des Sciences Appliquées (INSA)-Institut National de Recherche en Informatique et en Automatique (Inria)-Les Hôpitaux Universitaires de Strasbourg (HUS)-Centre National de la Recherche Scientifique (CNRS)-Matériaux et Nanosciences Grand-Est (MNGE), Université de Strasbourg (UNISTRA)-Université de Haute-Alsace (UHA) Mulhouse - Colmar (Université de Haute-Alsace (UHA))-Institut National de la Santé et de la Recherche Médicale (INSERM)-Institut de Chimie du CNRS (INC)-Centre National de la Recherche Scientifique (CNRS)-Université de Strasbourg (UNISTRA)-Université de Haute-Alsace (UHA) Mulhouse - Colmar (Université de Haute-Alsace (UHA))-Institut National de la Santé et de la Recherche Médicale (INSERM)-Institut de Chimie du CNRS (INC)-Centre National de la Recherche Scientifique (CNRS)-Réseau nanophotonique et optique, Université de Strasbourg (UNISTRA)-Université de Haute-Alsace (UHA) Mulhouse - Colmar (Université de Haute-Alsace (UHA))-Centre National de la Recherche Scientifique (CNRS)-Université de Strasbourg (UNISTRA)-Centre National de la Recherche Scientifique (CNRS)-École Nationale du Génie de l'Eau et de l'Environnement de Strasbourg (ENGEES)-Université de Strasbourg (UNISTRA)-Institut National des Sciences Appliquées - Strasbourg (INSA Strasbourg), Institut National des Sciences Appliquées (INSA)-Institut National des Sciences Appliquées (INSA)-Les Hôpitaux Universitaires de Strasbourg (HUS)-Centre National de la Recherche Scientifique (CNRS)-Matériaux et Nanosciences Grand-Est (MNGE), Université de Strasbourg (UNISTRA)-Université de Haute-Alsace (UHA) Mulhouse - Colmar (Université de Haute-Alsace (UHA))-Centre National de la Recherche Scientifique (CNRS)-Université de Strasbourg (UNISTRA)-Centre National de la Recherche Scientifique (CNRS), ADT ASNAP, Compilation pour les Architectures MUlti-coeurS ( CAMUS ), Institut National de Recherche en Informatique et en Automatique ( Inria ) -Institut National de Recherche en Informatique et en Automatique ( Inria ) -Laboratoire des sciences de l'ingénieur, de l'informatique et de l'imagerie ( ICube ), Institut National des Sciences Appliquées - Strasbourg ( INSA Strasbourg ), Institut National des Sciences Appliquées ( INSA ) -Institut National des Sciences Appliquées ( INSA ) -Université de Strasbourg ( UNISTRA ) -Centre National de la Recherche Scientifique ( CNRS ) -École Nationale du Génie de l'Eau et de l'Environnement de Strasbourg ( ENGEES ) -Réseau nanophotonique et optique, Université de Strasbourg ( UNISTRA ) -Université de Haute-Alsace (UHA) Mulhouse - Colmar ( Université de Haute-Alsace (UHA) ) -Centre National de la Recherche Scientifique ( CNRS ) -Université de Strasbourg ( UNISTRA ) -Université de Haute-Alsace (UHA) Mulhouse - Colmar ( Université de Haute-Alsace (UHA) ) -Centre National de la Recherche Scientifique ( CNRS ) -Matériaux et nanosciences d'Alsace, Université de Strasbourg ( UNISTRA ) -Université de Haute-Alsace (UHA) Mulhouse - Colmar ( Université de Haute-Alsace (UHA) ) -Institut National de la Santé et de la Recherche Médicale ( INSERM ) -Centre National de la Recherche Scientifique ( CNRS ) -Université de Strasbourg ( UNISTRA ) -Institut National de la Santé et de la Recherche Médicale ( INSERM ) -Institut National des Sciences Appliquées - Strasbourg ( INSA Strasbourg ), Université de Strasbourg ( UNISTRA ) -Université de Haute-Alsace (UHA) Mulhouse - Colmar ( Université de Haute-Alsace (UHA) ) -Institut National de la Santé et de la Recherche Médicale ( INSERM ) -Centre National de la Recherche Scientifique ( CNRS ) -Université de Strasbourg ( UNISTRA ) -Institut National de la Santé et de la Recherche Médicale ( INSERM ), Institut National des Sciences Appliquées (INSA)-Institut National des Sciences Appliquées (INSA)-Centre National de la Recherche Scientifique (CNRS)-Matériaux et nanosciences d'Alsace (FMNGE), Institut de Chimie du CNRS (INC)-Université de Strasbourg (UNISTRA)-Université de Haute-Alsace (UHA) Mulhouse - Colmar (Université de Haute-Alsace (UHA))-Institut National de la Santé et de la Recherche Médicale (INSERM)-Centre National de la Recherche Scientifique (CNRS)-Institut de Chimie du CNRS (INC)-Université de Strasbourg (UNISTRA)-Université de Haute-Alsace (UHA) Mulhouse - Colmar (Université de Haute-Alsace (UHA))-Institut National de la Santé et de la Recherche Médicale (INSERM)-Centre National de la Recherche Scientifique (CNRS)-Réseau nanophotonique et optique, Centre National de la Recherche Scientifique (CNRS)-Université de Strasbourg (UNISTRA)-Université de Haute-Alsace (UHA) Mulhouse - Colmar (Université de Haute-Alsace (UHA))-Centre National de la Recherche Scientifique (CNRS)-Université de Strasbourg (UNISTRA)-École Nationale du Génie de l'Eau et de l'Environnement de Strasbourg (ENGEES)-Université de Strasbourg (UNISTRA)-Institut National des Sciences Appliquées - Strasbourg (INSA Strasbourg), and Centre National de la Recherche Scientifique (CNRS)-Université de Strasbourg (UNISTRA)-Université de Haute-Alsace (UHA) Mulhouse - Colmar (Université de Haute-Alsace (UHA))-Centre National de la Recherche Scientifique (CNRS)-Université de Strasbourg (UNISTRA)
- Subjects
parallélisation automatique ,[ INFO.INFO-DC ] Computer Science [cs]/Distributed, Parallel, and Cluster Computing [cs.DC] ,iterative algorithms ,parallel control flow ,memory access classification ,[INFO.INFO-DS]Computer Science [cs]/Data Structures and Algorithms [cs.DS] ,algorithmes itératifs ,automatic parallelization ,[INFO.INFO-DC]Computer Science [cs]/Distributed, Parallel, and Cluster Computing [cs.DC] ,[ INFO.INFO-DS ] Computer Science [cs]/Data Structures and Algorithms [cs.DS] ,flot de contrôle parallèle - Abstract
We present a paradigm and implementation of a parallel control flow model for algorithmic patterns of two nested loops; an outer iteration loop and an inner data traversal loop. It is centered around memory access patterns. Other than dataflow programming it emphasizes on upholding the sequential modification order of each data object. As a consequence the visible side effects on any object can be guaranteed to be identical to a sequential execution. Thus the set of optimizations that are performed are compatible with C’s abstract state machine and compilers could perform them, in principle, automatically and unobserved. We present two separate implementations of this model. The first in C++ uses overloading of the operator[] to instrument the memory accesses. The second in Modular C uses annotations and code transformations for the two nested loops. Thereby the code inside the loops may stay as close as possible to the original code such that optimization of that code is not impacted unnecessarily. These implementations show promising results for appropriate benchmarks from polybench and rodinia.; Nous présentons un paradigme et une implémentation d’un modèle deflot de contrôle parallèle pour des motifs algorithmiques de deux nids de bouclesimbriqués; une boucle externe d’itération et une boucle interne de parcours dedonnées. Ce paradigme est basé sur les motifs d’accès mémoire. Contrairementà la programmation par flot de données, il assure l’ordre séquentiel des modificationsde chaque objet. Par conséquent, les effets de bords visibles sur tousles objets sont garantis identiques à une exécution séquentielle. Ainsi l’ensemble des optimisations effectuées sont compatibles avec la machine abstraite d’état de C, et les compilateurs peuvent les effectuer, en principe, de façon automatique et non-observée. Nous présentons deux implémentations distinctes de ce modèle. La premiere, effectuée en C++, utilise la surcharge de l’opérateur [] pour instrumenter les accès mémoire. La seconde, effectuée en Modular C, utilise des annotations et transformations de code pour les deux boucles imbriquées. Ainsi le code à l’intérieur des boucles peut rester aussi proche que possible de l’original pour ne pas impacter inutilement son optimisation. Ces implémentations montrent des résultats prometteurs pour des codes de référence tirés de polybench et rodinia.
- Published
- 2018