PDF-Version - freiesMagazin
PDF-Version - freiesMagazin
PDF-Version - freiesMagazin
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