Title data
Werner, Tim:
Implementierung und Untersuchung paralleler Volumen-Rendering-Techniken für Graphikprozessoren.
Bayreuth
,
2013
.
- (Bayreuth Reports on Parallel and Distributed Systems
; 5
)
(
Bachelor thesis,
2013
, University of Bayreuth, Faculty of Mathematics, Physics and Computer Sciences)
|
|||||||||
Download (21MB)
|
Abstract
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.
Abstract in another language
This thesis starts with an explanation and an OpenCL-implementation of a standard volumetric ray caster. Therefore the necessary algorithms from computer graphics and their mathematical and physical derivations are explained. Furthermore some simple optimizations are presented, which particularly make use of the GPU hardware. Also some simple improvements to the image quality are explained and implemented. Those improvements make the three dimensional structures of the volumetric data better visible. Moreover it is possible by those improvements to highlight the areas of interest of the volumetric data. Furthermore this ray caster runs already at high frame rates, which allow interactivity. Then the performance of this volumetric ray caster shall be improved by empty space skipping. For this empty space skipping an octree is used. Especially it was a goal to improve the performance by adapting the octree ray caster to the GPU hardware. In particular it is tried to increase the SIMD-efficiency and thus the performance by an adept combination of the octree traversal and the rendering of the contents of the octreenodes. By those optimizations the performance of rendering volumetric data with many empty spaces is greatly increased. Next it will be tried in this thesis to increase the performance of the ray caster even further by implementing persistent threads. However this attempt failed. So the performance and the SIMD-efficiency both are decreased by those persistent threads. Finally the execution of the improved octree ray caster on the GPU shall be examined. Therefore some measurements by self written benchmarks are taken. By the discussion of the measurement results it turns out, that the octree ray caster scales linearly with the GPU clock and the amount of the GPU's multiprocessors. Since this algorithm just uses a small fraction of the maximum memory bandwidth, it doesn't scale with the memory clock. The memory accesses of this octree ray caster are already very local. Thus the caches of the GPU are used efficiently. That way the memory latencies can be very well hidden, so that they don't decrease the performance. However the octree ray caster just harnesses a small to medium amount of the maximum processing power of the GPU. This is mostly caused by a too low occupancy and an uneven utilization of the different resources of the GPU. However during the discussion some optimization approaches are suggested, which might increase the amount of harnessed processing power. Although some simple graphical optimizations are introduced and implemented, it wasn't a goal of this thesis to greatly increase image quality of the ray caster or to improve its performance by improved approximation methods. Because with many of those improvements it wouldn't have been possible to adopt those especially to the GPU's architecture. Also this thesis mainly tries to increase the ray caster's SIMD-efficiency. However this thesis doesn't try in contrast to many other GPGPU-works to optimize the memory accesses of the ray caster.
Further data
Item Type: | Bachelor thesis |
---|---|
Keywords: | Computergraphik; Volumen-Rendering; Parallelverarbeitung; Graphikprozessor |
DDC Subjects: | 500 Science |
Institutions of the University: | Faculties > Faculty of Mathematics, Physics und Computer Science > Department of Computer Science Faculties Faculties > Faculty of Mathematics, Physics und Computer Science |
Language: | German |
Originates at UBT: | Yes |
URN: | urn:nbn:de:bvb:703-opus4-11040 |
Date Deposited: | 24 Apr 2014 14:53 |
Last Modified: | 10 May 2017 10:16 |
URI: | https://epub.uni-bayreuth.de/id/eprint/156 |