PDF-Version - freiesMagazin
PDF-Version - freiesMagazin
PDF-Version - freiesMagazin
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
PROGRAMMIERUNG<br />
GPU-Computing mit R<br />
von Markus Lilienthal und Markus Herrmann<br />
Dieser Artikel bietet eine Einführung<br />
in GPU-Computing mit dem Statistikprogramm<br />
R. Besitzer von Grafikkarten<br />
mit NVIDIA-Chipsatz haben unter Nutzung<br />
des „NVIDIA CUDA-Toolkits“ und des<br />
R-Pakets „gputools“ die Möglichkeit, parallelisierbare<br />
Rechenaufgaben auf ihrer GPU<br />
auszuführen. Entsprechende Installationsanleitungen<br />
versetzen den Leser in die Lage,<br />
eine R-CUDA-Schnittstelle zu implementieren<br />
und für einfache mathematisch-statistische<br />
Rechenoperationen zu nutzen.<br />
GPUs – ungenutzte Rechenkraft!<br />
General Purpose Computing On Graphics Processing<br />
Units (GPGPU) – die Verwendung von GPUs<br />
zur Erledigung allgemeiner (Rechen-)Aufgaben –<br />
war lange Zeit eine Domäne von Profi-Anwendern<br />
in Grafik-, Video- und wissenschaftlichen Bereichen.<br />
Mittlerweile bietet sie auch in abgespeckter<br />
Form auf herkömmlichen Arbeitsplatzrechnern<br />
bei parallelisierbaren Anwendungen oft erstaunliche<br />
Geschwindigkeitsvorteile im Vergleich zu einer<br />
CPU.<br />
Die Gründe hierfür liegen in der unterschiedlichen<br />
Architektur und Funktionsweise der beiden<br />
Recheneinheiten. GPUs sind generell für einen<br />
schnellen Datenfluss und auf die vielfach parallele<br />
Berechnung von Gleitkommazahlen konzipiert,<br />
während die maximale Leistung einer CPU nur<br />
auf eine begrenzte Anzahl gleichzeitiger Threads<br />
verteilt werden kann. GPU-Rechenkapazität für<br />
mathematisch/statistische Aufgabenstellungen zu<br />
nutzen, bietet sich also immer dann an, wenn eine<br />
Vielzahl an Berechnungen gleichzeitig ausgeführt<br />
werden kann, wobei die jeweiligen Rechenoperationen<br />
voneinander unabhängig sind (z. B.<br />
bei Matrixmultiplikationen oder Distanzmessungen<br />
zwischen Vektoren). Derartige Problemstellungen<br />
werden auch als „embarrassingly parallel“<br />
bezeichnet.<br />
Insbesondere Besitzer von Grafikkarten mit einem<br />
geeigneten „CUDA-fähigen“ NVIDIA-Chipsatz [1]<br />
können so mit Hilfe von NVIDIAs CUDA-Toolkit [2]<br />
und der Statistik-Software R [3] einfache statistische<br />
Methoden effizient umsetzen, insofern die<br />
Datenmengen ein bestimmtes Maß nicht überschreiten.<br />
Einer der limitierenden Faktoren ist hierbei<br />
der Arbeitsspeicher der Grafikeinheit. Werden<br />
Objekte geladen, die die Größe des Arbeitsspeichers<br />
überschreiten, entstehen massive Kosten<br />
durch den ständigen Datenfluss von und zu den<br />
beteiligten Speicherbausteinen. Insbesondere einfachere<br />
Grafikkarten mit weniger als 512 MB RAM<br />
kommen dabei, trotz zum Teil über hundert nutzbaren<br />
CUDA-Kernen, schnell an die Grenzen ihrer<br />
Leistungsfähigkeit und bieten sich deshalb besser<br />
für Entwicklungsaufgaben an.<br />
Der Kauf hochperformanter Grafikkarten, wie zum<br />
Beispiel der NVIDIA „Tesla“-Reihe, ist aber für den<br />
Gelegenheitsanwender meist wenig rentabel, da<br />
selbst bei kleineren GPU-Clustern durchaus der<br />
Gegenwert eines Kleinwagens aufkommen kann.<br />
Bei umfangreichen Rechenoperationen mit erhöhtem<br />
Datenfluss besteht allerdings auch die Möglichkeit,<br />
auf Internetdienste wie z. B. Amazon Web<br />
Services (AWS) auszuweichen [4]. Dort können<br />
beispielsweise GPU-Cluster-Instanzen mit zwei<br />
NVIDIA „Tesla“ M2050 GPU-Recheneinheiten angemietet<br />
werden („cg1.4xlarge“ GPU-Instanz).<br />
Die Abrechnung erfolgt dort auf Stundenbasis, der<br />
Satz beträgt momentan 2,10 US-Dollar. Dies mag<br />
im ersten Augenblick zwar nicht gerade günstig<br />
erscheinen, allerdings erhält man dafür auch die<br />
Leistung von zwei Grafikkarten mit jeweils drei GB<br />
GDDR5-Arbeitsspeicher und 448 CUDA-Kernen<br />
sowie ein weitgehend vorkonfiguriertes Systemabbild.<br />
Amazon hat über das AWS-Blog bereits angekündigt,<br />
das Angebot an GPU-Instanzen weiter<br />
ausbauen zu wollen und stellt zukünftig auch eine<br />
„g2.2xlarge instance“ mit einer NVIDIA „Kepler“<br />
GK104 GPU (1536 CUDA-Kerne und vier GB Arbeitsspeicher)<br />
zur Anmietung bereit.<br />
Die Installation des CUDA-Toolkits obliegt allerdings<br />
weiterhin dem Nutzer. Um unnötige Kosten<br />
bei der Anmietung von GPU-Instanzen zu vermeiden,<br />
wird daher empfohlen, innerhalb der Webdienste<br />
möglichst nur produktiv tätig zu werden<br />
und den Code vorab lokal zu entwickeln. Die Kosten<br />
der Anmietung sollte man auf diese Weise so<br />
gering wie möglich halten können.<br />
© <strong>freiesMagazin</strong> CC-BY-SA 3.0 Ausgabe 12/2013 14