Présentation
EnglishRÉ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’articleAuteur(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.
DOI (Digital Object Identifier)
Cet article fait partie de l’offre
Technologies logicielles Architectures des systèmes
(240 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
Présentation
4. Compléments
4.1 Performances
Le tableau 13 donne quelques mesures concernant les performances de trois systèmes lors de l'exécution de 1 024 millions d'opérations en virgule flottante en simple précision.
HAUT DE PAGE4.2 Profil pour les dispositifs mobiles
Il existe également une version d'OpenCL spécialement conçue pour les appareils portables (téléphones, tablettes par exemple) appelée OpenCL Embedded Profile. Il s'agit d'une version allégée du profil standard. Les processeurs de matériels mobiles deviennent en effet également multicœurs (tableau 14).
Les applications possibles sont les suivantes : la reconnaissance d'image, de visages en temps réel, le traitement d'image en temps réel et la réalité augmentée.
HAUT DE PAGE4.3 Évolutions
OpenCL 1.2, dernière version en date, propose plusieurs évolutions par rapport à la version précédente comme :
-
le découpage de devices en sous-devices. On divise ainsi les ressources matérielles disponibles en plusieurs partitions auxquelles on assigne des tâches précises ;
-
concernant les programmes, la compilation et l'édition de liens peuvent maintenant être séparées ;
-
le partage de données avec la technologie DirectX ;
-
le support de nouveaux types de périphériques : encodeurs/ décodeurs et processeurs de signal numérique ;
-
l'amélioration du support des images 1D et 2D et du partage d'images...
Cet article fait partie de l’offre
Technologies logicielles Architectures des systèmes
(240 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
Compléments
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. - ...
DANS NOS BASES DOCUMENTAIRES
ANNEXES
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
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 PAGECet article fait partie de l’offre
Technologies logicielles Architectures des systèmes
(240 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