Overview
ABSTRACT
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.
Read this article from a comprehensive knowledge base, updated and supplemented with articles reviewed by scientific committees.
Read the articleAUTHOR
-
Frédéric LEMOINE: Research engineer at the Conservatoire national des arts et métiers (CNAM) - Application development project manager – IT department
INTRODUCTION
A modern computer today comprises a large number of different processors: one or more general-purpose processors and one or more specialized processors (graphics, signal processing, etc.). This heterogeneity makes programming this machine increasingly complex. What's more, some processors are not used to their full potential. The graphics processor, for example, is under-utilized in office use and could be used for something other than display.
The OpenCL (Open Computing Language) was proposed by Apple to enable programming of heterogeneous parallel systems. It is a language derived from C, with certain extensions and a set of specific functions (API: Application Programming Interface).
It is managed by the Kronos Group. The Kronos Group defines itself as a non-profit industry consortium establishing open standards for parallel computing acceleration, for the creation of graphics content and dynamic media on a wide variety of platforms and devices. All members can participate in API development. This consortium also manages a large number of other standards, such as OpenGL, OpenMax, OpenSL, OpenVG, OpenWF, WebGL...
OpenCL can be used in heterogeneous architectures comprising, for example, CPUs (Central Processing Units), GPUs (Graphics Processing Units), Cell processors (Cell Broadband Engines) or DSPs (Digital Signal Processors).
CPUs (general-purpose) have become multi-core, and their number has increased over the years (4 cores on an Intel Core i7). GPUs (specialized and multi-core) are becoming more and more general-purpose, capable of managing more than just displays.
OpenCL is a programming model at the intersection of these two fields. It unifies and exploits the parallelism of these heterogeneous architectures. It can be integrated on embedded mobile platforms (phones, tablets) or on high-performance computers. It can also interface with graphics APIs such as OpenGL, for example, to display results in real time.
As OpenCL is an industry standard, the application code produced is easily portable from one manufacturer's system to another. In fact, it ignores the specificities of the hardware layer.
In short, OpenCL lets you write a single application, portable from one system to another, using all the heterogeneous resources of the host machine.
Exclusive to subscribers. 97% yet to be discovered!
Already subscribed? Log in!
Programming heterogeneous parallel systems
Article included in this offer
"Software technologies and System architectures"
(
227 articles
)
Updated and enriched with articles validated by our scientific committees
A set of exclusive tools to complement the resources
Bibliography
Exclusive to subscribers. 97% yet to be discovered!
Already subscribed? Log in!