Article | REF: H3160 V1

OpenCL : Open Computing Language

Author: Frédéric LEMOINE

Publication date: August 10, 2013, Review date: May 2, 2016

You do not have access to this resource.
Click here to request your free trial access!

Already subscribed? Log in!


Overview

Français

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 article

AUTHOR

  • 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.

You do not have access to this resource.

Exclusive to subscribers. 97% yet to be discovered!

You do not have access to this resource.
Click here to request your free trial access!

Already subscribed? Log in!


The Ultimate Scientific and Technical Reference

A Comprehensive Knowledge Base, with over 1,200 authors and 100 scientific advisors
+ More than 10,000 articles and 1,000 how-to sheets, over 800 new or updated articles every year
From design to prototyping, right through to industrialization, the reference for securing the development of your industrial projects

This article is included in

Software technologies and System architectures

This offer includes:

Knowledge Base

Updated and enriched with articles validated by our scientific committees

Services

A set of exclusive tools to complement the resources

Practical Path

Operational and didactic, to guarantee the acquisition of transversal skills

Doc & Quiz

Interactive articles with quizzes, for constructive reading

Subscribe now!

Ongoing reading
Programming heterogeneous parallel systems
Outline