OpenCL ist eine mit C und C++ verwendbare Programmbibliothek, die Funktionen bereitstellt, mit denen die Prozessoren der GPU für die Durchführung aufwendiger Berechnungen herangezogen werden können. Das Verarbeitungsmodell von OpenCL folgt dem SIMD (Single Instruction Multiple Data) Prinzip.
Das Verarbeitungsmodell SIMD ist für Aufgaben verwendbar, bei denen die gleiche Rechnung für eine Vielzahl voneinander unabhängiger Datensätze auszuführen ist. Solche Aufgaben lassen sich mit geringer Mühe finden. Die hier bereitgestellten Beispielprogramme zeigen
Beide Aufgaben sind für das Verarbeitungsmodell SIMD tauglich, da der Farbwert jedes Bildpunktes völlig unabhängig von den Farbwerten aller anderen Bildpunkte berechnet werden kann.
Die Verwendung der GPU mit OpenCL folgt dem gleichen Schema, nach dem OpenGL ES 2.0 verwendet wird. Ein Hostprogramm:
Für die Compilierung von C-Programmen, die Gtk-3 verwenden, wird das Paket libgtk-3-dev benötigt,das mit der Anweisung
sudo apt-get install libgtk-3-dev
installiert wird.
Für die Compilierung von Programmen, die OpenCL verwenden, wird das Paket opencl-headers benötigt. Dieses Paket wird mit der folgenden Anweisung installiert:
sudo apt-get install opencl-headers
Die Funktionen von OpenCL werden mit der folgenden include-Anweisung zugänglich:
#include "CL/opencl.h"
Für das Binden eines Programms, das OpenCL verwendet, ist die Option
-lOpenCL
anzugeben.
Archivdatei mit diesem Beispielprogramm: C-OpenCL-Gradient02.tar.gz.
Die Compilierung geschieht im Hauptverzeichnis des Projekts wie folgt:
make
Das compilierte Programm wird im Hauptverzeichnis des Projekts abgelegt umd mit dem Befehl
./demo
gestartet.
Das Beispielprogramm verwendet OpenCL für die Berechnung eines Fraktals. (Das gleiche Fraktal wird auch durch ein Beispielprogramm für OpenGL ES 2.0 berechnet.)
Archivdatei mit diesem Beispielprogramm: C-OpenCL-Fraktal001.tar.gz.
Mit dem linken Schieberegler wird der Bildausschnitt eingestellt, mit dem rechten Schieberegler der Parameter α.