- Kunde
- Amberg Technologies AG
- Ort
- Regensdorf, Schweiz
- Branche
- Vermessungstechnik und Geophysik
- Zeitraum
- 2015 bis 2018
7x
schnellere seismische Signalverarbeitung, von 280 auf 40 Sekunden
5x
schnellere seismische Migration auf normaler Büro-Hardware, bei voller Rechengenauigkeit
bis 20 %
kürzere Rechenzeiten nach der Umstellung auf 64 Bit
rund 10 Mio.
Punkte flüssig darstellbar, auch auf Tablets
Ausgangslage
Über mehrere Aufträge hat unser Entwicklungsteam mit Amberg Technologies an den Teilen der Software gearbeitet, bei denen Geschwindigkeit zählt: 3D-Scans mit mehreren Millionen Punkten darstellen und seismische Daten für geophysikalische Analysen verarbeiten.
Was wir gebaut haben
Punktwolken auf Desktop und Tablet
Punktwolken mit rund 10 Millionen Punkten sollten sich flüssig bewegen lassen, auch auf Tablets mit schwacher Hardware. Unser Team hat eine wiederverwendbare WPF-Komponente auf einem C++- und VTK-Kern gebaut, mit einstellbaren Detailstufen, Zoom, Drehen und Verschieben. Den Wechsel zwischen den Detailstufen hat es mit räumlichen Indizes (k-d-Bäume, Octrees) neu aufgebaut.
Ergebnis: Grosse Scans lassen sich auf Desktop und Tablet interaktiv erkunden.
Seismische Signalverarbeitung
Die Bibliothek rechnete sequenziell, ein Durchlauf dauerte mehrere Minuten. Unser Team hat einen hybriden Algorithmus entworfen, der die Arbeit mit dynamischer Lastverteilung auf Prozessor und Grafikkarte aufteilt, die rechenintensivsten Teile mit SIMD und Cache-Optimierung beschleunigt und mit OpenMP parallelisiert.
Ergebnis: 40 statt 280 Sekunden pro Durchlauf, 7-mal schneller.
Migrationsalgorithmus
Der Algorithmus liess sich nicht direkt parallelisieren. Eine Variante für die Grafikkarte war schnell, wich aber stärker vom Original ab, als der produktive Einsatz erlaubt. Sie wurde deshalb nicht ausgeliefert; stattdessen hat unser Team den Originalalgorithmus selbst optimiert.
Ergebnis: rund 5-mal schneller auf einem normalen Intel-Core-i5-Prozessor, ohne Spezial-Hardware und mit denselben Ergebnissen wie das Original.
Umstellung auf 64 Bit
Die 32-Bit-Lösung konnte die grösseren Datensätze nicht verarbeiten, und die Ergebnisse schwankten je nach Anzahl der OpenMP-Threads. Unser Team hat den Code auf 64 Bit portiert, die Ursache der Schwankungen gefunden und behoben und die kritischen Stellen effizienter umgesetzt.
Ergebnis: grössere Datensätze, gleiche Ergebnisse unabhängig von der Thread-Zahl und typische Rechenzeiten bis zu 20 % kürzer.
Eine schnellere Variante haben wir nicht ausgeliefert, weil ihre Ergebnisse vom Original abwichen. Genauigkeit geht vor Tempo.