zurück zum Artikel

OpenCL im Mac: Maximale Rechenkraft aus CPU und Grafikkarte

Artikel

OpenCL hat das Potenzial, die Rechenkraft des Mac dramatisch zu steigern – nicht nur auf dem neuen Pro. Denn die Schnittstelle zapft neben dem Prozessor auch alle Grafikeinheiten für Berechnungen an. Wie der Standard funktioniert und für welche Aufgaben er sich eignet, zeigen wir anhand eines kleinen Benchmark-Tools, das wir zum Download bereitstellen.

Leseprobe und Benchmark-Tool aus Mac & i Heft 2/2014, S. 144 [1]

Die Open Computing Language (OpenCL) ist ein hersteller­unabhängiger Standard für die Programmierung von massiv parallelen Anwendungen auf verschiedenen Plattformen. Sie umfasst sowohl eine Programmiersprache als auch eine API (Application Programming Interface), welche das optimale Verteilen der Prozesse auf die verfügbare Hardware übernimmt. So kann ein und derselbe Code auf den unterschiedlichsten Rechenwerken eines Computers gleichzeitig ausgeführt werden. Ob es sich dabei um eine CPU, eine Grafikkarte (GPU) oder eine spezielle Beschleunigerkarte (DSP, FPGAs etc.) handelt – alle lassen sich maximal beschäftigen.

OpenCL macht auf dem neuen Mac Pro wegen des zweiter Grafikkarte besonderen Spaß. Es kann aber auch die integrierten Grafikeinheit eines älteren Mac mini für Berechnungen einspannen.

Selbst „schmalbrüstige“ GPUs, wie man sie in manchen MacBook Pros oder Mac Minis antrifft, stehen in der Fließkommaleistung den CPUs nicht nach und können damit als Turbolader herhalten. Seit Mavericks kann OpenCL auch den in der CPU integrierten Grafikprozessor heranziehen (ab Intel HD Graphics 4000). Damit verfügen neben dem Mac Pro auch manche „kleinere“ Macs über drei OpenCL-„Devices“, die sich alle an der Arbeit beteiligen können.

Die weitere Entwicklung von OpenCL steht unter einem guten Stern, denn praktisch alle wichtigen Hersteller unterstützen den Standard. Die Integration in den Browser ist mit WebCL bereits in Arbeit und man kann davon ausgehen, dass die Technik in absehbarer Zeit auch auf iOS-Geräten eine Rolle spielen wird.

Wer OpenCL-optimierte Programme wie die Videoschnitt-Spezialisten Final Cut Pro X oder Adobe Premiere CC schon einmal auf dem neuen Mac Pro mit seinen zwei GPUs beim flüssigen Bearbeiten von 4K-Videos erlebt hat, kann erahnen, welche Kraft in der neuen Technik steckt. Aber OpenCL ist nicht nur für (Bewegt-)Bilder geeignet. Auch andere Anwendungsbereiche profitieren davon, etwa Text-Analysen, künstliche Intelligenz, komplexe Spielberechnungen oder Audio-, Physik- und Wetter-Simulationen. Der Nutzen ist immer dann am größten, wenn die­selben Rechenregeln auf eine große Menge gleich strukturierter Daten treffen.

Der OpenCL-Technik nähert man sich am besten anhand eines konkreten Software-Projektes. Wir zeigen am Beispiel eines kleinen Benchmark-Tools, wie man OpenCL für das beschleunigte Berechnen von Fraktalen – hier eine Julia-Menge – verwenden kann. Keine Sorge, Sie müssen kein erfahrener Xcode-Programmierer sein und die Code-Schnipsel nicht sofort verstehen. Uns geht es vor allem darum, die nötigen Schritte und Zusammenhänge aufzuzeigen. Der Benchmark misst, wie viele Pixel eine Maschine pro Sekunde im Durchschnitt kalkuliert. Das fertige Programm finden Sie über den Webcode.

Die Geburtsstunde

Bei Apple wurde die Idee zu OpenCL wohl aus der Not heraus geboren. Nachdem sich der weiteren Steigerung der Taktfrequenz immer mehr physikalische Grenzen in den Weg gestellt hatten, hat man Frequenz durch Parallelität ersetzt. Die einzelnen Kerne ­(Recheneinheiten) wurden nur noch wenig schneller, dafür verwendet heute praktisch jeder Rechner mehrere Kerne gleichzeitig. Die Spanne reicht aktuell von zwei bis sechzehn Kernen bei CPUs und bis zu mehreren tausend Kernen bei GPUs. Die Betriebssysteme von Apple müssen mit diversen CPUs und GPUs der unterschiedlichsten Hersteller (AMD, ARM, ImgTec, Intel, Nvidia) zusammenarbeiten und versuchen, deren Möglichkeiten maximal zu nutzen.

Mac & i OpenCL Benchmark

