Devito Codes automatisiert die HPC-Code-Generierung

Devito Codes mit Intel® Xeon® 6 Prozessoren generiert optimierten HPC-Code und ermöglicht Lösungen mit finiten Differenzen.

Auf einen Blick:

  • Devito Codes arbeitet eng mit großen Computerhardware-Herstellern und Cloud-Unternehmen zusammen, um Kunden zu helfen, Leistung, Produktivität und Portabilität auf ihrer Plattform zu maximieren.

  • Devito Codes mit Intel® Technologie generiert optimierten HPC-Code aus einer Python domain-spezifischen Sprache (DSL), sodass Wissenschaftler aus Mathematik leistungsstarke Lösungen mit finiten Differenzen erstellen können.

author-image

Von

Das HPC-Trilemma: Die Wahl zwischen Leistung, Portabilität und Produktivität

Die Naturwissenschaften beschreiben die Welt mit angewandter Mathematik. Seismologie, Elektromagnetik und Strömungsdynamik verlassen sich auf Techniken wie partielle Differentialgleichungen und Simulationen mit endlichen Differenzen, um physikalische Phänomene zu modellieren.

Python und sein wissenschaftliches Ökosystem aus Bibliotheken wie NumPy, SciPy und MatPlotLib bieten Wissenschaftlern und Forschern Frameworks für die Entwicklung anspruchsvoller domänenspezifischer Lösungen mit relativ wenigen Zeilen leicht zugänglichem Code. Diese Vielseitigkeit und Produktivität macht Python zu einer der führenden Sprachen in Wissenschaft und Technik. In welcher anderen Programmiersprache kann man Antigravitation buchstäblich importieren?

Während reines Python langsamer als kompilierte Sprachen sein kann, ist seine primäre Rolle im High-Performance-Computing (HPC) als zugängliche Schnittstelle zu hochoptimierten Bibliotheken, die in kompilierten Sprachen niedrigerer Ebene wie C, C++, Fortran und sogar CUDA, SYCL oder HIP für Grafikprozessoren geschrieben sind. Die wissenschaftlichen Bibliotheken von Python wie NumPy und SciPy nutzen diese kompilierten Backends, um hohe Leistung zu bieten und gleichzeitig die Benutzerfreundlichkeit von Python zu erhalten. Allerdings hängt dieses Modell weiterhin von der Verfügbarkeit von optimiertem HPC-Code für domänenspezifische Aufgaben ab, für deren Entwicklung und Wartung oft spezielles Know-how und Ressourcen erforderlich sind.

Die Devito-Lösung: Wissenschaftler sollen wissenschaftlich arbeiten können

Das Team von Devito-Codes wollte die Just-in-Time-Kompilierung (JIT) von Code mit finiten Differenzen in HPC-Qualität in das Python-Ökosystem bringen. Mit Devito können Wissenschaftler innerhalb des symbolischen und mathematischen Frameworks von Python (SymPy) arbeiten, komplexe partielle Differentialgleichungslöser und zielorientierte Optimierungsprobleme schreiben und nahtlos parallelisierten, hardwareoptimierten HPC-Code für alle wichtigen CPU- und GPU-Architekturen generieren.

Devito Codes profitiert von Intel Xeon 6 (höher ist besser)

Ein Devito-Codes-Kernel für einen akustischen anisotropen Propagator für ein TTI-Modell mit geneigter transversaler Isotropie (ein typisches seismisches Modell der Energiewirtschaft) veranschaulicht die Leistungssteigerungen von Intel Xeon 6 gegenüber skalierbaren Intel Xeon Prozessoren der 5. Generation.1

„Die meisten Leute übernehmen Devito zunächst aus Gründen der Produktivitätssteigerung“, sagt Gerard Gorman, CEO und Mitbegründer von Devito Codes. „Es ermöglicht eine einzigartige Form des schnellen Prototypings und kann als Rechenlabor behandelt werden.“

Die Erstellung eines Python-Frameworks, das leistungsstarke Kernel für Simulationen, Inversions- und Optimierungsaufgaben auf verschiedener Hardware erzeugen kann, ist nicht einfach. Devito integriert mehrere HPC-Technologien, einschließlich OpenMP für Shared-Memory-Systeme, OpenACC für Beschleuniger und MPI für Parallelität und Portabilität. Erweiterte Optimierungen erfordern hardwarespezifisches Tuning mit speziellen Sprachen wie CUDA, HIP und SYCL. Devito Codes wendet fast jede bekannte Optimierungstechnik für strukturierte Berechnung an und integriert kontinuierlich neue Fortschritte, um sicherzustellen, dass sich Leistungssteigerungen im Laufe der Zeit erhöhen. Dadurch macht es manuell abgestimmten kommerziellen Lösungen von Experten oft Konkurrenz oder übertrifft diese sogar.

