Projekt · Vermessung und Geophysik · Schweiz

Amberg Technologies: Hochleistungs-Software für Punktwolken und seismische Daten

Ihr Ansprechpartner für ein ähnliches Projekt ist Daniel Giebelhaus in Zürich. Unser Entwicklungsteam übernimmt die Umsetzung.

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.

Technologien

C++VTKWPFMFCOpenMPSIMDOpenCLIntel Parallel StudioPVS-Studio

Beschreiben Sie Ihre Aufgabe in zwei Sätzen

Wir sagen Ihnen, ob sich ein eigenes Werkzeug lohnt und was es dafür braucht.

Aufgabe beschreiben