Porting sonar processing chains to heterogeneous architecture : design and evaluation of a moldable task-based programming environment
Portage des chaînes de traitement sonar sur architecture hétérogène : conception et évaluation d'un environnement de programmation basé sur les tâches moldables
Résumé
The increasing computational demands in SONAR processing chains lead to the choice of heterogeneous architectures based on GPGPU. The complexity of these architectures makes algorithm implementation challenging for individuals who are not specialists in both the application domain and parallel programming. This thesis aims to address this issue by leveraging task-based programming concepts. Static code analysis methods allowed us to group function calls on a GPU to limit certain overheads by increasing task granularity.To extend this approach to enable the utilization of multiple GPUs while controlling memory usage, we explored a moldable task model. This was instantiated into a new OpenMP directive that unifies several older parallelization directives. In this model, moldable tasks or sub-tasks retain the ability to have dependencies. The design of a prototype executive support for managing these moldable tasks focused on load balancing on a heterogeneous architecture and defining an algorithm to detect dependencies between such tasks. Experiments on a SONAR processing beamforming algorithm and the Cholesky factorization algorithm highlighted the method's benefits and some weaknesses in the implementation choices.
L'augmentation des besoins en calcul dans les chaînes de traitement SONAR incite au choix d'architectures hétérogènes à base de GPGPU. La complexité de ces architectures rend l'implémentation d'algorithmes difficile pour des personnes qui ne sont pas à la fois spécialistes du domaine d'application et de la programmation parallèle. Cette thèse propose de répondre à cette problématique en exploitant des notions de programmation par tâches. Des méthodes d'analyse statique du code nous ont permis de regrouper les appels de fonction sur un GPU afin de limiter certains surcoûts en augmentant la granularité des tâches. Afin d'étendre cette approche pour permettre l'exploitation de plusieurs GPU tout en contrôlant l'utilisation mémoire, nous avons étudié un modèle à base de tâches moldable. Celui-ci a été décliné en une nouvelle directive OpenMP qui permet d'unifier plusieurs directives de parallélisation plus anciennes. Dans ce modèle les tâches moldables ou les sous-tâches conservent la capacité d'avoir des dépendances. La conception d'un prototype de support exécutif pour la gestion de ces tâches moldables s'est attachée à gérer l'équilibrage de charge sur une architecture hétérogène ainsi qu'à définir un algorithme pour détecter les dépendances entre de telles tâches. Des expérimentations sur un algorithme de formation de voies issu des chaînes de traitement SONAR et sur l'algorithme de factorisation de Cholesky ont mis en avant l'intérêt de la méthode et certaines faiblesses des choix d'implémentation.
Origine | Version validée par le jury (STAR) |
---|