Durch die Übernahme der Komplexität der HPC-Code-Entwicklung ermöglicht es Devito Codes Benutzern, Projekte mühelos zwischen Systemen zu übertragen und dabei alle verfügbaren Computing-Ressourcen zu nutzen. HPC-Betreiber und Serviceprovider können ihre aktuelle Infrastruktur warten, mit heterogenen Arrays erweitern und erheblich upgraden – und dabei sicherstellen, dass Workloads kompatibel und leistungsstark bleiben.

„Mit DevitoPRO kann ein Geophysiker einen Algorithmus aus einer Forschungsarbeit hernehmen und an einem Nachmittag implementieren – eine Aufgabe, die normalerweise Monate der Codierung und Optimierung erfordern würde. Diese schnelle Abwicklung ermöglicht es Teams, mit einem beispiellosen Tempo zu experimentieren und Innovationen zu entwickeln, was das Testen und die Bereitstellung neuer Algorithmen beschleunigt.“ – Mathias Louboutin, Senior Solutions Architect, Devito

DevitoPRO

Devito begann als Teil einer Initiative des Intel Parallel Computing Centre unter der Leitung von Professor Gerard Gorman am Imperial College London. Das ursprüngliche Projekt entwickelte leistungsstarke Open-Source-Software für seismische Bildgebung. Als das Projekt zu einem echten Compiler zur Optimierung von HPC-Workloads reifte, brachte das Team DevitoPRO auf den Markt, eine Enterprise Edition mit proprietären Funktionen, fortschrittlichen Leistungsoptimierungen und kommerziellem Support.

DevitoPRO dient hauptsächlich der Explorationsgeophysik in der Energiebranche. Neben der Kompilierung von hochoptimiertem, portablem Code für seismische Simulationen, der in Python verfasst wurde, bietet DevitoPRO leistungsstarke Propagatoren und Gradientenoperatoren für Full Waveform Inversion (FWI) und Reverse Time Migration (RTM). DevitoPRO bietet außerdem technischen Support, Schulungen, benutzerdefinierte Software-Entwicklung und hardwarespezifische Optimierung für Clients.

Devito bietet weiterhin allgemeine Symbol- und Compiler-Software-Technologie als Open-Source-Software, patentfreie Software für Forscher in Wissenschaft und Industrie an.

Erweiterung der Code-Portabilität mit SYCL und Intel

Bislang war es für das Erstellen von portablem Code, der auf heterogenen Prozessoren ausgeführt werden kann, erforderlich, für jeden Hardware-Typ einzigartige Kernel zu kompilieren – CUDA-Kernel für NVIDIA-GPUs, HIP-Kernel für AMD-GPUs und C/C++ für x86- und RISC-CPUs. In den letzten Jahren hat SYCL HPC-Programmierern eine neue, plattformübergreifende Option für die Kompilierung von optimiertem HPC-Code geboten.

„Die Verschmelzung von symbolischer Berechnung und fortschrittlicher Compiler-Technologie von Devito sorgt für überprüfbare und optimierte Code-Generierung – entscheidend für missionsorientierte mathematische Software. Zwar fehlt generativem KI-Code dieses Maß an Präzision und Zuverlässigkeit, aber die Kombination beider Technologien kann noch mehr Produktivität bei der Entwicklung und dem Testen neuer Algorithmen ermöglichen.“ – Gerard Gorman, CEO und Mitbegründer von Devito Codes

SYCL ist eine plattformübergreifende parallele C++-Abstraktionsebene mit APIs, die Datenressourcen und Code-Ausführung auf gemischten Geräten von mehreren Anbietern, einschließlich CPUs, GPUs und FPGAs, finden und verwalten kann. SYCL ist die Grundlage für oneAPI und Data Parallel C++, die Intel bei Intel® Data Center GPUs implementiert hat.

