Présentation

Article

1 - VERSIONS DU LANGAGE, MATÉRIELS ET SES CARACTÉRISTIQUES

2 - PROGRAMMATION OPENCL

3 - ORGANISATION TYPIQUE D'UNE APPLICATION OPENCL

4 - COMPLÉMENTS

5 - CONCLUSION

Article de référence | Réf : H3160 v1

Organisation typique d'une application OpenCL
Programmation des systèmes parallèles hétérogènes

Auteur(s) : Frédéric LEMOINE

Relu et validé le 02 mai 2016

Pour explorer cet article
Télécharger l'extrait gratuit

Vous êtes déjà abonné ?Connectez-vous !

Sommaire

Présentation

Version en anglais En anglais

RÉSUMÉ

La technologie OpenCL a été créée dans le but de programmer des systèmes parallèles hétérogènes et de bénéficier de toute leur puissance de calcul afin d'accélérer le traitement complexe de données. Ce langage de programmation est utilisé pour simuler numériquement des phénomènes physiques complexes, dans un nombre croissant de secteurs d'activités : médecine, bio-informatique, météorologie. Cet article dresse un état des lieux de cette technologie, le matériel compatible, la méthodologie de programmation ainsi qu'un exemple pratique.

Lire cet article issu d'une ressource documentaire complète, actualisée et validée par des comités scientifiques.

Lire l’article

ABSTRACT

OpenCL : Open Computing Language

The OpenCL technology was created in order to program heterogeneous parallel systems and benefit from the whole of their calculating power to accelerate complex data processing. This programming language is used to numerically simulate complex physical phenomena in a growing number of sectors: medicine, bioinformatics and meteorology. This article presents this technology, the compatible hardware, programming methodology and a practical example.

Auteur(s)

  • Frédéric LEMOINE : Ingénieur de recherche au Conservatoire national des arts et métiers (CNAM) - Chef de projet en développement d'applications – Département informatique

INTRODUCTION

Un ordinateur moderne comporte aujourd'hui un grand nombre de processeurs différents : un ou plusieurs processeurs généralistes et un ou plusieurs processeurs spécialisés (graphique, traitement de signaux...). Cette hétérogénéité rend la programmation de cette machine de plus en plus complexe. De plus, certains processeurs ne sont pas utilisés au maximum de leur capacité. Le processeur graphique, par exemple, est sous exploité en usage bureautique et pourrait être utilisé à autre chose que de l'affichage.

