TU Darmstadt / ULB / TUbiblio

Visual Insights into Memory Behavior of GPU Ray Tracers

Bülow, Maximilian Alexander von (2024)
Visual Insights into Memory Behavior of GPU Ray Tracers.
Technische Universität Darmstadt
doi: 10.26083/tuprints-00027476
Dissertation, Erstveröffentlichung, Verlagsversion

Kurzbeschreibung (Abstract)

Ray tracing is a fundamental rendering technique that typically projects three-dimensional representations of a scene onto a two-dimensional display. This is achieved by perspectively sampling a set of rays into the scene and computing intersections against the relevant geometry. Secondary rays may be sent out from these intersection points, allowing for physically correct global illumination on the reverse photon direction.

Real-time rendering has historically used classical rasterization pipelines, which are straightforward to implement on hardware as they form a data-parallel problem projecting the whole scene into the coordinate system of the image. In contrast, task-parallel ray tracing suffers from incoherency between rays. However, recent advances in ray tracing have led to more efficient approaches, resulting in even more efficient embedded hardware implementations. While these approaches are already capable of rendering realistic images, further improvements in run-time performance can compensate for computational time to achieve higher framerates, display resolutions, ray-tracing recursion depths, or reducing the energy footprint of ray-tracing data centers.

A fundamental technique for improving ray-tracing performance is the use of bounding-volume hierarchies (BVH), which prevent rays from intersecting the entire scene, especially in occluded or distant regions. In addition to the structural efficiency of a BVH, the primary bottlenecks of GPU ray tracing are memory latency and work distribution. These factors mainly result in more coherent memory accesses, making caching more efficient.

Creating programs with the goal of achieving higher caching rates typically requires increased programming efforts and a deep understanding of the hardware, as an additional abstraction layer is introduced, making the memory pipeline less transparent. General-purpose profilers aim to support the implementation process. However, they typically display caching rates based on kernel calls. This is because these values are measured using basic hardware counters that do not distinguish between the context of a memory access. In many cases, it would be useful to have a more detailed representation of memory-related profiling metrics, such as the number of recordings per memory allocation or projections into other domains, such as the framebuffer or the scene geometry.

This thesis presents a new method for simulating the GPU memory pipeline accurately. The method uses memory traces exported by dynamic binary instrumentation, which can be applied to any compiled GPU binaries, similar to standard profilers. The exported memory profiles can be used for performance visualization purposes in individual domains, as well as traditional memory profiling metrics that can be displayed in finer granularity than usual. A method for mapping memory metrics onto the original scene is included, allowing users to explore profiling results within the scene domain, making the profiling process more intuitive. In addition, this thesis presents a novel compressed ray-tracing implementation that optimizes its memory footprint by making assumptions about the topological properties of the scene to be rendered. The findings can be used to evaluate and optimize a wide range of ray tracing and ray marching applications in a user-friendly manner.

Typ des Eintrags: Dissertation
Erschienen: 2024
Autor(en): Bülow, Maximilian Alexander von
Art des Eintrags: Erstveröffentlichung
Titel: Visual Insights into Memory Behavior of GPU Ray Tracers
Sprache: Englisch
Referenten: Fellner, Prof. Dr. Dieter W. ; Kuijper, Prof. Dr. Arjan ; Zachmann, Prof. Dr. Gabriel
Publikationsjahr: 16 Juli 2024
Ort: Darmstadt
Kollation: xiii, 99 Seiten
Datum der mündlichen Prüfung: 30 April 2024
DOI: 10.26083/tuprints-00027476
URL / URN: https://tuprints.ulb.tu-darmstadt.de/27476
Zugehörige Links:
Kurzbeschreibung (Abstract):

Ray tracing is a fundamental rendering technique that typically projects three-dimensional representations of a scene onto a two-dimensional display. This is achieved by perspectively sampling a set of rays into the scene and computing intersections against the relevant geometry. Secondary rays may be sent out from these intersection points, allowing for physically correct global illumination on the reverse photon direction.