Die Entwickler bei Devito Codes und Intel haben zusammengearbeitet, um die SYCL-Code-Generierung in DevitoPRO zu integrieren, einschließlich spezifischer Optimierungen für Beschleuniger der Intel® Data Center GPU Max 1100 und 1550 Produktreihe. Für die Bereitstellung müssen DevitoPRO-Benutzer einfach Intel® Data Center GPUs für Just-in-Time-Kompilierungen verwenden, die von den Leistungsvorteilen von SYCL profitieren.

Leistungssteigerung für die Elastische-Wellen-Seismologie mit Mixed Precision Computing

Seismische Wellen breiten sich in zwei Formen aus: longitudinale Primärwellen (P-Wellen) und transverse sekundäre Wellen (S-Wellen). Die Modellierung von P-Wellen – eine Methode, die Seismologen akustische Analyse nennen – ist mathematisch und rechnerisch relativ einfach, da sich Wellenenergie und Partikelbewegung in derselben Dimension bewegen. Die gemeinsame Modellierung von P- und S-Wellen – was Seismologen als elastische Analyse bezeichnen – verkompliziert die Dinge geometrisch.

Da sich die beiden Wellenformen in drei Dimensionen mit 90-Grad-Winkeln bewegen, sind zu ihrer Beschreibung mehr Wellengleichungen mit mehr Komponenten erforderlich. Elastische Analyse erfordert außerdem eine viel höhere Auflösung, um genaue Ergebnisse zu liefern, weswegen weit mehr Daten erfasst werden müssen.

Seismische Wellen gibt es in zwei Formen: longitudinale Primärwellen (P) und transverse Sekundärwellen (S).

„Wenn Sie elastische Berechnungen durchführen, wird Ihr Arbeitsspeicherbedarf im besten Fall zwischen vier- und fünfmal größer sein als bei der Akustik“, sagt Fabio Luporini, CTO und Mitbegründer von Devito Codes. „Das liegt einfach an der Physik. Mehr Wellenfelder werden gleichzeitig in einer gekoppelten partiellen Differentialgleichung modelliert, die im Arbeitsspeicher aufbewahrt werden muss.“

Devito Codes entwickelt Algorithmen mit gemischter Präzision, eine Technik der Künstlichen Intelligenz, um elastische Computing-Workloads auf Hardware der aktuellen Generation zu ermöglichen. Workloads, die sich einen kleinen Präzisionsverlust leisten können, werden von FP-32 (32-Bit-Gleitkomma) in eine sorgfältig gestaltete Mischung aus FP-32 und FP-16 (16-Bit-Gleitkomma) konvertiert, die bei halbem Arbeitsspeicher dieselben Werte darstellen. In der Welt der elastischen Analysen führt die Halbierung eines Petabyte-Datenbestands auf 500 TB zu kaskadierenden Leistungssteigerungen bei jedem Schritt, von der Arbeitsspeicher- und I/O-Verwaltung bis zum Schreiben von Snapshots auf die Festplatte.

Devito Codes verdoppelt die Leistung mit gemischter Präzision (höher ist besser)2

Devito-Codes-Tests zeigen, dass Verschiebung und gemischte Präzision (FP-16/FP-32) die Leistung um das Doppelte steigern und den Arbeitsspeicherbedarf um das Doppelte reduzieren, was zu einem deutlich schnelleren Durchsatz führt.2

FP-16-Workloads werden außerdem auf CPUs und GPUs schneller verarbeitet, die gemischte Präzision unterstützen, wie Intel® Xeon® 6 Prozessoren und Intel Data Center GPUs. In ersten Tests führte die Analyse elastischer Wellen, die mit Devito-Codes mit gemischter Präzision ausgeführt wurde, zu einer bis zu 2-fachen Leistungssteigerung – 1das entspricht einer Leistungssteigerung von einer Stufe – ohne Hardware-Upgrades.

Fazit: Jede Leistungssteigerung zählt

Devito Codes und Intel verfeinern und optimieren Compiler-Technologien weiter, um mehr Leistung aus heterogenen HPC-Systemen für Simulationen mit endlichen Differenzen zu ziehen. Für die Open-Source- und DevitoPRO-Clients von Devito ist die Arbeit unverzichtbar.

„Die Verarbeitung seismischer Daten für die Bildgebung unter der Oberfläche kann Millionen an Berechnungskosten pro Projekt kosten“, sagt Gorman. „Wir müssen also jedes letzte Prozent Leistung herausholen, denn Zeit ist Geld.“

Die neuesten Updates finden Sie unter Devito-Codes auf GitHub oder auf devitocodes.com.

PDF herunterladen ›