Les systèmes hétérogènes (combinant plusieurs types d'unités de calcul) sont maintenant très répandus.
Soigneusement utilisés, ils permettent une augmentation de performances impressionnante.
Cependant, ils exigent généralement que les développeurs combinent plusieurs modèles de programmation, à travers des langages et des outils très complexes.
Les programmes hétérogènes sont ainsi difficiles à concevoir et à déboguer.
L'écriture de programmes hétérogènes corrects est difficile. Obtenir de bonnes performances l'est encore plus.
Pour aider les développeurs, de nombreuses solutions de haut niveau ont été développées.
La plupart d'entre elles génèrent une partie du code qui sera effectivement exécuté et isolent le programmeur des détails de bas niveau.
Elles aident à créer des programmes efficaces et plus sûrs, mais laissent les programmeurs confus face à des bogues complexes ou lorsqu'ils tentent d'optimiser leur application.
Dans cette présentation, je décrirai notre solution pour le profilage d'applications hétérogènes portables décrites avec SPOC (Stream Processing with OCaml).
Pour cela, je présenterai d'abord rapidement SPOC : une bibliothèque portable pour le langage OCaml associée à un DSL permettant de générer du code
GPGPU à l'exécution. Je détaillerai ensuite notre
solution de profilage qui se concentre sur deux
points principaux :
- rester portable et offrir des informations pertinentes, quelle que soit la combinaison d'architectures présentes dans le système hétérogène
- offrir au programmeur des informations utiles facilement repliables au code écrit à l'origine et non au code généré par SPOC.