Le langage OpenCL (Open Computing Language) a été crée, sur une proposition d'Apple, dans le but de pouvoir programmer des systèmes parallèles hétérogènes. C'est un langage dérivé du C comportant certaines extensions et un ensemble de fonctions spécifiques (API : Interface de Programmation d'Applications).

Il est géré par le « Kronos Group ». Celui-ci se définit comme un consortium industriel à but non lucratif établissant des normes ouvertes pour l'accélération à base de calculs parallèles, pour la création de contenus graphiques et de médias dynamiques sur une grande variété de plates-formes et de périphériques. Tous les membres peuvent participer à l'élaboration des API. Ce consortium gère également un grand nombre d'autres standards comme OpenGL, OpenMax, OpenSL, OpenVG, OpenWF, WebGL...

OpenCL peut être utilisé dans des architectures hétérogènes comportant, par exemple, des unités centrales de traitements (CPU pour Central Processing Unit), des processeurs graphiques (GPU pour Graphics Processing Unit), des processeurs de type Cell (Cell Broadband Engine) ou des processeurs de traitement de signaux (DSP pour Digital Signal Processor).

Les CPU (généralistes) sont devenus multicœurs et leur nombre s'accroît au fil des années (4 cœurs sur un Intel Core i7). Les GPU (spécialisés et multicœurs) deviennent de plus en plus généralistes et sont capables de gérer autre chose que de l'affichage.

OpenCL est un modèle de programmation se plaçant à l'intersection de ces deux domaines. Il unifie et exploite de façon performante le parallélisme de ces architectures hétérogènes. Il peut s'intégrer sur des plates-formes mobiles embarquées (téléphones, tablettes) ou sur des calculateurs de haute performance. Il peut également s'interfacer avec des API graphiques comme OpenGL dans le but, par exemple, d'afficher les résultats en temps réel.

OpenCL étant un standard pour l'industrie, le code de l'application produite est facilement portable du système d'un constructeur vers un autre. Il fait en effet abstraction des spécificités de la couche matérielle.

En résumé, OpenCL permet d'écrire une seule et unique application, portable d'un système à l'autre, utilisant toutes les ressources hétérogènes de la machine hôte.

Cet article est réservé aux abonnés.
Il vous reste 92% à découvrir.

Pour explorer cet article
Téléchargez l'extrait gratuit

Vous êtes déjà abonné ?Connectez-vous !


L'expertise technique et scientifique de référence

La plus importante ressource documentaire technique et scientifique en langue française, avec + de 1 200 auteurs et 100 conseillers scientifiques.
+ de 10 000 articles et 1 000 fiches pratiques opérationnelles, + de 800 articles nouveaux ou mis à jours chaque année.
De la conception au prototypage, jusqu'à l'industrialisation, la référence pour sécuriser le développement de vos projets industriels.

DOI (Digital Object Identifier)

https://doi.org/10.51257/a-v1-h3160


Cet article fait partie de l’offre

Technologies logicielles Architectures des systèmes

(239 articles en ce moment)

Cette offre vous donne accès à :

Une base complète d’articles

Actualisée et enrichie d’articles validés par nos comités scientifiques

Des services

Un ensemble d'outils exclusifs en complément des ressources

Un Parcours Pratique

Opérationnel et didactique, pour garantir l'acquisition des compétences transverses

Doc & Quiz

Des articles interactifs avec des quiz, pour une lecture constructive

ABONNEZ-VOUS

Lecture en cours
Présentation
Version en anglais En anglais

3. Organisation typique d'une application OpenCL

Suivant le problème à traiter, il est nécessaire en premier lieu de définir la dimension du NDRange de manière à dimensionner l'architecture qui sera employée, c'est-à-dire le nombre de work-items et leur répartition en work-groups s'exécutant en parallèles.

Une application OpenCL suit l'organisation suivante (tableau 5 et figure 16).

Rappelons que l'application hôte empile une série de commandes. L'empilement de commandes est ordonné mais leur exécution peut être faite dans l'ordre ou le désordre au choix.

3.1 Partie 1 : découverte de l'environnement matériel

HAUT DE PAGE

3.1.1 Informations sur les platforms

On récupère le nombre de platforms contenant des dispositifs OpenCL (Device) par la fonction suivante.

cl_int clGetPlatformIDs (cl_uint num_entries,

   cl_platform_id *platforms,

   cl_uint *num_platforms)

Le nombre de platforms maximum à trouver est donnée par num_entries. platforms correspond au tableau contenant les identifiants des platforms trouvées. num_platforms au nombre de platforms trouvées.

Les informations sur une platform sont récupérées via la fonction :

cl_int clGetPlatformInfo (cl_platform_id platform,

   cl_platform_info param_name,

   size_t param_value_size,

   void *param_value,

   size_t *param_value_size_ret)

platform est l'identifiant de la platform. param_name correspond à la constante spécifiant le type d'information à demander. param_value est une zone mémoire allouée destinée à recevoir l'information demandée. param_value_size est la taille maximum de cette zone mémoire et param_value_size_ret la taille réelle de l'information retournée.

Le type d'information pouvant être demandé est donné par le tableau 6.

On récupère les identifiants des devices présents dans la platform par la fonction qui suit :

cl_int...

Cet article est réservé aux abonnés.
Il vous reste 92% à découvrir.

Pour explorer cet article
Téléchargez l'extrait gratuit

Vous êtes déjà abonné ?Connectez-vous !


L'expertise technique et scientifique de référence

La plus importante ressource documentaire technique et scientifique en langue française, avec + de 1 200 auteurs et 100 conseillers scientifiques.
+ de 10 000 articles et 1 000 fiches pratiques opérationnelles, + de 800 articles nouveaux ou mis à jours chaque année.
De la conception au prototypage, jusqu'à l'industrialisation, la référence pour sécuriser le développement de vos projets industriels.

Cet article fait partie de l’offre

Technologies logicielles Architectures des systèmes

(239 articles en ce moment)

Cette offre vous donne accès à :

Une base complète d’articles

Actualisée et enrichie d’articles validés par nos comités scientifiques

Des services

Un ensemble d'outils exclusifs en complément des ressources

Un Parcours Pratique

Opérationnel et didactique, pour garantir l'acquisition des compétences transverses

Doc & Quiz

Des articles interactifs avec des quiz, pour une lecture constructive

ABONNEZ-VOUS

Lecture en cours
Organisation typique d'une application OpenCL
Sommaire
Sommaire

BIBLIOGRAPHIE

  • (1) - TSUCHIYAMA (R.), NAKAMURA (T.), IIZUKA (T.), ASAHARA (A.) -   The OpenCL Programming Book.  -  (2010).

  • (2) - MUNSHI (A.), GASTER (B.), MATTSON (T.G.), FUNG (J.) -   OpenCL Programming Guide.  -  ISBN-13: 978-0321749642 (2011).

  • (3) - GASTER (B.R.), KAELI (D.R.), HOWES (L.), MISTRY (P.) -   Heterogeneous Computing With Opencl.  -  ISBN-13: 978-0123877666 (2011).

  • (4) - SCARPINO (M.) -   Opencl in Action : How to Accelerate Graphics and Computations.  -  ISBN-13: 978-1617290176 (2011).

  • (5) - SURHONE (L.M.), TIMPLEDON (M.T.), MARSEKEN (S.F.) -   OpenCL : Heterogeneity, Central Processing Unit, Graphics Processing Unit, Parallel Computing, C99, OpenAL, Khronos Group, SIGGRAPH, Radeon R700, GPGPU.  -  ISBN-13: 978-6130314125 (2010).

  • (6) - KIRK (D.), HWU (W.-M.W.) -   Programming Massively Parallel Processors : A Hands-on Approach.  -  ...

1 Sites Internet

OpenCL pour Nvidia http://www.nvidia.fr/object/cuda_opencl_new_fr.html

Nvidia Corporation Supercomputing with Tesla GPUs http://www.nvidia.com/object/tesla-supercomputing-solutions.html

Advanced Micro Devices, Inc. AMD OpenCL™ Zone https://www.amd.com/fr

Intel Corporation OpenCL SDK https://www.intel.com/content/www/us/en/developer/tools/opencl-sdk/overview.html

Khronos Group http://www.khronos.org/opencl/

WebCL http://www.khronos.org/webcl/

HAUT DE PAGE

2 Événements

GPU Technology Conference. Conférence annuelle sur le calcul par GPU et la visualisation et leur importance dans l'avenir des sciences et de l'innovation http://www.gputechconf.com

HAUT DE PAGE

3 Annuaire

...

Cet article est réservé aux abonnés.
Il vous reste 93% à découvrir.

Pour explorer cet article
Téléchargez l'extrait gratuit

Vous êtes déjà abonné ?Connectez-vous !


L'expertise technique et scientifique de référence

La plus importante ressource documentaire technique et scientifique en langue française, avec + de 1 200 auteurs et 100 conseillers scientifiques.
+ de 10 000 articles et 1 000 fiches pratiques opérationnelles, + de 800 articles nouveaux ou mis à jours chaque année.
De la conception au prototypage, jusqu'à l'industrialisation, la référence pour sécuriser le développement de vos projets industriels.

Cet article fait partie de l’offre

Technologies logicielles Architectures des systèmes

(239 articles en ce moment)

Cette offre vous donne accès à :

Une base complète d’articles

Actualisée et enrichie d’articles validés par nos comités scientifiques

Des services

Un ensemble d'outils exclusifs en complément des ressources

Un Parcours Pratique

Opérationnel et didactique, pour garantir l'acquisition des compétences transverses

Doc & Quiz

Des articles interactifs avec des quiz, pour une lecture constructive

ABONNEZ-VOUS