Real-time rendering has historically used classical rasterization pipelines, which are straightforward to implement on hardware as they form a data-parallel problem projecting the whole scene into the coordinate system of the image. In contrast, task-parallel ray tracing suffers from incoherency between rays. However, recent advances in ray tracing have led to more efficient approaches, resulting in even more efficient embedded hardware implementations. While these approaches are already capable of rendering realistic images, further improvements in run-time performance can compensate for computational time to achieve higher framerates, display resolutions, ray-tracing recursion depths, or reducing the energy footprint of ray-tracing data centers.

A fundamental technique for improving ray-tracing performance is the use of bounding-volume hierarchies (BVH), which prevent rays from intersecting the entire scene, especially in occluded or distant regions. In addition to the structural efficiency of a BVH, the primary bottlenecks of GPU ray tracing are memory latency and work distribution. These factors mainly result in more coherent memory accesses, making caching more efficient.

Creating programs with the goal of achieving higher caching rates typically requires increased programming efforts and a deep understanding of the hardware, as an additional abstraction layer is introduced, making the memory pipeline less transparent. General-purpose profilers aim to support the implementation process. However, they typically display caching rates based on kernel calls. This is because these values are measured using basic hardware counters that do not distinguish between the context of a memory access. In many cases, it would be useful to have a more detailed representation of memory-related profiling metrics, such as the number of recordings per memory allocation or projections into other domains, such as the framebuffer or the scene geometry.

This thesis presents a new method for simulating the GPU memory pipeline accurately. The method uses memory traces exported by dynamic binary instrumentation, which can be applied to any compiled GPU binaries, similar to standard profilers. The exported memory profiles can be used for performance visualization purposes in individual domains, as well as traditional memory profiling metrics that can be displayed in finer granularity than usual. A method for mapping memory metrics onto the original scene is included, allowing users to explore profiling results within the scene domain, making the profiling process more intuitive. In addition, this thesis presents a novel compressed ray-tracing implementation that optimizes its memory footprint by making assumptions about the topological properties of the scene to be rendered. The findings can be used to evaluate and optimize a wide range of ray tracing and ray marching applications in a user-friendly manner.

Alternatives oder übersetztes Abstract:
Alternatives AbstractSprache

Ray Tracing ist eine wichtige Rendering-Technik, bei der in der Regel dreidimensionale Repräsentationen einer Szene auf eine zweidimensionale Anzeige projiziert werden. Dies wird erreicht, indem Strahlen perspektivisch in die Szene gesampelt und Schnittpunkte mit der relevanten Geometrie berechnet werden. Von diesen Schnittpunkten aus können Sekundärstrahlen ausgesandt werden, die eine physikalisch korrekte globale Beleuchtung in der umgekehrten Photonenrichtung ermöglichen.

Beim Echtzeit-Rendering wurden in der Vergangenheit klassische Rasterisierungspipelines verwendet, die auf der Hardware einfach zu implementieren sind, da sie ein datenparalleles Problem darstellen, das die gesamte Szene in das Koordinatensystem des Bildes projiziert. Im Gegensatz dazu leidet das aufgabenparallele Ray Tracing unter der Inkohärenz zwischen den Strahlen. Jüngste Fortschritte beim Ray Tracing haben jedoch zu effizienteren Ansätzen geführt, die zu noch effizienteren Implementierungen für eingebettete Hardware führen. Während diese Ansätze bereits in der Lage sind, realistische Bilder zu rendern, können weitere Verbesserungen die Rechenzeit kompensieren, um höhere Frameraten, Bildschirmauflösungen und Ray-Tracing-Rekursionstiefen zu erreichen oder den Energiebedarf von Ray-Tracing-Datenzentren zu reduzieren.

