31.12.2013 Aufrufe

PDF-Version - freiesMagazin

PDF-Version - freiesMagazin

PDF-Version - freiesMagazin

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

PROGRAMMIERUNG<br />

PU, cudaBayesreg, WideLM). Zwei weitere Pakete<br />

(magma, HiPLARM) setzen auf den Ersatz des<br />

Standard-Algebra-Pakets LAPACK durch GPUfähige<br />

Bibliotheken. Alle genannten Pakete basieren<br />

auf der CUDA-Plattform von NVIDIA, funktionieren<br />

also auch nur mit einer GPU dieses Herstellers.<br />

Das OpenCL-Paket nutzt die plattformunabhängige<br />

Schnittstelle OpenCL, allerdings ist der<br />

Funktionsumfang recht begrenzt und nicht selbsterklärend.<br />

Das Paket gputools, das der Artikel genauer<br />

vorstellen will, hat sich als das momentan<br />

am einfachsten zu installierende und in der Praxis<br />

nützlichste und vielseitigste erwiesen. Allerdings<br />

basiert auch dieses Paket auf der proprietären,<br />

wenngleich kostenlosen CUDA-Plattform.<br />

Das Paket gputools und Anwendungsszenarien<br />

Das Paket gputools bietet Altenativimplementierungen<br />

für einige grundlegende Matrixoperationen<br />

und rechenintensive statistische Verfahren.<br />

Die Prozedurbezeichnungen halten sich syntaktisch<br />

an die bekannten (CPU-) Funktionen in R;<br />

es ist lediglich jeweils das Präfix gpu dem Namen<br />

der Funktion vorangestellt.<br />

Das Paket bietet Funktionen aus den folgenden<br />

Bereichen:<br />

Matrixoperationen: Als GPU-Matrixmultiplikationen<br />

stehen Multiplikation (gpuMatMult) und<br />

Inverse (gpuSolve) zur Verfügung, sowie die<br />

der Inversion nahe stehende QR-Zerlegung<br />

und das der Multiplikation nahestehende<br />

Kreuzprodukt. Einfache lineare Operationen<br />

wie Spaltensummen oder Multiplikation mit<br />

einem Skalar sind leider nicht implementiert.<br />

Versuche und Beispielsimulationen haben gezeigt,<br />

dass hierbei die GPU keinen Geschwindigkeitsvorteil<br />

erzielen kann: Die GPU kann<br />

ihren Geschwindigkeitsvorteil immer nur dann<br />

zum Tragen bringen, wenn der Zeitaufwand<br />

für das Kopieren der Daten vom Arbeitsspeicher<br />

in den Arbeitsspeicher der GPU und umgekehrt<br />

im Vergleich zur eigentlichen Berechnung<br />

lediglich einen kleinen Teil einnimmt.<br />

Das ist bei solchen einfachen Befehlen offensichtlich<br />

noch nicht der Fall. Erfahrungswerte<br />

haben aber gezeigt, dass allein diese<br />

beiden Matrixfunktionen in Prozeduren mit<br />

vielen Operationen großer Matrizen zweistellige<br />

Beschleunigungsfaktoren erzielen können,<br />

obwohl ein Großteil des Codes immer noch<br />

ganz normal auf der CPU verarbeitet wird.<br />

Lineare Regression und kleinste Quadrate:<br />

gputools bietet mit den Befehlen gpuLm und<br />

gpuGlm lineare und generalisierte lineare<br />

Modelle an, also zum Beispiel lineare Regression<br />

und multinomiale Regressionsmodelle.<br />

Diese Funktionen berechnen das gesamte<br />

Modell auf der GPU und nicht nur einzelne,<br />

isolierte Matrixoperationen. Daher sind die<br />

Funktionen effizienter und schneller, als wenn<br />

man sie mit den Matrixoperationen nachbaut.<br />

Distanzen und Clustering: Clustering ist ein<br />

Verfahren, bei dem eine Anzahl von Objekten<br />

(Beobachtungen, Befragte) in Klassen<br />

mit ähnlichen Eigenschaften zerlegt wird.<br />

Grundlage der Berechnung ist ein Distanzmaß,<br />

das die Unähnlichkeit zweier Objekte<br />

als eine Zahl beschreibt. Mit der Funktion<br />

gpuDist kann man solche Distanzen berechnen.<br />

Es stehen dabei verschiedene Metriken<br />

zur Auswahl. Anschließend kann mit<br />

gpuHclust ein hierarchisches Clustering auf<br />

Basis der Distanzen ausgeführt werden. Der<br />

Befehl gpuDistClust vereinigt beide Funktionalitäten<br />

in einer Prozedur.<br />

Bevor in der Beispielanwendung näher auf<br />

das Paket gputools eingegangen wird, folgt zunächst<br />

eine exemplarische Installationsanleitung<br />

für das CUDA-Toolkit und die entsprechenden R-<br />

Komponenten.<br />

Installation NVIDIA CUDA-Toolkit<br />

Bei der Installation des CUDA-Toolkits gilt es zu<br />

beachten, dass diese ausschließlich auf Kommandozeilenebene,<br />

d. h. nur mit deaktiviertem<br />

Displaymanager, möglich ist. Hierzu muss man<br />

den jeweils laufenden Displaymanager stoppen.<br />

Beispielsweise lässt sich der GNOME Displaymanager<br />

„gdm“ nach einem Wechsel nach tty1<br />

( Strg + Alt + F1 ) mit dem Befehl<br />

# gdm stop<br />

anhalten.<br />

Zu Beginn geht es an die Installation notwendiger<br />

Abhängigkeiten. Die folgenden Compiler und Bibliotheken<br />

sind vorab zu installieren (die Namen<br />

© <strong>freiesMagazin</strong> CC-BY-SA 3.0 Ausgabe 12/2013 16

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!