Um diese Flut von verschiedensten Rechenwerken besser anzapfen zu können, haben andere bereits einige Ansätze wie MPI, PVM, OpenMP, Nvidia CUDA und AMD/ATI Stream auf den Weg gebracht. Aber entweder waren diese Lösungen proprietär und somit nur auf herstellereigener Hardware lauffähig oder die Software-Entwicklung dafür war zu kompliziert. Daher fiel Apples Vorschlag für OpenCL an die Khronos Group (Apple, AMD, Intel, IBM, Nvidia, Qualcomm, Sony, TI u.ˇa.) auf fruchtbaren Boden: Das Ziel war, eine lizenzgebührenfreie Schnittstelle über verschiedenste Hardware hinweg zu erschaffen. OpenCL 1.0 erblickte Ende 2008 das Licht der Welt. Drei Jahre später veröffentlichte die Khronos Group Version 1.2 (alle Links siehe Webcode), die aktuell am weitesten verbreitete Version. Spezifikation 2.0 steckt derzeit noch in den Kinderschuhen, was die Umsetzung angeht.

Nicht nur angesichts des neuen Mac Pro ist für Entwickler spätestens jetzt der Zeitpunkt gekommen, sich mit OpenCL auseinanderzusetzen. Dank Xcode 5 und einem Interface zu Grand Central Dispatch (GCD) ist das auf dem Mac einfacher möglich als gedacht. Aber auch Anwender sollten wissen, was sie erwarten können.

OpenCL-Benchmark von Mac & i

Die in diesem Artikel beschriebene App stellen wir zum Herunterladen bereit (Mac & i Benchmark Tool [2]). Sie hilft, die OpenCL-Leistung Ihres Mac einzuschätzen, indem sie eine Fraktalgrafik aus der Julia-Menge berechnet.

Um den kompletten Test laufen zu lassen, wählen Sie im Menü „File“ den Eintrag „Run OCL Bench“. In der unteren Statusleiste steht „Running…“ und ein Textfenster informiert über alle gefundenen OpenCL-Devices sowie deren Einzelleistung. Je nach System dauert es etwas, bis der Hinweis „Done“ erscheint. Das Messergebnis spiegelt die Fließkommaleistung des Systems wider; der Wert „Megapixel per Second“ zeigt, wie viele Bildpunkte der Rechner im Durchschnitt pro Sekunde berechnen kann (32 Bit, Single Precision). Wir verwenden den Benchmark auch im Mac-Pro-Test (Mac & i Heft 2, Seite 88).

Das Ergebnisfenster

Lesen Sie den Artikel weiter in Mac & i Heft 2/2014 [3], in dem steht, wie OpenCL funktioniert, wie die Aufgaben auf die unterschiedlichen Recheneinheiten im System verteilt werden, in welcher Weise Grand Central Dispatch beteiligt ist und welche Rolle der Prozessor spielt. Außerdem zeigen wir, wie das Benchmark-Tool technisch implementiert ist. Sie können Heft 2/2014 im Einzelhandel kaufen, im Heise-Shop bestellen [4] oder auf dem iPad lesen [5]. Mac & i gibt es auch im Abo [6].

Fragen und Anregungen zu dieser Webseite bitte an Thomas Kaltschmidt, thk@mac-and-i.de [7]


Weitere – auch im Artikel erwähnte – Links zu OpenCL

www.mac-and-i.de/opencl (Diese Seite) [8]

Mac & i Benchmark Tool [9]

Mac & i Benchmark Tool Xcode Projekt [10]

OpenCL-Spezifikation bei der Khronos Group [11]

Apple-Support-Dokument: Welche Macs unterstützen OpenCL? [12]

Quick-Reference-Card zu OpenCL 1.2 [13]

Quick-Reference-Card zu OpenCL 2.0 [14]

Informationen von Apple zu OpenCL und Grand Central Dispatch [15]

Fallstudie von AMD [16]


URL dieses Artikels:
http://www.heise.de/-2126461

Links in diesem Artikel:
[1] http://www.heise.de/mac-and-i/heft/2014/2/144/
[2] https://www.heise.de/mac-and-i/downloads/65/1/1/8/0/8/7/8/Mac___i_OpenCL_Benchmark.app.zip
[3] http://www.heise.de/mac-and-i/heft/2014/2/4/
[4] http://shop.heise.de/katalog/mac-i-02-2014
[5] http://itunes.apple.com/de/app/mac-i/id424199222?mt=8
[6] https://abo.heise.de/mac-and-i
[7] mailto:thk@mac-and-i.de
[8] http://www.mac-and-i.de/opencl
[9] https://www.heise.de/mac-and-i/downloads/65/1/1/8/0/8/7/8/Mac___i_OpenCL_Benchmark.app.zip
[10] https://www.heise.de/mac-and-i/downloads/65/1/1/8/0/8/7/8/1402-144.zip
[11] http://support.Apple.com/kb/HT5942?viewlocale=de_DE&locale=de_DE
[12] http://support.apple.com/kb/HT5942?viewlocale=de_DE&locale=de_DE
[13] http://www.khronos.org/files/opencl-1-2-quick-reference-card.pdf
[14] http://www.khronos.org/files/opencl20-quick-reference-card.pdf
[15] https://developer.Apple.com/library/Mac/documentation/Performance/Conceptual/OpenCL_MacProgGuide/UsingGCDwOpenCL/UsingGCDwOpenCL.html
[16] http://developer.amd.com/resources/documentation-articles/articles-whitepapers/opencl-optimization-case-study-simple-reductions/