Eine grundlegende Technik zur Verbesserung der Ray-Tracing-Leistung ist die Verwendung von Bounding-Volume-Hierarchien (BVH), die verhindern, dass alle Strahlen die gesamte Szene schneiden müssen, insbesondere in verdeckten oder weit entfernten Regionen. Neben der strukturellen Effizienz einer BVH sind die primären Flaschenhälse des GPU-Ray-Tracings die Speicherlatenz und die Arbeitsverteilung. Diese Faktoren führen vor allem zu kohärenteren Speicherzugriffen, wodurch das Caching effizienter wird.

Die Erstellung von Programmen mit dem Ziel, höhere Caching-Raten zu erreichen, erfordert in der Regel einen erhöhten Programmieraufwand und ein tiefes Verständnis der Hardware, da eine zusätzliche Abstraktionsschicht eingeführt wird, die die Speicherpipeline weniger transparent macht. Allzweck-Profiler zielen darauf ab, den Implementierungsprozess zu unterstützen. Sie zeigen jedoch in der Regel Caching-Raten auf der Granularität von Kernel-Aufrufen an. Dies liegt daran, dass diese Werte mit einfachen Hardware-Zählern gemessen werden, die nicht zwischen dem Kontext eines Speicherzugriffs unterscheiden. In vielen Fällen wäre eine detailliertere Darstellung speicherbezogener Profiling-Metriken nützlich, z. B. die Anzahl der Aufzeichnungen pro Speicherzuweisung oder Projektionen in andere Bereiche, wie den Framebuffer oder die Szenengeometrie.

In dieser Arbeit wird eine neue Methode zur genauen Simulation der GPU-Speicherpipeline vorgestellt. Die Methode verwendet Speicherprofile, die von der dynamischen Binärinstrumentierung exportiert werden, die auf bereits kompilierten GPU-Programmen angewendet werden kann, ähnlich wie bei Standard-Profilern. Die exportierten Speicherprofile können für Performanz-Visualisierungen in individuellen Domänen verwendet werden, ebenso wie für herkömmliche Speicher-Profiling-Metriken, die jedoch in feinerer Granularität als üblich angezeigt werden können. Insbesondere ist eine Methode zur Abbildung von Speichermetriken auf die ursprüngliche Szene enthalten, die es dem Benutzer ermöglicht, Profiling-Ergebnisse innerhalb der Szenendomäne zu untersuchen. Dies macht den Profiling-Prozess intuitiver. Darüber hinaus wird in dieser Arbeit eine neuartige komprimierte Ray-Tracing-Implementierung vorgestellt, die ihren Speicherbedarf optimiert, indem sie Annahmen über die topologischen Eigenschaften der zu rendernden Szene trifft. Die Ergebnisse können verwendet werden, um eine breite Palette von Ray-Tracing- und Ray-Marching-Anwendungen auf benutzerfreundliche Weise zu bewerten und zu optimieren.

Deutsch
Status: Verlagsversion
URN: urn:nbn:de:tuda-tuprints-274768
Sachgruppe der Dewey Dezimalklassifikatin (DDC): 000 Allgemeines, Informatik, Informationswissenschaft > 004 Informatik
Fachbereich(e)/-gebiet(e): 20 Fachbereich Informatik
20 Fachbereich Informatik > Graphisch-Interaktive Systeme
Hinterlegungsdatum: 16 Jul 2024 12:02
Letzte Änderung: 17 Jul 2024 12:20
PPN:
Referenten: Fellner, Prof. Dr. Dieter W. ; Kuijper, Prof. Dr. Arjan ; Zachmann, Prof. Dr. Gabriel
Datum der mündlichen Prüfung / Verteidigung / mdl. Prüfung: 30 April 2024
Export:
Suche nach Titel in: TUfind oder in Google
Frage zum Eintrag Frage zum Eintrag

Optionen (nur für Redakteure)
Redaktionelle Details anzeigen Redaktionelle Details anzeigen