3 search hits
-
Implementierung und Untersuchung paralleler Volumen-Rendering-Techniken für Graphikprozessoren
(2013)
-
Tim Werner
- Zuerst soll in dieser Arbeit ein Standardverfahren für einen
Volumenraycaster auf einer GPU in OpenCL implementiert und erläutert
werden. Hierbei werden kurz die benötigten Algorithmen aus der
Computergraphik sowie deren mathematischen und physikalischen
Herleitungen erklärt. Dabei werden einige einfache Optimierungen
vorgestellt, welche spezifisch auf die Hardware der GPU eingehen.
Auch werden einfache Verbesserungen erläutert, welche rein optischer
Natur sind. Durch deren Implementierung lassen sich die
dreidimensionalen Strukturen der Volumendaten besser erkennen.
Zusätzlich ist es mit diesen Verbesserungen möglich die interessanten
Bereiche der Volumendaten hervorzuheben. Des Weiteren läuft dieser
implementierte Standard-Volumenraycaster auf moderner Hardware bereits
mit Bildwiederholraten, welche Interaktivität ermöglichen.
Danach soll dieser Standard-Volumenraycaster durch
Empty-Space-Skipping, also durch das Überspringen von leeren Bereichen
innerhalb der Volumendaten, mit Hilfe eines Octrees beschleunigt
werden. Hierbei ist es das Ziel den Raycaster mit dem Octree auf die
spezifischen Gegebenheiten der GPU anzupassen. Insbesondere soll
versucht werden die SIMD-Effizienz und damit die Performance durch
eine geschickte Kombination von der Octreetraversierung und dem
Zeichnen des Inhalts eines Octreeknotens zu erhöhen. Durch diese
Octreeoptimierung lässt sich die Performance des Raycasters bei
Volumendaten mit vielen leeren Bereichen stark erhöhen.
Als Nächstes wird in dieser Arbeit versucht, den Raycaster weiter mit
persistenten Threads zu beschleunigen. Dieser Versuch scheitert
jedoch. So sind sowohl die Performance als auch die SIMD-Effizienz mit
persistenten Threads stets geringer als ohne persistente Threads.
Abschliessend soll die Ausführung des Raycasters mit Octree auf der
GPU näher untersucht werden. Zuerst werden hierfür Messungen durch
selbst erstellte Benchmarks vorgenommen. Bei der darauffolgenden
Diskussion der Messergebnisse zeigt es sich, dass das Verfahren linear
mit dem Chiptakt und der Zahl der Multiprozessoren skaliert. Da es nur
einen kleinen Bruchteil der maximalen Speicherbandbreite benötigt,
skaliert es nicht mit dem Speichertakt. Die Speicherzugriffe dieses
Verfahrens sind bereits so lokal, dass die GPU-Caches gut ausgenutzt
werden. Deshalb können die Speicherzugriffszeiten so gut verborgen
werden, dass sie sich nicht negativ auf die Performance auswirken. Die
Rechenleistung der GPU lässt sich durch das Verfahren jedoch nur
mittelmässig bis schlecht ausnutzen. Diese niedrige Ausnutzung ist vor
allem auf eine zu niedrige Occupancy und auf eine zu ungleichmässige
Auslastung der verschiedenen Ressourcen der GPU zurückzuführen. Jedoch
ergeben sich aus den Untersuchungen noch einige weitere
Optimierungsansätze, um die erzielte Rechenleistung und damit die
Performance zu erhöhen.
Obwohl kurz graphische Optimierungen in der Arbeit vorgestellt und
implementiert werden, so ist es kein Ziel dieser Arbeit die
Bildqualität des Raycasters massiv zu verbessern oder diesen durch
verbesserte Näherungslösungen oder Ähnliches zu beschleunigen. Bei
vielen dieser Verbesserungen wäre es nur schlecht möglich gewesen
spezifisch auf die Eigenschaften der GPU einzugehen. Auch beschäftigt
sich diese Arbeit hauptsächlich mit der Verbesserung der
SIMD-Effizienz und im Gegensatz zu vielen anderen GPGPU-Arbeiten nur
wenig mit der Optimierung der Speicherzugriffe.
-
Reduktion des Kommunikationsaufwands iterierter Runge-Kutta-Verfahren für dünnbesetzte gewöhnliche Differentialgleichungssysteme
(2012)
-
Markus Straubinger
- Iterierte Runge-Kutta (IRK) Verfahren sind eine Klasse von Lösungsverfahren für Anfangswertprobleme gewöhnlicher Differentialgleichungssysteme (DGL), welche ein hohes Parallelisierungspotential besitzen. Während Implementierungen für dichtbesetzte DGL regelmäßig Vektoren der Größe der DGL austauschen müssen, können spezialisierte Löser Kommunikationskosten einsparen, indem nur die wenigen tatsächlich benötigten Vektorelemente ausgetauscht werden.
In dieser Arbeit werden parallele Implementierungen von IRK-Verfahren für verteilten Adressraum betrachtet. Es werden zunächst allgemeine Implementierungen für dichtbesetzte DGL vorgestellt. Anschließend wird deren Kommunikation für dünnbesetzte DGL und Probleme mit beschränkter Zugriffsdistanz optimiert. Die entstandenen Implementierungen werden in Hinsicht auf Laufzeit und Skalierbarkeit untersucht. Dafür werden Messungen auf verschiedenen Rechnersystemen mit unterschiedlichen dünnbesetzten DGL ausgewertet. Dabei wird festgestellt, dass eine Implementierung der Kommunikation sowohl für dünnbesetzte DGL als auch für Probleme mit beschränkter Zugriffsdistanz besonders gut geeignet ist.
-
Parallele Implementierung und Analyse eines expliziten Adams-Verfahrens
(2010)
-
Konrad Ley
- Das Adams-Bashforth-Verfahren ist ein numerisches Verfahren zur Lösung von gewöhnlichen Differentialgleichungen. In dieser Arbeit werden mehrere Implementierungsvarianten des Adams- Bashforth-Verfahrens vorgestellt, verglichen und analysiert. Zunächst arbeiten die Implementierungen sequentiell. Später werden die sequentiellen Implementierungen für den Einsatz auf einem Parallelrechner erweitert. Dabei wird besonderen Wert auf die Ausnutzung der Speicherhierarchie durch eine geschickte Organisation der Berechnungsreihenfolge gelegt. Außerdem wird bei der Synchronisation darauf geachtet, dass die Implementierungen auf Mehrkernprozessoren mit einer Shared-Memory- Architektur gut skalieren. Ziel ist die Ausführungszeit des Adams-Bashforth-Verfahrens zu minimieren.