Anwendungsfelder massiv parallel programmierbarer Grafikprozessoren im wissenschaftlichen Bereich am Beispiel der Nvidia Fermi Architektur und deren Vorläufer
Aus Winfwiki
|
Hausarbeit | |
| Hochschule: | Hochschule für Oekonomie & Management |
| Standort: | Neuss |
| Studiengang: | Bachelor Wirtschaftsinformatik |
| Veranstaltung: | IT-Infrastruktur |
| Betreuer: | Dipl-Inf. (FH) Christian Schäfer |
| Typ: | Hausarbeit |
| Themengebiet: | IT-Infrastruktur |
| Autor(en): | Ralf Leichter |
| Studienzeitmodell: | Abendstudium |
| Semesterbezeichnung: | |
| Studiensemester: | 3 |
| Bearbeitungsstatus: | vergeben |
| Prüfungstermin: | |
| Abgabetermin: | |
1 Einleitung
In der heutigen Zeit ist Rechengeschwindigkeit ein entscheidender Faktor in der Wissenschaft - bisher waren hohe verfügbare Kapazitäten wenigen elitären Einrichtungen vorbehalten, Prozesse die in der Simulation viel Rechenzeit und damit viel Geld verschlungen, wurden aufgrund der Kosten effektiver in (ebenfalls kostspieligen) Testreihen umgesetzt. Seit dem Erscheinen von GPUs versuchen Wissenschaftler aller Sparten diese zusätzliche Leistung für ihre Wissenschaft nutzbar zu machen. Mit der fortschreitenden Strategie der Many-Core Architekturen bei den GPUs werden diese parallelisierten Systeme zunehmend für den wissenschaftlichen Einsatz interessant. Die speziellen Anforderungen an Präzision und Leistung in diesem Bereich soll im Rahmen dieser Semiararbeit insbesondere berücksichtigt werden.
Diese Arbeit soll derzeitige und zukünftige Anwendungsfelder von GPU-Computing, im Speziellen die Anwendungen der parallel programmierbaren GPUs der NVIDIA Fermi Architektur aufzeigen, deren Stärken und Schwächen einordnen, um schließlich eine Einschätzung des Zukunftspotentials dieser Technologie ziehen zu können. Dabei sollen Einflussfaktoren und Risiken genannt werden.
2 Grundlagen
Im Grundlagenkapitel soll betrachtet werden, welche Konzepte und Techniken im Bereich der parallel programmierbaren Grafikprozessoren historisch eine Rolle gespielt haben und aktuell spielen. Hierbei werde ich zunächst auch die konzeptionellen Grundlagen eingehen und im Anschluss technische Einflussfaktoren definieren sowie deren Rolle auf die aktuelle Entwicklung im Bereich GPU-Computing ausarbeiten.
2.1 Konzeptionelle Grundlagen
In der historischen Linie des GPU Computing gab es viele Ansätze die direkt oder indirekt das heutige Design von GPUs beeinflusst haben - im Folgenden sollen die wichtigsten Konzepte und Grundlagen vorgestellt werden. Da die Entwicklung der GPUs durch eine außerordentliche Komplexität gekennzeichnet ist, ließe sich die Liste beliebig erweitern - im Rahmen dieser Seminararbeit werden nur die einflussreichsten Faktoren einer langen Liste vorgestellt.
2.1.1 Pixel
Ein Pixel ist definiert als ein individuell adressierbares Element in Array aus Eigenschaften zu Farbgebung und Farbintensität, die zusammen ein digitales Bild ergeben. Pixel sind nicht zwingend als quadratisch definiert, auch wenn dies meist der Fall ist - es gibt auch Anwendungen und Arbeiten mit der Nutzung von hexagonalen Pixeln. [1]
2.1.2 Polygon
Ein Polygon ist allgemein eine geschlossene, ebene Figur der von mehreren Strecken begrenzt wird. Polygone werden in der Computergrafik dazu eingesetzt, Körper beliebig anzunähern. Die Substitution einer Form mit Polygonen beschränkt den Rechenaufwand für eine Operation auf ein endliches (beliebig komplexes) Maß.[2] Die Ecke eines solchen Polygons, also der Punkt an dem sich mehrere Strecken treffen bzw. kreuzen, wird Vertex genannt[3]
2.1.3 Ray-Tracing
Ray-Tracing ist eine Technik zur Erzeugung fotorealistischer Bilder, die ihre Photorealität mit der Anlehnung der mathematischen Hintergründe an die Wirklichkeit erreicht - hierbei werden Objekten Eigenschaften wie Farbe, Glattheit, Reflexion, Spiegelung oder Transparenz zugeordnet. Zusätzlich werden in der Szene Lichtquellen definiert, die die Ausleuchtung bestimmen. Das erzeugte Licht wird verfolgt und anhand der Objekteigenschaften behandelt (geschwächt, gebrochen etc.), was in den optischen Phänomenen wie Schattenwurf oder Spiegelung resultiert.[4] Die Fotorealität der Darstellung wird durch einen hohen Rechenaufwand erkauft.[5]
2.1.4 Shader
Shader (im Speziellen Pixel-Shader) sind programmierbare arithmetische Einheiten, die Eingabewerte eines Pixels mit vom Programmierer bestimmbaren weiteren Eingabewerten, bespielsweise Farbwerten oder Texturpositionen, mit einem vorgegebenen Algorithmus kombiniert um so eine Ergebnisfarbe des Pixels zu errechnen.[6] Shader waren die erste Form der in eingeschränktem Rahmen freien Programmierung von GPUs. Historisch wird diese Form der freien Programmierung einer GPU als Pixelshaderprogrammierung bezeichnet.
2.1.5 Parallelisierung
Dietrich Bohles beschreibt: "In Abhängigkeit von der Interpretation des Begriffes "gleichzeitig" lassen sich echt-parallele von der quasi-parallellen Ausführung abgrenzen." Als Unterscheidungsgrundlage wird das "echte" Vorhandensein mehrerer Prozesse zur echt selben Zeit (echt-parallel) und die über einen Scheduler aufgeteilte quasi-parallele Ausführung genannt. [8] Der Grad der Parallelisierung ist direkt abhängig von der Anzahl der (wiederum in Abhängigkeit des Begriffes) "gleichzeitig" verfügbaren physikalischen Prozessoren. Parallelisierung erfordert eine wechselseitig weitgehende Unabhängigkeit der parallel laufenden Prozesse - hierdurch wird auch der mögliche Grad der Parallelisierung beschränkt. [9]
Parallelisierung ist das grundlegende Konzept aktueller GPUs - im Gegensatz zu den General-Use CPUs hat sich die Anzahl der Kerne in einer Grafikkarte deutlich extremer entwickelt: aktuelle Grafikkarten bieten (je nach Hersteller) bis zu 2048 Cores gegenüber 12 Cores in aktuellen CPUs. Bedingt durch die durch diese Entwiklung extrem steigende Leistung bei parallelisierbaren Prozessen, überflügelt die Leistung von GPUs die der CPUs in diesem Feld bereits heute um Längen. Abb. 2-1.1 zeigt die historische Entwicklung der Leistung, bedingt durch der Parallelisierung in GPUs.
2.2 Historische Entwicklung
Für das Verständnis der aktuellen Entwicklung und die Einordnung der Technologie ist es notwendig darzustellen, wie sich diese entwickelt hat - im Folgenden der Versuch einer Kategorisierung von Entwicklungen, die zu der heutigen parallelen Architektur von GPUs geführt haben. Natürlich sind die Übergänge der verschiedenen Schritte fließend und können nicht immer klar voneinander abgegrenzt werden - auch wurden in dieser Zeit vielen Nebenzweige gebildet, die im Rahmen dieser Arbeit aber nicht weiter beleuchtet werden sollen.
2.2.1 Frühe Formen
Frühe Formen von parallelisierten GPUs gab es bereits in den frühen 1980er Jahren, diese boten ein Leistung von ca. 100.000 Vertex - oder 50 Millionen Pixel-Operationen pro Sekunde zu einem Preis von etwa $50.000. Diese Leistung hat sich im Vergleich zu heute vervielfacht - aktuelle Grafikkarten leisten, Stand 2010, etwa 10 Millionen Vertex- oder 1 Milliarde Pixeloperation pro Sekunde zu einem Preis um $200. [10] Auch wenn ein großer Teil dieser Leistungssteigerung auf die Miniaturisierung von elektronischen Bauteilen zurückzuführen ist, ist zu bemerken, dass durch die Forderung nach mehr Leistung und Geschwindigkeit immer spezialisiertere Prozessoreren entwickelt wurden - was direkt Einfluss auf das Design einer aktuellen Parallel-GPU genommen hat. [11] Bis ca. Mitte der 1990er Jahre waren dreidimenionale Grafikdarstellungen fast ausschließlich militärischen- und Forschungszwecken vorbehalten, ein populärer Anbieter für Grafikkarten dieser Art war Silicon Graphics.[12]
2.2.2 Fixed Function Pipelines
Vom Anfang der 80er Jahre bis in die späten 1990er waren alle relevanten Grafikkarten ausschließlich mit sog. Fixed Function Pipelines zur Berechnung ausgestattet. Diese waren konfigurierbar, aber nicht programmierbar. Zur Konfiguration wurden APIs eingeführt - die populärsten Vertreter sind DirectX und OpenGL. Fixed Function Pipelining war die Grundlage für die DirectX Generationen 1-7.[13]
2.2.3 Scan Line Interleave(SLI)
Scan Line Interleave (SLI) ist eine von der Firma 3dfx entwickelte Technologie, bei der jeweils jede 2. Zeile eines Bildes an eine von zwei gekoppelten Grafikkarten gesendet wird. Scanline Interleave ist weder ein Vorläufer noch kompatible zu dem aktuellen Nvidia SLI (Scalable Link Interface), welches ein anderes Prinzip zur Erhöhung der Leistung nutzt.
Scanline Interleave wurde von den Voodoo2 Grafikkarten des genannten Herstellers 3dfx und den entsprechenden Nachfolgern (Voodoo3-5) unterstützt, stellenweise wurden bereits Produkte mit Multi-GPU Systemen auf dieser Basis entwickelt - damit war 3dfx der erste Hersteller der kommerziell parallele Verarbeitung auf die Plattform der GPUs brachte.
2.2.4 Multi-GPU technologien
Scalable Link Interface (SLI) und Crossfire sind Multi-GPU Technologien der Hersteller Nvidia (SLI) und AMD/ATI (Crossfire). Hierbei werden zwei oder mehr Karten so gekoppelt, das sie die Bildberechnung parallel übernehmen. Eine Auswirkung dieser Parallelisierung waren bisher "Mikroruckler", die beim abwechselnden Rendering von Bildern mehrerer Karten auftreten wenn eine Karte etwas länger für das Rendering braucht als die vorhergehende.
Um dem entgegenzuwirken, unterstützen aktuelle Versionen dieser Multi-GPU Technologien mehrere Modi:
| Modus | Beschreibung |
|---|---|
| Alternate Frame Rendering (AFR) | alle beteiligten Grafikkarten berechnen nacheinander jeweils ein komplettes Bild |
| Supertile Mode | Das Bild wird in Quadrate einer bestimmten Pixelgröße zerlegt und dann in Anteilen an die beteiligten Grafikkarten zugewiesen |
| Scissor Mode | Das Bild wird horizontal in gleiche Teile geteilt und berechnet - bei zwei beteiligen Grafikkarten, würde eine die obere, die andere Karte die unter Hälfte des Bildes berechnen |
| Super AA Mode | bei diesem Modus wird nicht die Rendering-Geschwindigkeit, sondern die Qualität der Berechnung erhöht - hierzu berechnen alle beteiligten Grafikkarten dasselbe Bild mit verschiedenen Multisampling Points, das Ergebnis wird im Endeffekt zu einem Bild zusammengesetzt. |
2.2.5 Pixelshaderprogrammierung
Im Grundprinzip nutzt ein Pixelshader die x & y Position eines Pixels, sowie zusätzliche Inputinformationen, wie etwa weitere Input-Farben oder Texturkoordinaten und kombiniert diese miteinander um eine Ergebnisfarbe zu berechnen und zurückzugeben[15]. Die weiteren Eingabebestandteile neben den Koordinaten waren komplett vom Programmierer zu definieren, was bald die Idee hervorbrachte die Farbeingaben zur generellen Übergabe beliebiger Daten zu verwenden. Ist es in einem spezifischen Fall möglich, die zu verarbeitenden Daten als Farbrepräsentation zu übergeben, können die Shader im Anschluss fast beliebige Operationen auf diesen Wert ausführen und das Ergebnis wiederum als Farbwert zurück liefern.[16]
Limitationen für generelle Programmierung
Das Verfahren ist wie bereits erwähnt beschränkt auf Operationen in denen die Eingabedaten durch Farbwerte repräsentiert werden können - weiterhin war es durch die spezialisierte Architektur von GPUs für Entwickler nur eingeschränkt möglich auf die verfügbaren Ressourcen zuzugreifen. So war es beispielsweise in dieser Evolutionsstufe der GPU-Programmierung nicht möglich, wahlfrei auf den Grafikspeicher zu schreiben (Scattering). Weiterhin waren die Berechnungen basierend auf Fließkommazahlen (Floating Point Operations) nicht oder nur in sehr ungenauem Maße möglich, was Shaderprogrammierung für wissenschaftliche Anwendungen unbenutzbar machte.[17]
2.2.6 Aktuelle Entwicklung
Das im vorgehenden Absatz behandelte Problem der Limitationen für die generelle Programmierung wird mit den aktuell erscheinenden neues APIs angegangen - hierzu wurden komplett neue Interfaces auf der Hard- und Softwareseite implementiert. Die prominentesten Vertreter dieser Generation der quasi-generell programmierbaren GPUs sind Compute Unified Device Architecture (CUDA) und die Open Computing Language (OpenCL).
Über diese neuen APIs können GPUs mit fast allen Aufgaben der Berechnung betraut werden, was Sie für neue Anwendungsbereiche interessant macht.
2.3 Nvidia Fermi
Nvidia Fermi ist die aktuellste Variante der Nvidia CUDA-Architektur. Gegenüber den Vorläufern wie dem Nvidia G80 Chip (unter Anderem Geforce 8800GTX) bietet die Fermi Architektur viele Verbesserungen die aufgrund von Benutzerfeedback in die Architektur eingebracht wurden. So bietet diese Variante laut Whitepaper[18]:
- verbesserte double precision Performance
- ECC Support
- eine eigenständige Cache Hierarchie
- mehr Shared Memory
- schnellere atomare Operationen [19]
Insbesondere die ersten beiden Punkte machen die Fermi Architektur für ganz neue Geschäftsbereiche interessant, in denen eine hohe Verlässlichkeit der Ergebnisse und/oder eine sehr hohe Präzision von Nöten sind. Viele dieser Anwendungsfelder sind im wissenschaftlichen Bereich angesiedelt und sollen im Rahmen dieser Arbeit analysiert werden.
2.4 Abgrenzung der Arbeit
Im Rahmen der Arbeit sollen die Anwendungsfelder massiv paralleler Ausführung analysisert werden - hierbei wird die Arbeit auf den Bereich des GPU-Computings auf Level der zur Zeit der Arbeit aktuellen Nvidia Fermi Architektur analysiert. Es sollen bereits umgesetzte Projekte, sowie deren potentielles Entwicklungspotential für den jeweiligen Forschungszweig betrachtet werden.
In der Arbeit soll nicht analysiert werden welche Alternativen es in den jeweiligen Forschungszweigen zum GPU-Computing gibt, weiterhin wird zusätzlich nicht die eventuell bereits vorhandene Adaption oder Aversion des Forschungszweiges zu GPU-Computing berücksichtigt. Derzeit konkurrierend aufkommende Onechip-Designpläne werden bei der Bewertung des jeweiligen Potentials nicht eingerechnet, da der Einfluss und die möglichen Ausbauformen dieser Technologie zum Zeitpunkt der Arbeit weder fundiert dokumentiert, noch verfügbar sind.
3 Analyse
Nach abgeschlossener Darstellung der Herkunft und der Vorraussetzungen für die Programmierung von Grafikprozessoren soll im Folgenden nun die Anwendung der aktuellen Generation dieser Karten analysiert werden. Hierzu soll zunächst gezeigt werden, in welchen Bauformen und Ausbaustufen die Hardware anzutreffen ist - anschließend soll die Anwendung derselben analysiert werden.
Ein spezieller Augenmerk wird hierbei auf die parallel-programmierbaren Grafikkarten gelegt, welche im wissenschaftlichen Bereich einen wichtigen Beitrag für viele rechenintensive Anwendungen leisten können, welche in diesem Teil der Arbeit aufgezeigt werden sollen. Abschließend soll eine Potentialeinschätzung dieser Technik getroffen sowie mögliche offene Punkte und Einflussfaktoren offengelegt werden.
3.1 Ausbauformen
Wie die meisten Technologien ist das GPU-Computing ist verschiedenen Skalierungsstufen verfügbar - hierbei zu nennen ist der Einsatz von GPU Computing in sogenannten Personal Supercomputern, also Einzelplatzrechnern, welche mit GPU-Computingfähigkeiten ausgestattet werden und der Einsatz im Rechenzentrum als Rackvariante.
3.1.1 HPC - Personal Supercomputer
Mit dem Einsatz von GPU-Computing können auf Einzelplatzsystemen Rechengeschwindigkeiten erreicht werden, die bisher großen CPU-Clustersystemen vorbehalten waren. Mit der Verkleinierung des nötigen Raums gehen auch die Reduzierung der Kosten auf einen Bruchteil einher. [20]
Der Hersteller NVIDIA bietet zu diesem Zweck vorkonfigurierte Systeme speziell für den wissenschaftlichen Einsatz im Bereich Bioinformatik, Molekulardynamik und Quantenchemie an. Der in diesen Bereichen zu erwartende Geschwindigkeitszuwachs beläuft sich laut Herstellerangaben auf den Faktor 10-20x.[21]
3.1.2 HPC - Clustereinsatz
Im High Performance Computing spielen kommerzielle Supercomputer eine wichtige Rolle in rechenintensiven Anwendungen - zum Stand dieser Arbeit beginnen neue Supercomputer auf die hybride Berechnung mit CPUs und GPUs zu setzen, so wurde anlässlich der "HPC 2010 China" eine Rechengeschwindigkeit der neuen Ausbaustufe des Tianhe-A1 Supercomputers im National Supercomputing Center in Tianjin von 2,507 PetaFLOPs gemeldet, was 50% über Spitzenwert der aktuellen TOP500 Liste zum Zeitpunkt dieser Arbeit (Juni 2010)[23] liegt. Erreicht wird dies mit 7168 Tesla M2050 GPUs im Verbund mit 14336 CPUs.[24]
Ein Problem dieser Ausbauform ist der erhöhte Kühlbedarf dieser Bauform. Beispielsweise liegt die Leistungsaufnahme eines 1HU Tesla-Rackmounts bei 800W, was bei vollen Racks deutlich höhere Anforderungen an Abwärme und Kühlung stellt.[25] Dem entgegen steht die stark erhöhte Rechendichte, die ein solches System zur Verfügung stellt.
3.2 Ausprägungen & Standards
Im Folgnden die Darstellung aktueller Standards des GPU-Computings, deren Spezifikationen & unterstützte Geräte.
3.2.1 Compute Unified Device Architecture (CUDA)
CUDA beschreibt ein Architekturkonzept der Firma Nvidia, welches das erste kommerziell verfügbare GPU-Computing Framework darstellt. CUDA unterstützt neben der Ausführung von Berechnungen auf der GPU einen Kompatibilitätsmodus, bei dem CUDA-Code auf einem SSE2-fähigen CPU ausgeführt werden können.
3.2.1.1 Grundlagen
Die CUDA-Architektur hat eine sogenannte "unified shader pipeline", die es erlaubt jede erdenkliche arithmetische Operation auf dem GPU auszuführen. CUDA definiert eine weitere Schnittstelle zur GPU, die über ein eigenes C-basiertes Framework (CUDA-C) programmiert werden kann. Hierbei werden für Grafikkarten unübliche Zugriffe, wie wahlfreier Lese- und Schreibzugriff realisiert. CUDA-Zugriffe werden von einem eigenen Compiler, welcher ausschließlich für die GPU-Zugriffe optimiert ist, kompiliert - dem CUDA-C-Compiler NVCC.[27] Wie in der Grafik 3.2-1 zu sehen, teilt der Compiler der Code in CPU und GPU Code, im Falle des Vorhandenseins weiterer CUDA-fähiger Geräte ebenfalls auf diese, auf. Für die jeweiligen Targets erzeugt NVCC den jeweils passenden Code.
3.2.1.2 Unterstütze Geräte
Die erste Nvidia-Grafikkarte die auf dem CUDA-Standard der ersten Generation basierte, war die Nvidia GeForce 8800GTX. Seit der Markeinführung wurde bereits die 2. "große" Versionsnummern von CUDA veröffentlicht - die aktuellste Variante, CUDA 2.0, wird von den der Tesla Serie, die speziell auf diesen Zweck optimiert wurde, sowie den Highend Modellen der Quadro-Serie (Quadro 600+, Quadro5000m+) unterstützt.
CUDA 3.0 und 3.1r2 sind bereits als Standards veröffentlicht, Stand dieser Arbeit ist jedoch noch keine Grafikkarte im Markt verfügbar die diese Standards implementiert. Nvidia wird die Standards in der nächsten Generation ihrer Quadro und Tesla Karten umsetzen.
Zusätzlich zu der Hardwarefunktionalität der Grafikkarte, CUDA-fähig zu sein, muss auch das Betriebssystem einen passenden Treiber einsetzen, bei dem die CUDA-Befehle entsprechend weitergereicht werden. Zur Zeit dieser Arbeit ist CUDA auf folgenden Platformen verfügbar:
- Mac OSX 10.6 "Snow Leopard", hierbei ist die CUDA-unterstüzung bereits in das System integriert. Für einen Developer Zugriff sind zusätzliche Apple Komponenten (Apple XCode) erforderlich.
- Suse, Ubuntu, Fedora und Redhat Linux, hierbei stehen spezielle Treiber auf der Nvidia Homepage zur Verfügung, diese Grafiktreiber sind, wie bei Nvidia üblich, allerdings closed source und müssen daher bei den meisten Distributionen nachinstalliert werden.
- Windows XP, Vista, 2008 und Windows 7, hierbei ist die Unterstützung jeweils über den zu installierenden Nvidia Treiber nachgerüstet - für eine Entwicklungsumgebung wird zur Zeit offiziell Visual Studio 2008 unterstützt, auch die Express Variante kann genutzt werden.
CUDA unterstützt zusätzlich noch einen sogenannten Kompatiblitätsmodus, der CUDA-Code auf SSE2+ fähigen CPUs ausführen kann - dieser Modus ist jedoch nur als Debugging und Fallbackmöglichkeit konzeptioniert - die Ausführungsgeschwindigkeit ist durch die Emulation massiv beeinträchtigt.
3.2.2 Open Computation Language (OpenCL)
OpenCL ist eine standardisierte, plattformunabhängige API, implementiert in der Programmiersprache C, welche für portierbare Parallelprogrammierung in heterogenen Umgebungen gebaut wurde [30]. OpenCL wurde auf Basis einer Einreichung der Firma Apple initiiert und wird von der Khronos Group, die unter Anderem auch hinter dem Standard OpenGL steht, betreut und weiterentwickelt.
3.2.2.1 Grundlagen
OpenCL setzt nicht allein auf GPUs als Grundlage für Berechungen sondern teilt sogenannte "Workunits" auf alle im System befindlichen, OpenCL-fähigen Geräte auf. Dies kann z.B. eine speziell dafür gebaute Erweiterungskarte oder auch die CPU sein.
3.2.2.2 Unterstütze Geräte
Im Gegensatz zu CUDA unterstützt OpenCL eine breite Basis von Geräten - angefangen von CPUs und GPUs verschiendener Hersteller, über Disgital Signal Processing(DSP)-Prozessoren bis hin zu Cell-CPUs. OpenCL ist nicht an eine Plattform gebunden und kann so z.B. auf Mobilgeräten, Personal Computern und Servern eingesetzt werden, ohne das weitere Modifikationen erforderlich sind.[31]
3.2.3 Implementierungen auf höheren Ebenen
PyCUDA & PyOpenCL
PyCUDA vereint die Scripting-Programmiersprache Python mit den Funktionalitäten der C Subsets CUDA-C oder OpenCL-C. Die Besonderheit hierbei ist, dass Python im Grundsatz nicht kompiliert wird - die Compilation des CUDA Bestandteiles geschieht automatisch im Hintergrund.
Das bei den Konzepten verfolgte Prinzip ist die Spezialisierung der Komponenten. Anlässlich der GTC 2010 prägte Hauptmaintainer Andreas Klöckner folgende Analogie:
- Python zur Steuerung (das Gehirn)
- CUDA-C bzw OpenCL-C zur Verarbeitung (die Muskeln)[32]
CUDA FORTRAN
PGI und NVIDIA haben in einer Kooperation eine Erweiterung des FORTRAN Standards um GPU Funktionen geschaffen. Laut PGI werden dabei die folgenden Operationen unterstützt:
- Declaration of variables that reside in GPU device memory
- Dynamic allocation of data in GPU device memory
- Copying of data from host memory to GPU memory, and back
- Invocation of GPU subroutines from the host
Durch die Implementierung dieser Erweiterung können existierenden FORTRAN Programme einmalig angepasst werden und in Zukunft von den zu erwartenden Geschwindigkeitsvorteilen in jeden Skalierungsstufe profitieren.[34]
3.3 Anwendungsfelder
Im Folgenden sollen nun einzelne Wissenschaftsbereiche auf bestehende oder geplante Anwendungsbereiche hin analysiert werden. Jeweils resultierende Vorteile und Einschränkungen sollen abschließend genutzt werden, ein Fazit für den Einsatz von parallel programmierbaren GPUs im wissenschaftlichen Bereich zu geben.
3.3.1 Biologie
In der Biologie (bzw. der Bioinformatik) werden komplexe algorithmische Operationen durchgeführt, die hohe Anforderung an die Rechenleistung stellen. Ein Beispiel hierzu ist die phylogenetische Analyse, die in der Grundlage ein "Nearest Neighbor" Problem (Auch "Problem des Handlungsresenden genannt - hierbei handelt es sich um ein Optimierungsproblem der theoretischen Informatik zur Ermittlung der kürzesten Strecke zwischen mehreren Punkten. [35] darstellt. Dabei werden Objekten (Pflanzen, Tieren etc.) Eigenschaften zugeordnet (z.B. über ihren genetischen Code) um in Anschluss über Ähnlichkeiten in den Eigenschaften Rückschlüsse auf die Einordnung der Objekte in eine Baumstruktur zu ziehen. Diese Technik nutzt als als Grundlage das Pattern-matching[36]
3.3.2 Meteorologie/Physik
In der Meteorologie gibt es diverse massiv parallele Probleme - im Wesentlichen sind diese in Bereich der n-body Probleme, bei denen die Verteilung von n Objekten unter gegebenen Voraussetzungen untersucht wird. Da in der Physik und Meteorolgie viele Probleme auf mathematischen Modellen der Fluiddynamik basieren, sind auch hier diese Anwendungen für eine Unterstützung durch GPU Computing optimal zu kombinieren.
3.3.2.1 Fluid-Simulation
Die Fluid-Simulation ist eine solche n-body Simulation (in diesem Fall n-wave[37]) - Ein Beispiel ist die Tsunami-Modellierung und -Simulation. Hierbei ist das Wasser als Sammlung einzelner Objekte zu betrachten, die sich nach den Gesetzen der Fluiddynamik verhalten. Das Problem ist massiv parallel, da veränderliche Vektoren (Krafteinwirkung, Druck, Dichte, Veränderungsvektor zum Nachbarn) wiederholt auf Punkte (=Wasser, =Pixel) angewendet werden. Zusätzlich sind für die Visualisierung aufwendige, aber voneinander unabhängige, Elementaroperationen nötig - hierzu sei die Navier-Stokes Gleichung genannt[38], die die Krafteinwirkung auf Flüssigkeiten definiert. Eine Analyse dieser Funktion würde über den Umfang dieser Fallstudie hinausgehen, wird aber in der Arbeit in 'Munoz, Texas A&M, 2010' ausführlich dargestellt. Über dasselbe Prinzip können auch ähnliche Probleme wie etwa Lava-Simulationen abgewickelt werden, jeweils mit den geänderten Vorgaben.
3.3.2.2 Solar-Astrophysik
In der Solarastrophysik können viele computerlastige Probleme mit Hilfe von GPUs simuliert und Berechnungen aus Beobachtungen und Experimenten deutlich zeitnaher zur Verfügung gestellt werden. Beispielhaft seien hier folgenden Anwendungen genannt:
- Die Berechnung des Magnetfeldes der Sonne
- Raytracing-Aufgaben durch solare Athmosphären anhand von Magnetohydrodynamik (MHD) Modellen in der solaren Athmosphäre
- Das Verfolgen und Beobachten von Plasmaströmen [40]
Living with a Star
Die National Aeronautics and Space Agency (NASA) hat das Programm "Living with a Star" ins Leben gerufen in dessen Rahmen unter Anderem die Solardynamik beobachtet und analysiert werden soll. Die Erkenntnisse sollen ein besseres Verständnis des "Weltraum-Wetters" geben. [41] Für Untersuchungen in diesem Programm wurde das sogenannte "Atmospheric Imaging Assembly (AIA)" genutzt, um Bilder der Sonne in unterschiedlichen Spektralebenen auszuwerten.[42] Abb. 3.3-1 zeigt ein beispielhaftes Ergebnis einer solchen Berechnung.[43] Für die Berechnung wurden Programme auf Basis von OpenGL, OpenCL und GLSL, einer Shadersprache, geschrieben und in den Einsatz gebracht.
Sonnenfleckensimulation
Ein weiteres Anwendungsfeld in der Solar-Astrophysik ist die Simulation von Sonnenflecken - hierbei insbesondere deren Entstehungsprozess und interne Struktur. Zur Simulation werden Raytracing-Technologien eingesetzt. Als größte Einflussfaktoren sind hier das variable Magnetfeld der Sonne, sowie die Plasmaströme unterhalb der Sonnenoberfläche zu nennen.[44] In der GPU Simulation werden die Strahlen (Rays) jeweils separat von einem Streamprozessor bearbeitet. Die Anforderungen an die Rechenleistung in dieser Simulation ist erheblich: ein Modell eines einzigen Sonnenfleckes benötigte auf dem NASA Supercomputer "Pleiades", ausgestattet mit 2048 CPUs, im April/Juni 2010 vier Wochen zur Vollendung der Berechnung.[45] Der durch GPU Computing in diesem Bereich erwartete Geschwindigkeitszuwachs ist enorm, erste Modelle sind zur Zeit dieser Fallstudie in Arbeit.
3.3.2.3 Galaxienformation
Galaxienformationsforschung ist eine n-body Anordnung mit Einflussvektoren basierend auf den Gesetzen der Fluiddynamik. Zur Simulation der in diesem Bereich sehr großen Anzahl von Körpern wurden bis vor kurzer Zeit spezialisierte Rechner eingesetzt, die nur auf diesen Einsatzzweck hin optimiert wurden. Ein Beispielsystem hierfür sind die GRAPE Computer der Firma Fordon/Bell, die in Zeitraum 1989-1998 eingesetzt wurden. Die höchste Ausbaustufe GRAPE-6 erreichte eine Leistung von 30.8GFLOPS in Double-Precision Berechnungen.[46]
Mit dem Schwenk auf GPU Computing, können Leistungen in diesem Bereich nun mit einer einzelnen Standard-Tesla Series 10 erreicht werden (eine einzelne Tesla-10 erreicht 1TFLOP in Single Precision, 80GFLOPs in Double Precision).[47]
3.3.2.4 Grid Computing
Der Bereich des Grid-Computings ist ein gutes Beispiel für Aufgaben, die sich sehr gut für GPU-Computing umsetzen lassen. Bereits in der bestehenden Infrastruktur wurden in diesem Bereich Probleme mit hohen Anforderungen an Rechenleistung in kleine Pakete (sog. Workunits) aufgeteilt und getrennt berechnet. Der Problemspace ist also in diesem Bereich bereits dynamisch aufteilbar - eine Anpassung an GPU Computing ist problemlos möglich und sinnvoll.
Das erste Projekt in diesem Bereich das diese Umsetzung im Jahr 2006 implementierte war Folding@Home, welches Proteinfolding in einem Public Grid berechnet. Das Projekt gibt für seine Berechnungen durch die Implementierung einen Geschwindigkeitsvorteil im Faktor 20-30x an. [48]
Auch das Public Gridcomputing Netzwerk SETI@Home hat im Jahre 2008 (SETI) eine spezielle Versionen ihres Clients mit CUDA Unterstützung veröffentlicht. Dieser Client nutzt sowohl die CPU als auch die GPU für ihre Berechnungen. SETI@Home gibt den Geschwindigkeitszuwachs gegenüber der reinen CPU-Berechnung mit dem Faktor 2-10x an.[49] SETI nutzt die Rechenleistung zur Auswertung von Sensordaten zur Erkennung ausserirdischen Lebens durch die Auswertung schmalbandigen Übertragungen, welche mit Hilfe von Radioteleskopen aufgefangen werden.[50]
3.3.3 Medizin
Auch der Bereich der Medizin ist in der heutigen Zeit oft computergestützt - Entscheidungen müssen oft schnell getroffen werden, Rechengeschwindigkeit kann unter Umständen über das Leben von Patienten entscheiden. Der hiervon hauptsächlich beeinflusste Bereich ist die Bilderzeugung, -verarbeitung und -darstellung. Schnellere oder genauere Bilder eines Scans ermöglichen medizinischen Fachpersonal, schnell richtige Entscheidungen treffen zu können.
3.3.3.1 Undersampling
Ein Beispiel einer solchen Signalverarbeitungsapplikation ist das Undersampling - in diesen speziellen Bereichen werden extrem hohe Geschwindigkeitsvorteile in der Ausführungsgeschwindigkeit erreicht, so ist z.B. das Undersampling von Bildern mit einem Geschwindigkeitsfaktor 2300x gegenüber der "normalen" CPU-Ausführung möglich. Diese Technik wird zur Visualisierung von Röntgenbildern eingesetzt, um diese klarer darzustellen und das Erkennen von Anomalien zu vereinfachen. Bisher war dieses Verfahren für den klinischen Alltag durch die hohe Ausführungszeit (ca. 9 min für ein einzelnes Bild bei 80 Durchgängen) nicht geeignet - Durch GPU Computing wird die Technik nutzbar gemacht.[52] Abb. 3.3-3 zeigt das Ergebnis eines solchen Undersamplings.
3.3.3.2 3D-Ultraschall
Derzeit werden Lösungen zur visuellen Darstellung von Untersuchungsergebnissen auf der Basis von Grafikkarten für Krankenhäuser und Ärzte immer interessanter - so bietet z.B. die Firma TechniScan ein 3D-Ultraschallgerät names "Svara" an, das hochauflösende Bilder von Körperpartien darstellt und so z.B. zur Früherkennung von Brustkrebs eingesetzt werden kann.[53] Als Beispiel wird dabei ein 15 minütiger Scan angeführt, der ca. 35GB Daten zur Prozessierung erzeugt - eine Tesla C1060 berechnet die hochauflösende 3D-Ansicht aus den 35GB Einzelbilders in ca. 20 Minuten.[54] Die Markteinführung dieses spezifischen Systems steht noch aus.
3.3.3.3 BioChemie
In der Biochemie werden häufig Simulationsvorgänge benötigt, die in ähnliche Abfolgen wiederholt werden, wobei jeweils kleinste Parameter geändert werden um deren Auswirkungen abzuschätzen - ein Beispiel dafür ist die Surfaktantsforschung.
Surfaktante sind eine wichtige Grundlage von Reinigungsmitteln[56] und haben die Eigenschaft, die Oberflächenspannung von Flüssigkeiten zu reduzieren.[57] Zur Erforschung der Eigenschaften eines neuen Surfaktants waren bisher umfangreiche Testreihen nötig, die viel Zeit und Geld in Anspruch nahmen.
Die Temple University hat in Zusammenarbeit mit dem Marktführer Procter&Gamble eine Molekularsimulation zur Interaktion von Surfaktanten mit Dreck, Wasser und anderen Materialien auf der Basis einer Partikeldynamiksimulation des Department of Energy entwickelt. Durch die Optimierung den Codes auf GPU-Computing konnten bereits mit zwei Fermi-GPUs vergleichbare Rechenleistungen erreicht werden wie auf einem mit 128 CPU ausgestatteten Cray XT3 oder einem 1024 CPU IBM BlueGene/L.
Die Erweiterung auf weitere Fermi-Karten brachte für die Forscher im Endeffekt eine Beschleunigung der Leistung um den Faktor 16x gegenüber der Vorgängergeneration.[58]
3.3.4 Industrie
Auch in der Industrie gibt es rechenintensive Anwendungen, welche im Bereich Forschung und Entwicklung von GPU-Computing profitieren können. Speziell Bereiche, die bisher den Bereich Parallelcomputing beschäftigt haben, können in großem Maß beschleunigt werden.
3.3.4.1 Video Rendering
Videorendering und Encoding ist einer extrem rechenaufwändige Aufgabe, welche derzeit selbst Highend-Workstations auslastet. Speziell mit HD/UHD Formaten von mehr als 4000 Pixeln pro Bild wird der Prozess anspruchsvoll für jedes System. Bisher wird die gesamte Berechnung auf der CPU durchgeführt. [59]
3.3.4.2 SQL/CUDA Implementierung
Derzeit wird die Möglichkeit erforscht, Structured Query Language (SQL) über die CUDA-Parallelisierung zu beschleunigen. Zum Stand der Technik dieser Seminararbeit sind diese Bemühungen jedoch aufgrund von technischen Einschränkungen auf reine Leseoperationen beschränkt.[60]
Der Autor nennt hierbei folgende Einschränkungen:
- die Limitierung der Sprungoperationen - hierbei sind indirekte Sprungoperationen nicht erlaubt.
- Arrays im dynamischen Zugriff können nicht im Register abgelegt werden, sondern müssen im lokalen Speicher abgelegt werden, was Performanceeinbußen in der Größenordnung 100-150x für Operationen auf dieses Array darstellt.
- atomare Funktionen sind in CUDA nur für Integer-Werte verfügbar
Jeder dieser drei Punkte wird in naher Zukunft mit CUDA 3.0 behoben sein - es sind also in diesem Bereich noch weitere Arbeiten nötig, bis zu Performancesteigerungen oder Nutzen im Allgemeinen ein Fazit gezogen werden kann - für die Readonly (SELECT-)Operationen ist jedoch laut Benchmarks eine durchschnittliche Performancesteigerung um den Faktor 25 zu erwarten.[62]
3.3.4.3 Finanzmodellrechnung
Bond-Pricing
Die Firma Bloomberg setzt seit 2008 auf GPU Computing im Bereich Bond-Pricing - hierbei geht es um den Ausgabepreis von Bonds (Anleihen), wobei viele Einflussvektoren beachtet werden müssen.
Mit der Umstellung konnte bei gleicher Leistung eine Verringerung des Platzbedarfs um 95%, der Anschaffungskosten um 96% und 97% der laufenden Stromkosten realisiert werden[63]
Black-Scholes
In der Finanzmathematik spielt die monetäre Bewertung von Anlagen eine wichtige Rolle - zur Bewertung eines Preises für Optionen wurde 1973 das Black-Scholes Modell vorgestellt, das den Preis einer Option anhand von sechs Einflussvektoren festlegt:
- Kurs des Basiswertes
- Volatilität
- Ausübungspreis
- Laufzeit der Option
- Dividende
- Zinsniveau
Üblicherweise werden diese Einflussfaktoren mit griechischen Buchstaben bezeichnet, weshalb die Einflussfaktoren auch "die Griechen" genannt werden. [64]
Die Berechnung der Kurve folgt den Regeln der Wahrscheinlichkeitsrechnung, weshalb es möglich ist die Wahrscheinlichkeitsverteilung eines Preises für eine Option in einem mehrdimensionalen Gittermodell darzustellen - das Anwenden der sechs Einflussfaktoren kann, je nach Anzahl der Eingabewerte sehr rechenaufwändig sein. Auch hier kann GPU-Computing einen wichtigen Beitrag leisten, laut der AMD Corp. ist die Berechnung von Black Scholes Modellen einer der Bereiche der Finanzwirtschaft, der von GPU Computing am Besten profitieren kann [65]
3.3.4.4 Öl- und Gas-Industrie
In der Öl- und Gas-Industrie werden mit Hilfe von Wellenreflektionen im Boden Rückschlüsse auf die Bestandteile gezogen - über diese Methoden werden Rohstoffvorkommen lokalisiert, um diese industriell zu erschließen. Bei einer einzigen Analyse zur Lokalisierung z.B. eines Untersee-Ölvorkommens fallen ca. 10TB Daten an, in denen jedes einzelne Byte 10⁶ Operationen zur Auswertung benötigt - das Endergebnis ist in etwa die 10-fache Datenmenge, die im Anschluss visualisiert wird.[66] Da hierbei immer wiederkehrende Algorithmen und Strukturen auf die Daten angewendet werden, ist GPU Computing für diesen Bereich prädestiniert. Die Verarbeitung und Visalisierung dieser Daten ist zeitkritisch - eine schnelle Verarbeitung der gewonnenen Informationen kann für den Auftraggeber geschäftsentscheidend sein. [67]
3.3.4.5 Mathematik
Seit der Version 2010b unterstützt MATLAB, eine interaktive Umgebung für numerische Berechnungen[68], die Unterstützung von Berechnungen mittels CUDA. Die MATLAB-CUDA Unterstützung wird in den MATLAB-Varianten "Parallel Computing Toolbox" und "MATLAB Distributed Computing Server" umgesetzt. Die Nutzung der GPU-Computing Integration erfordert eine CUDA-GPU, welche mindestens die CUDA-Variante 1.3 unterstützt[69]
MATLAB nutzt die Integration transparent, d.h. existierende MATLAB-Implementationen profitieren automatisch von den Geschwindigkeitsvorteilen - alle nötigen Anpassungen werden automatisch im Hintergrund ausgeführt.[70]
Laut Mathworks, dem Hersteller von MATLAB, profitieren Implementierungen mit GPU-Computing von folgenden Vorteilen:
- Data manipulation on NVIDIA GPUs
- GPU-accelerated MATLAB operations
- Integration of CUDA kernels into MATLAB applications without low-level C or Fortran programming
- Use of multiple GPUs on the desktop (via the toolbox) and a computer cluster (via MATLAB Distributed Computing Server)[71]
3.3.5 Militärische Nutzung
Das Militär ist seit je her einer der großen Industriezweige des Supercomputings. Dieser Bereich mit seinen besonderen Anforderungen an Baugröße und Verarbeitungsgeschwindigkeit ist bereits jetzt einer der Hauptabnehmer für GPU-beschleunigte Endgeräte.
3.3.5.1 Radar-Signalverarbeitung
Das Militär setzt seit langem bemannte und unbemannte Dronen zur luftgestützten, sowie andere System wie etwa Satelliten zur satellitengestützten Überwachung vereinzelter Bereiche ein. Bisherige Systeme konnten immer nur einen kleinen Bereich überwachen. Aktuelle Entwicklungen machen laut Militärs die flächendeckende Überwachung ganzer Landabschnitte nötig[74]. Abb. 3.3-5 zeigt ein automatisch ausgewertetes Bild, wobei Unterschiede zur vorherigen Aufnahme farbig hervorgehoben werden.
Im militärischen Bereich ist die Verarbeitung eine sehr großen Anzahl von Bildern in kurzer Zeit entscheidend, ebenso entscheidend ist die Baugröße der Geräte, da jedes Kilo speziell in der Luftfahrt bares Geld kostet.[75]. Zu diesem Zweck werden aufgrund der Herausforderungen im Bereich Umweltfaktoren (stark schwankende Umgebungsbedingungen, Schockresistenz etc.) häufig eingebettete Systeme eingesetzt. Durch GPU Computing können dort Geräte derselben Leistung in einem Buchteil der Baugröße gebaut werden, was die Verarbeitung bei gleich bleibender Leistung mit einem Zehntel der Stromaufnahme und einem Bruchteil der Baugröße ermöglicht. Beispielhaft zeigte GE auf der GTC 2009 die in Abb. 3.3-6 gezeigte neue Generation eines Radarverarbeitungsgerätes, das im Vergleich zur vorgehenden Generation den Stromverbrauch von 2000W auf 200W senken, das Gewicht von 105 auf 18lbs und die Größe von 4cu. ft auf 0.8 cu.ft. bei gleichbleibender Verarbeitungsgeschwindigkeit (-575GFLOPS) senken konnte.[76]
3.3.5.2 VSIPL
Auch die "Vector, Signal and Image Processing Library" (VSIPL), eine Sprache zur Visualisierung von Daten, besitzt eine GPU-Implementierung, die unter Anderem militärisch zur Verarbeitung von Sensordaten, etwa in der Steuerung von Cruise Missiles eingesetzt wird. Weitere Anwendungsfelder sind ebenso die Radarbildverarbeitung, die Auswertung von gesammelten Videodaten oder die Infrarotunterstützung.[77] Hierbei wird eine Beschleunigung der Aufgaben im Faktor 20-350x erreicht. [78]
3.3.6 Kryptographie
Die Kryptographie ist ein Forschungsfeld, das bisher nur sehr wenig dem Bereich der Anwendungsfelder des GPU-Computings zugerechnet wurde - im Folgenden wird jedoch dargelegt, das dieses Anwendungsfeld mit seinen spezielle Anforderungen an Verarbeitung, Sicherheit und Integrität viele Aufgaben enthält, die durch die Neuerungen im Bereich GPU Computing umsetzbar werden. Hierzu ist es zunächst nötig, auf bisherige Konzepte der computergestützten Kryptografie sowie deren Nachteile einzugehen. Im Anschluss wird dann der mögliche Einfluss des GPU-Computings auf diesen Anwendungsbereich dargelegt sowie die bestehenden Einschränkungen genannt.
3.3.6.1 Bisherige Konzepte
Zunächst die Darlegung für die Analyse einflussreichen bisherigen Konzepten und deren Einschränkungen.
3.3.6.1.1 Trusted Computing Platform Alliance (TCPA)
TCPA ist ein Verbund verschiedener Maßnahmen & Konzepte, PCs besser als bisher gegen schädliche Hard & Software abzusichern. TCPA und die untergeordneten Produkte & Standards werden von der Trusted Computing Group (TCG) verwaltet und weiterentwickelt. Bei der TCG handelt es sich um einen Verbund aus über 100 Firmen, darunter z.B. Infineon, Intel, Microsoft und AMD [79]
TPM
Ein Teil von TCPA ist die Implementierung des Trusted Platform Module (TPM). Das TPM ist ein Mikrocontroller, der die Generierung von Schlüsseln und die Authentifizierung von Komponenten oder der Platform selbst vornimmt. Unterstützte kryptographische Verfahren beinhalten RSA und HMAC - zusätzlich wird die SHA-1 Hashfuntion genutzt. TPM führt eine Whitelist "zugelassener" Hard- und Software, alle nicht authentifizierten Geräte und Programme sollen in der Theorie nicht ausgeführt oder genutzt werden können. Die Implementierung von TPM kann sowohl in Hardware- als auch in Software-Form erfolgen.[80] Eine TPM Zertifizierung umfasst Informationen zu Hersteller, Teilenummer und TPM-Version [81]
Kritikpunkte
Als Kritikpunkt an TCPA prägte der Chaos Computer Club (CCC) den Satz "TCPA schützt den Rechner vor dem Benutzer"[82]. Zusätzliche Kritikpunkte umfassen die Beschränkung des Schlüsselmanagements auf den Hersteller und die Authorisierung und Zertifizierung von Stellen zur Schlüsselvergabe - auch wäre es möglich Software über die in TPM integrierte Zertifikatsauthentifizierung fest an eine Hardware zu binden, was zu weiteren lizenzrechtlichen Problemen führen würde. Der CCC hat hierzu im Rahmen der CeBit 2003 ein Forderungsdokument erstellt, welchen in Anhang 1 ersichtlich ist.
Softwareimplementierungen sollen denselben Sicherheitsanforderungen wie die Hardwarelösungen genügen - wie dies allerdings erreicht werden soll, lässt die Spezifikation offen. Weiterhin ist nicht definiert, wie Softwareinkompatibilitäten vom Betriebssystem zu melden sind - hier wird der Großteil der Erkennung und Meldung dem Betriebssystem überlassen, das nicht in jedem Fall als trusted component angesehen werden kann[83]
3.3.6.1.2 Kryptographische Beschleuniger & Co-Prozessoren
Kryptografische Beschleuniger sind in sich geschlossene Systeme die alle eingehenden Daten verschlüsseln und diese dann übertragen, die Realisation ist meist hardwareseitig - Beispielhaft sei hier das System Sichere Inter-Netzwerk Architektur (SINA) des Bundesamtes für Sicherheit in der Informationstechnik (BSI) genannt, welche eine Hardwarelösung der BSI-eigenen Kryptografie "Libelle" hardwareseitig implementiert. SINA nutzt in einigen Ausbauformen sogenannte Thin-Clients, die über ein auf der SINA-Box zentralisiert verwaltetes, virtualisiertes System arbeiten. Der Gesamte ein- und ausgehende Traffic wird verschlüsselt[84]
Der große Vorteil dieses Systems liegt in der garantierten Sicherheit durch die zentrale Verwaltung - das System ist für die Geheimhaltungsstufe "Streng Geheim" zertifiziert. Der Nachteil sind die Bindung an eben diesen Hersteller, sowie den entsprechend hohen Anschaffungskosten. Zusätzlich sind die Bandbreitenbeschränkungen zu beachten, da jeder Traffic durch den Kryptoprozessor getunnelt weden muss - aktuelle Varianten erreichen ca. 80Mbit/s.[85]
Ein weiteres Beispiel sind die Kryptografischen Beschleuniger der Firma Sun, die die SSL-Verwaltung von der CPU auf diesen spezialisierten Co-Prozessoren übertragen und so die CPU entlasten. Dabei werden ca. 13.000 Operationen pro Sekunde pro Board mit einem 1024 Bit SSL-Schlüssel erreicht - mehrere Board (bis zu sieben) können kombiniert werden[86] Die Implementierung ist wie in Abb. 3.3-7 zu sehen als PCIe Karte ausgeführt.
3.3.6.2 GPGPU Kryptographie
Wie zu sehen ist, wurde bisher spezialisierte Hardware zur Implementierung von kryptographischen Algorithmen eingesetzt - als Ursachen dafür gibt Manavski im Jahre 2007 die folgenden Punkte an, welche allerdings mit der Einführung des CUDA-Interfaces auf breiter Front angegangen werden:
- die fehlende Repräsentation von Integer-Werten und Bitoperationen auf der GPU
- limitierte GPU-API
- beschränktes Speichermodell, Zugriffsbeschränkungen in diesem
- Overhead bei der Nutzung von Pipelining
GPU-Computing in der Kryptografie hätte neben der Kosteneinsparung durch die Nutzung von in der Masse verfügbarer und damit im Kostenaspekt günstiger verfügbarer Hardware weitere Vorteile: z.B. ist in einem Spyware-kompromittierten System die GPU die einzige vertrauenswürdige Komponente, da diese zu keinem Zeitpunkt den zu verschlüsselnden Klartext im Systemspeicher ablegt, wo andere kompromittierte Komponenten auf diese zugreifen könnten [88]
Sidechannel Attacks
Ein Problem der Kryptografie sind Sidechannel Attacks. Diese Art des Angriffs tauchte gegen Ende der 1990er Jahre auf und konzentriert sich auf das Beobachten von sogenannten "Sidechannels" eines Gerätes wie etwa dem Stromverbrauch, der Taktung oder auch akustische Veränderungen (z.B. Drehzahl des Lüfters [89]). Ein wichtiges Mittel dieser Angriffsart ist die differentielle Fehleranalyse, bei dem Fehler in das Gerät eingebracht werden und das Ergebnis (auf den Sidechannels) mit dem Verhalten vor dem Einbringen des Fehlers vergleichen werden.[90] Beispielsweise ändert sich der Stromverbrauch einer Grafikkarte signifikant mit jedem Exponenten einer Verschlüsselung mit einem Public-Key Algorithmus.[91]
Durch die Unabhängigkeit des Speichers und der Grafikkarte vom restlichen System können die klassischen Sidechannel Attacks nur begrenzt auf GPU Kryptografie angewendet werden, was zumindest kurzfristig einen Vorteil gegenüber der CPU Kryptografie bietet. Als Beispiel für potentiell mögliche GPU-Sidechannel Angriffe sei die Beobachtung der Ausführungsgeschwindigkeit bzw der Ausführungszeit eingeschleusten Programme, sowie der Stromverbrauch oder die Hitzeabgabe der GPU genannt.[92]
Angriffe auf kryptografische Daten mit GPU-Computing
Es ist ebenso möglich die Technik der Verschlüsselung (selber Schlüssel wird auf n Datenblöcke angewendet) so zu verändern das n Schlüssel auf einen Datenblock angewendet werden. Dies bedeutet, das Parallel GPU Computing auch für Angriffe auf verschlüsselte Daten sehr gut einsetzbar ist, da n Schlüssel parallel getestet werden können. [93] Als praktisches Beispiel kann auf dem kürzlich von Amazon eingeführten EC2 GPU Computing Node effektiv SHA-1 Passwort-Hash-Decryption betrieben werden, hierbei werden zu einem Preis von 2,10$/Stunde eine Performance von etwa 3.4Mrd Kombinationen/s erreicht.[94]
3.3.6.3 Limitationen
Bis vor kurzem galt das Argument: Weder Symetrische noch asymetrische Verschlüsselungsalgorithmen fallen in die in der Sektion GPGPU vorgestellten Kandidaten für GPU-Portierungen [95] Allerdings ist diese Aussage zum aktuellen Stand der Technik nicht mehr uneingeschränkt gültig - vielmehr wurden bereits viele Probleme der GPU-Kryptografie mit der Einführung der CUDA-Interfaces gelöst, es bleiben jedoch weitgreifende Einschränkungen für diesen Bereich bestehen. So sind etwa rekursive Probleme mit GPUs nur über Umwege oder gar nicht zu lösen, wahlfreie Zugriffe auf das CUDA-Speichermodell sind in einigen Punkte noch zu unflexibel um weit verbreitete Algorithmen auf der GPU effektiv implementieren zu können.
4 Schlussbetrachtung und Ausblick
Nachdem nun Anwendungsfelder, deren Einflussfaktoren und bestehende sowie mögliche Anwendungen von GPU Computing ergründet wurden, soll im Abschluss ein Fazit gezogen werden um die Anwendungsfelder massiv parallel programmierbarer GPUs im wissenschaftlichen Bereich abzugrenzen. Abschließend soll die persönliche Einschätzung des Autors zur zukünftigen Entwicklung von GPU-Computing in diesem Bereich dargelegt werden.
4.1 Abschlussbetrachtung
Nach Abschluss der Betrachtung lässt sich sagen, das GPU Computing einen wichtigen Beitrag zur Wissenschaft leisten kann - insbesondere in kostensensitiven Bereichen werden durch GPU-Computing Leistungen verfügbar, die bisher nur sehr kostspielig im Rahmen von großen Clustersystemen verfügbar waren. Auf der anderen Seite können Geräte wie z.B. in der Luftfahrtanwendung deutlich kleinere Bauformen annehmen bei selber Leistung, was einen Kostenvorteil in der Beförderung von Gewicht verspricht.
Die zentrale Frage bei GPU-Computing ist die Frage der Parallelisierbarkeit eines Problems - kann ein Problem nicht in kleinere Teilprobleme zerlegt werden oder bedingen sich Teilprobleme gegeneinander, so kann mit der Parallelisierung der Aufgabe nichts gewonnen werden. Es lässt sich sagen, das in wissenschaftlichen Bereichen, in denen wiederholt gleichartige Operationen auf ein Muster ausgeführt werden, wie etwa in der Molekulardynamik oder der Bioinformatik, große Fortschritte und Geschwindigkeitszuwächse mit GPU-Computing erzielt werden können und werden. Die Gesetze der Fluiddynamik stellen hierbei einen zentralen Bereich dar, der von der Molekularchemie bis zur Astronomie der Verteilung von Galaxien eine Rolle spielen und durch GPU-Computing erheblich schneller berechnet werden können.
Ein Problem des GPU-Computing ist derzeit noch die Schnittstellengeschwindigkeit von PCI-Express bzw. der Anbindung desselben an den Systemspeicher, was die Einsatzmöglichkeiten noch einschränkt. Sollte der derzeitige Trend anhalten, werden für dieses Problem sicherlich integrierte Lösungen gefunden werden und GPU-Computing damit noch breiter einsetzbar. GPU-Computing ist damit abhängig von der zukünftigen Entwicklung der Bandbreiten im Grafikkartensektor.
Eine weitere Einschränkung ist derzeit noch das Memory-Modell von CUDA, das für einige Situationen zu unflexibel ist - dies wird sich allerdings in naher Zukunft mit dem Erscheinen von CUDA3.0 entscheidend ändern.
Auch im Sicherheitsbereich sind aufgrund der Einschränkungen der GPU noch einige Nachbesserungen nötig, sollte GPU-Computing für diesen Bereich generell einsetzbar sein - so müssten die Fähigkeiten zur generellen Programmierung weiter ausgebaut werden, so dass etwa rekursive Probleme mit GPUs lösbar werden. Des Weiteren ist zu bedenken, das gerade im Sicherheitsbereich viele serielle Probleme existieren, die nicht parallelisiert werden können und so keinen Vorteil aus der GPU-Parallelisierung ziehen können.
Weiterhin ist sicherlich entscheidend, ob Programmierer bereit sind, sich auf das in vielen Punkte neuartige Konzept einzulassen - so müssen etwa zur effektiven Verwendung von CUDA 6 verschienden Memoryspaces, das CUDA-Threading sowie die Kommunikation zwischen eben diesen CUDA Threads verstanden und angewandt werden können.
4.2 Potentialeinschätzung
Meiner Einschätzung nach wird GPU Computing in den nächsten Jahren eine wichtige Rolle einnehmen, speziell im Bereich Simulation und Signalverarbeitung. Ob sich GPU Computing außerhalb des wissenschaftlichen Bereiches durchsetzen können wird, bleibt abzuwarten und hängt maßgeblich davon ab, wie sich die Schnittstellenbandbreiten und technologische Entwicklung, wie etwa der Intel Larabee x86/GPU Hybrid oder die NVIDIA Optimus Plattform entwickeln werden und wie der Markt diese annehmen wird. Eine Kombination der Hybride mit GPU-Computing wäre aufgrund der erhöhten Bandbreitenmöglichkeiten zu Speicher und CPU denkbar und möglich. Mit diesem Konzept wären auch integrierte Sicherheitslösungen möglich, die Vektorberechnungen für Verschlüsselungen auf gesicherten Leitungen mit der GPU austauschen.
Eine große Herausforderung für das GPU-Computing der Zukunft wird bei der weiter steigenden Anforderung an Performance die Kühlung sein, hierbei werden Spezialfirmen ein neues Geschäftsfeld realisieren können, die sich bisher auf Hochleistungssysteme konzentriert haben - speziell SGI und Cray haben in diesem Bereich bereits seit Jahrzehnten Expertise, die in den kommenden Jahren wieder von großer Bedeutung werden wird.
Im industriellen Bereich wird GPU Computing auf absehbare Zeit aufgrund der doch recht spezialisierten Möglichkeiten ein Nischenprodukt bleiben - einige Industrien werden hier aber ihre eigenen Zweige und Spezialisierungen aufbauen - insbesondere der industrielle Signalauswertung, wie etwa die Suche nach Mineral- oder Ölvorkommen benötigt in den nächsten Jahren immer höhere Rechenleistungen aufgrund der Entwicklung feinerer Messgeräte und -techniken.
5 Anhang
6 Fußnoten
- ↑ Vgl. Latham (1995), S.105
- ↑ Vgl. Fachlexikon Computer (2003), S.718
- ↑ Vgl. Latham (1995), S.145
- ↑ Vgl. Haenselmann (1996), S.12
- ↑ Ebenda
- ↑ Vgl. Sanders & Kandrot (2011), S.5f
- ↑ Vgl. nach Kirk & Hwu (2010), S. 3
- ↑ Vgl. Bohles (2008), S.1
- ↑ Vgl. Kirk & Hwu (2010), S.39
- ↑ Vgl. Kirk & Hwu (2010), S.21f
- ↑ Ebenda
- ↑ Vgl. Sanders & Kandrot (2011), S.4
- ↑ Ebenda
- ↑ Vgl. ATI/AMD (2009)
- ↑ Vgl. Sanders & Kandrot (2011), S.5f
- ↑ Ebenda
- ↑ Ebenda
- ↑ Vgl. Fermi Whitepaper (2010), S.5
- ↑ Ebenda
- ↑ Vgl. NV PSC1 (2010)
- ↑ Vgl. NV PSC2 (2010)
- ↑ Vgl. NV Press Images (2010)
- ↑ Vgl. TOP500 SC (2010)
- ↑ Vgl. NV Press SC (2010)
- ↑ Vgl. NV HPC1 (2010)
- ↑ Vgl. nach Buck (2007), S.18
- ↑ Vgl. S.7
- ↑ Vgl. NV Press Images (2010)]
- ↑ Vgl. Sanders&Kandrot (2011),S.18f
- ↑ Vgl. Kirk&Hwu (2010), S.205
- ↑ Vgl. Khronos (2009)
- ↑ Vgl. Klöckner GTC2010 (2010), S.14
- ↑ PGI Group (2009)
- ↑ Ebenda
- ↑ Eine weiterführende Erklärung ist z.B. unter [1] zu finden
- ↑ Vgl. Sharma & Joshi (2010)
- ↑ Vgl. Munoz (2010), S.21
- ↑ Ebenda
- ↑ Vgl. Sun today (2010)
- ↑ Vgl. GTC2010, Track Changes in the Sun, S.2
- ↑ Vgl. NASA (2005)
- ↑ Vgl. GTC2010, Track Changes in the Sun, S.4
- ↑ Vgl. Sun today (2010)
- ↑ Vgl. GTC2010, Track Changes in the Sun, S.27f
- ↑ Ebenda
- ↑ Vgl. NV SC1 (2009), S.3
- ↑ Ebenda
- ↑ Vgl. Pande (2010)
- ↑ Vgl. SETI (2010)
- ↑ Vgl. NV Press (2008)
- ↑ Vgl. Knoll et.al. (2008), S.6
- ↑ Vgl. Knoll et.al. (2008), S.6ff
- ↑ Vgl. Sanders & Kandrot(2011), S.8f
- ↑ Ebenda
- ↑ Vgl. Stone(2010), S.10
- ↑ Vgl. Sanders & Kandrot (2011), S.10
- ↑ Vgl. Junqueira et.al (1984), S.298
- ↑ Vgl. Sanders & Kandrot (2011), S.10f
- ↑ Vgl. NV & Adobe Whitepaper(2010)
- ↑ Vgl. Bakkum & Skadron (2010), S.8
- ↑ Ebenda
- ↑ Ebenda, S.9
- ↑ Vgl. NV SC1 (2009), S.12
- ↑ Vgl. Lanzetta (1998), S.23
- ↑ Vgl. AMD HPC1 (2010), Seite 2
- ↑ Vgl. CCGV Oil+Gas (2010), S.8
- ↑ Vgl. CCGV Oil+Gas (2010), S.4
- ↑ Vgl. Higham & Higham (2000), S.XIX
- ↑ Vgl. NV+Matlab (2010)
- ↑ Ebenda
- ↑ Vgl. Mathworks (2010)
- ↑ Vgl. Berlin GTC2009(2009), S.10]
- ↑ Vgl. Rogan GTC2010 (2010), S.15
- ↑ Vgl. Rogan GTC2010 (2010)
- ↑ Vgl. MotionDSP (2010)
- ↑ Vgl. Berlin GTC2009 (2009), S.10
- ↑ Vgl. Kerr et.al. (2008), S.1
- ↑ Vgl. GRTN (2009)
- ↑ Vgl. TCG Members (2010)
- ↑ Vgl. Cook & Keromytis, S.95
- ↑ Ebenda
- ↑ Vgl. CCC (2003)
- ↑ Vgl. Cook & Keromytis, S.95ff
- ↑ Vgl. BSI (2010)
- ↑ Ebenda
- ↑ Vgl. Sun (2000), S.4
- ↑ Vgl. Manavski (2007), S.1
- ↑ Vgl. Cook & Keromytis, 2006, S.33
- ↑ Vgl. Shamir & Troma (2004)
- ↑ Vgl. Cook & Keromytis, 2006, S.33
- ↑ Vgl. Kocher (1996), S.104ff
- ↑ Vgl. Cook & Keromytis (2006), S.34
- ↑ Vgl. Cook & Keromytis (2006), S.64
- ↑ Vgl. Roth (2010)
- ↑ Vgl. Cook & Keromytis (2006), S.17
7 Abkürzungsverzeichnis
| Abkürzung | Bedeutung |
|---|---|
| AFR | Alternate Frame Rendering |
| ALU | Arithmetic Logical Unit (Arithmetisch Logische Einheit) |
| API | Application Programming Interface |
| Bit | Binary Digit |
| CCC | Chaos Computer Club (e.V.) |
| CUDA | Compute Unified Device Architecture |
| GPU | Graphics Processing Unit |
| HMAC | Hash-based Message Authentication Code |
| IT | Informationstechnik |
| NASA | National Aeronautics and Space Administration |
| OpenCL | Open Computing Language |
| OpenGL | Open Graphics Library |
| RSA | Verschlüsselungsalgorithmus
Anfangsbuchstaben der Erfinder Rivest, Shamir & Adleman |
| SETI | Search for Extraterrestrial Intelligence |
| SHA-1 | Secure Hash Algorithm 1st |
| SIMD | Single Instruction, Multiple Data |
| SLI | Scalable Link Interface
Scanline Interleave |
| SSE(2,3,4) | Streaming SIMD Extensions |
| VSIPL | Vector, Signal and Image Processing Library |
8 Abbildungsverzeichnis
| Abb.-Nr. | Abbildung |
|---|---|
| 2.1-1 | Historische Leistungsentwicklung bei parallelen Aufgaben |
| 2.3-1 | Produktlogo der Nvidia Tesla Serie |
| 3.1-1 | NVIDIA S2050 Rack für GPU-Computing mit 4 Tesla-GPUs |
| 3.2-1 | Ablauf der Ausführung eines CUDA Programms |
| 3.2-2 | Nvidia Fermi Arch Grafikkarten, hier die Nvidia Quadro Serie |
| 3.2-2 | Das offizielle OpenCL Logo der Khronos Group |
| 3.3-1 | Aus mehreren FullImages errechnetes mutispektrales Bild der Sonne |
| 3.3-2 | Eine beispielhaft durch GPU-Computing erzeugte Galaxienanordnung |
| 3.3-3 | Ursprung und Ergebnis eines durch Undersampling behandelten Röntgenbildes |
| 3.3-4 | Beispielhaft berechnete Ion-Verteilung an einem Ribosom |
| 3.3-5 | Mit GPU-Computing behandeltes Radarbild mit Highlighting der Differenzen |
| 3.3-6 | Neuartiges GPU-Radarverarbeitungsgerät für das Militär |
| 3.3-7 | Sun Crypto Accelerrator 6000 - ein kryptografischer Beschleuniger für SSL |
9 Tabellenverzeichnis
| Abb.-Nr. | Abbildung |
|---|---|
| Tab.1 | Multi-GPU Rendering Modi |
10 Quellenverzeichnis
10.1 Monographien
| Bohles (2008) | Dietrich Bohles: Parallele Programmierung spielend gelernt mit dem Java-Hamster-Modell, GWV Fachverlag, Wiesbaden, 2008, ISBN 3-835-10229-X |
| Cook & Keromytis (2006) | Debra Cook & Angelos Keromytis, Columbia University: CryptoGraphics - Exploiting Graphics Cards for Security. 2006. Springer Science+Business Media. New York. ISBN 0-387-29015-X |
| Fachlexikon Comuter (2003) | Dr.Joachim Weiß, Michael Bauer(Hrsg.): Fachlexikon Computer. 2003. F.A. Brockhaus GmbH, Leipzig - Mannheim, ISBN 3-7653-0250-3 |
| Henselmann (1996) | Thomas Haenselmann: Raytracing - Grundlagen, Implementierung, Praxis. 1996. Addison-Wesley Verlag, Bonn. ISBN 3-89319-922-5 |
| Higham & Higham (2000) | Desmond J. Higham & Nicholas J. Higham: MATLAB Guide. 2000. SIAM Verlag, Philadelphia. ISBN 0-89871-469-9 |
| Junqueira et.al (1984) | Luiz Carlos Uchôa Junqueira,José Carneiro,Manfred Gratzl: Histologie - Neue Approbationsordnung, Springer Medizin Verlag, 1984. ISBN 3-540-21965-X |
| Kirk & Hwu (2010) | David B. Kirk, Wen-mei W. Hwu: Programming Massively Parallel Processors - A Hands-on Approach. 2010. Morgan Kaufmann Publishers. ISBN 0-12-381472-3 |
| Lanzetta (1998) | Gennaro Lanzetta: Erfolgreich mit Optionen, FinanzBuch Verlag, 1.Auflage, 1998 |
| Latham (1995) | Roy Lathan: The Dictionary of Computer Graphics and Virtual Reality. 2. Auflage,1995. Springer Science+Business Media. New York. ISBN 0-387-94405-2 |
| Munoz (2010) | Andrew James Munoz: Three-Dimensional Tsunami modeling using GPU-SPHysics, Senior Scholars Thesis,Texas A&M, April 2010 |
| Sanders & Kandrot (2011) | Jason Sanders & Edward Kandrot: CUDA by Example - An Introduction to General Purpose GPU Programming. 2011. Addison-Wesley Verlag, Boston, ISBN 0-13-138768-5 |
| Sharma & Joshi (2010) | Sharma & Joshi: Design and Implementation of Cover Tree Algorithm on CUDA-Compatible GPU, International Journal of Computer Applications (0975 – 8887), Juni 2010 |

