Die Ray-Tracing-Komponente von ViennaPS, die zuvor eine CPU-Implementierung mit Unterstüzung für scheibenbasierte Oberflächen in 2D und 3D, sowie eine GPU-Implementierung die 3D-dreiecksbasierte Oberflächen unterstützte, wurde um drei zusätzliche GPU-beschleunigte Raytracing-Engines erweitert. Die neuen Engines unterstützen Scheiben in 2D und 3D, ähnlich der CPU-Version, 2D-Linien als Gegenstück zu den 3D-Dreiecks-Elementen sowie implizite Flächen in 2D und 3D, definiert durch ein Level-Set.Das Ziel ist es, Raytracing-Engines zu entwickeln und zu benchmarken, die Partikelsimulationen im Vergleich zur CPU erheblich beschleunigen, während Unterschiede und Kompromisse verschiedener Oberflächendarstellungen untersucht werden.Die GPU-Implementierungen wurden unter Verwendung des NVIDIA® OptiXTM Frameworks entwickelt, das Hardware-Beschleunigung über spezialisierte RT-Kerne moderner GPUs unterstützt. Diese RT-Kerne sind für das durchlaufen der BVH Struktur und Ray-Dreieck-Treffertests optimiert.Die Raytracing-Engines wurden verwendet, um Flussberechnungen während der Simulation mehrerer Halbleiter-Fertigungsprozesse zu beschleunigen. Speziell getestete Prozesse umfassen chemische Beschichtung, Plasmaätzen und den Bosch-Prozess. Die Methoden wurden hinsichtlich Gesamtlaufzeit und Genauigkeit mit der bestehenden CPU-Scheiben-Implementierung verglichen, wobei sowohl qualitative Analysen der finalen Oberflächen durch visuelle Vergleiche als auch quantitative Metriken wie Flächeninhalt und Chamfer-Distanz zur Diskussion der Genauigkeit herangezogen wurden. Die GPU-Scheiben-Engine erreichte 9- bis 34-fache Beschleunigungen, abhängig vom Beispiel, im Vergleich zur CPU-Version, während praktisch identische Ergebnisse produziert wurden. Die 2D-Linien-Engine erreichte ähnliche Leistungen, während die Dreiecks-Engine etwa 1,5-mal mehr Rays pro Sekunde verfolgen konnte, da die RT-Kerne speziell für Ray-Dreieck-Treffer ausgelegt sind.Da Dreiecksnetze in der Regel etwa doppelt so viele Oberflächenelemente wie ein Scheibennetz benötigen, um dieselbe Geometrie darzustellen, und die Anzahl der Rays in dieser Implementierung mit der Anzahl an Elementen skaliert, waren die Gesamtlaufzeiten vergleichbar. Es wurde auch versucht, eine explizite Oberflächendarstellung zu vermeiden und stattdessen direkt die Level-Set Repräsentation der Oberfläche zu verwenden, die von ViennaLS bereitgestellt wird. Die Genauigkeit war jedoch im Vergleich zu den netzbasierten Ansätzen nicht zufriedenstellend. Wahrscheinliche Ursache hierfür ist die einfache und fehleranfällige Implementierung zur Berechnung der Oberfläche der einzelnen Elemente, für die möglicherweise bessere Ansätze vorgeschalgen werden. Die Leistung der Level-Set-Engine war ebenfalls nicht auf dem Niveau der anderen Engines, da kein Aufwand unternommen wurde, die fehlerhafte Implementierung zu optimieren. Theoretisch sollte die Level-Set-Methode in der Lage sein, ähnliche Leistungen zu erzielen und dabei den Zwischenschritt der Netzgenerierung zu vermeiden, jedoch ist weitere Arbeit erforderlich, um dieses Ziel zu erreichen.Die GPU-Engines wurden alle mit NVIDIA® Nsight ComputeTM analysiert, um Bereiche für zukünftige Optimierungen zu identifizieren, wobei potenzielle Verbesserungen in Speicherzugriffsmustern sowie Speicher- und Warp-Kohärenz diskutiert wurden. Schließlich wurde der Energieverbrauch von CPU und GPU während einer Simulation gemessen, um die Energieeffizienz der verschiedenen Implementierungen zu bewerten. Dabei zeigte sich, dass die GPU-Engines trotz erhöhter Gesamtleistung aufgrund der deutlich kürzeren Laufzeiten erheblich energieeffizienter sind.
Xaver Riedel (Thu,) studied this question.