Programmation unifiée multi-accélérateur OpenCL
Résumé
Le standard OpenCL propose une interface de programmation basée sur un parallé- lisme de tâches et supportée par différents types d'unités de calcul (GPU, CPU, Cell. . . ). L'une des caractéristiques d'OpenCL est que le placement des tâches sur les différentes unités de cal- cul doit être fait manuellement. Pour une machine hybride disposant par exemple de multicœur et d'accélérateur(s), l'équilibrage de charge entre les différentes unités est très difficile à obte- nir à cause de cette contrainte. C'est particulièrement le cas des applications dont le grain et le nombre des tâches varient au cours de l'exécution. Il en découle par ailleurs que le passage à l'échelle d'une application OpenCL est limitée dans le contexte d'une machine hybride. Nous proposons dans cet article de remédier à cette limitation en créant une unité virtuelle et paral- lèle de calcul, regroupant les différentes unités de la machine. Le placement manuel d'OpenCL cible cette unité virtuelle, et la responsabilité du placement sur les unités réelles est laissée à un support exécutif. Ce support exécutif se charge d'effectuer les transferts de données et les placements des tâches sur les unités réelles. Nous montrons que cette solution permet de simpli- fier grandement la programmation d'applications pour architectures hybrides et cela de façon efficace.
Origine | Fichiers produits par l'(les) auteur(s) |
---|
Loading...