31.12.2013 Aufrufe

PDF-Version - freiesMagazin

PDF-Version - freiesMagazin

PDF-Version - freiesMagazin

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!