Content area
Abstract
Les systèmes hétérogènes sont de plus en plus présents dans tous les ordinateurs. En effet, de nombreuses tâches nécessitent l’utilisation de coprocesseurs spécialisés. Ces coprocesseurs ont permis des gains de performance très importants qui ont mené à des découvertes scientifiques, notamment l’apprentissage profond qui n’est réapparu qu’avec l’arrivée de la programmation multiusage des processeurs graphiques. Ces coprocesseurs sont de plus en plus complexes. La collaboration et la cohabitation dans un même système de ces puces mènent à des comportements qui ne peuvent pas être prédits avec l’utilisation d’analyse statique. De plus, l’utilisation de systèmes parallèles qui possèdent des milliers de fils d’exécution, et de modèles de programmation spécialisés, rend la compréhension de tels systèmes très difficile. Ces problèmes de compréhension rendent non seulement la programmation plus lente, plus couteuse, mais empêchent aussi le diagnostic de problèmes de performance. C’est pourquoi il est nécessaire d’avoir recours à des outils d’analyse dynamique qui permettent d’analyser l’état d’un système au cours du temps. Ces outils permettent d’étudier en détail le comportement d’un système après l’exécution de celui-ci. Idéalement, ces outils ont un impact minimal pour s’assurer de la précision des résultats obtenus. Il est aussi nécessaire que les résultats obtenus permettent d’avoir suffisamment d’information pour décrire complètement le système, sinon l’analyse est fortement biaisée. Il est cependant de plus en plus difficile d’obtenir ces outils, car dans les systèmes hétérogènes de nombreux processeurs fonctionnent ensemble, tout en ayant des architectures, des gestionnaires de périphérique et des modèles de programmation différents. Cette diversité doit être prise en compte dans l’élaboration d’un outil de traçage. L’avènement de l’architecture HSA permet le fonctionnement dans un cadre commun, basé sur un modèle d’exécution générique, de ces différents coprocesseurs.