ACCUEIL

Consignes aux
auteurs et coordonnateurs
Nos règles d'éthique
Auteurs : soumettez
votre article en ligne
Autres revues >>

Technique et Science Informatiques

0752-4072
Revue des sciences et technologies de l'information
 

 ARTICLE VOL 31/8-10 - 2012  - pp.1233-1249  - doi:10.3166/tsi.31.1233-1249
TITRE
Programmation unifiée multi-accélérateur avec OpenCL

TITLE
A unified OpenCL-based multi-accelerator framework

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 calcul doit être fait manuellement. Pour une machine hybride disposant par exemple de multicoeurs et d’accélérateur(s), l’équilibrage de charge entre les différentes unités est très difficile à obtenir à 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 parallè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 simplifier grandement la programmation d’applications pour architectures hybrides et cela de façon efficace.



ABSTRACT

The OpenCL standard defines a unified programming interface based on a task model that can target different kinds of compute units (GPU, CPU, Cell. . . ). OpenCL gives application programmers the full control of task scheduling on the different devices that are available. Consequently, programmers are most likely to rely on a static task scheduling scheme. However this may not be efficient on heterogeneous architectures such as those containing accelerators in addition to the CPU. Load-balancing is really hard to achieve, especially if data have different granularities and if the number of tasks can’t be statically known. OpenCL programs are thus hardly scalable on hybrid systems. In this paper, we propose to solve this issue by grouping every OpenCL unit into a single virtual one. By doing that, applications only have to submit tasks to this virtual unit and let the runtime system manage data transfers and task scheduling on real units. We show that this approach really eases the burden typically associated with application programming on hybrid systems and that it is done in a efficient manner.



AUTEUR(S)
Sylvain HENRY, Alexandre DENIS, Denis BARTHOU

MOTS-CLÉS
OpenCL, GPU, support exécutif, répartition de charge, portabilité.

KEYWORDS
OpenCL, GPU, runtime systems, load-balancing, scalability.

LANGUE DE L'ARTICLE
Français

 PRIX
• Abonné (hors accès direct) : 12.5 €
• Non abonné : 25.0 €
|
|
--> Tous les articles sont dans un format PDF protégé par tatouage 
   
ACCÉDER A L'ARTICLE COMPLET  (236 Ko)



Mot de passe oublié ?

ABONNEZ-VOUS !

CONTACTS
Comité de
rédaction
Conditions
générales de vente

 English version >> 
Lavoisier