OpenMP standardisiert Arbeit mit KI- und HPC-Hardware Eine offene Schnittstelle für paralleles Programmieren

Von lic.rer.publ. Ariane Rüdiger 5 min Lesedauer

Anbieter zum Thema

Paralleles Programmieren verbreitet sich durch Hochleistungsrechnen und KI immer weiter. Früher eine exotische Disziplin, ist sie heute unerlässlich für Systeme und Prozessoren mit mehreren Rechenkernen oder internen Komponenten, zwischen denen die Aufgaben aufgeteilt werden.

Die OpenMP-API vereinfacht die Parallelisierung bestehender Software und macht Plattformgrenzen schrittweise immer durchlässiger.(Bild:  Geralt / Pixabay / OpenMP)
Die OpenMP-API vereinfacht die Parallelisierung bestehender Software und macht Plattformgrenzen schrittweise immer durchlässiger.
(Bild: Geralt / Pixabay / OpenMP)

Beim Hochleistungsrechnen müssen eine Reihe komplexer Aufgaben gelöst werden. Zum Beispiel Skalierung, die Zusammenarbeit von Prozessoren mit KI- (Künstliche Intelligenz) und anderen hochparallelen Beschleunigern, das Ansprechen komplizierter Speicherarchitekturen und die Portierung von Software bei Wechseln der Systemarchitektur.

Eine der aufwändigsten Aufgaben ist bis heute, die verwendete Software so zu paralellisieren, dass sie die genutzten Systeme optimal genutzt werden. Auch die Portierung der parallelisierten Software auf andere Systeme erfordert weiterhin meist aufwändige Handarbeit. Das bindet Anwender stark an vorhandene Hardwareanbieter.

OpenMP API: Mehr Parallelität, weniger Lock-In

Die „OpenMP“-API ist ein Industriestandard für die Parallelisierung bestehender Software, hinter dem viele gewichtige Player nicht nur im Bereich Hochleistungsrechnen stehen. Unter den Mitgliedern des OpenMP Architecture Review Board sind Prozessoranbieter wie AMD und Intel, aber auch Neulinge wie SiPearl, Systemlieferanten wie IBM oder HPE, Softwareanbieter wie Suse, Forschungsinstitute weltweit und Beratungsfirmen.

Huawei fehlt. Das hat vielleicht damit zu tun, dass OpenMP zwar offene Lösungen produziert, gleichzeitig aber eine US-amerikanische Non-Profit Gesellschaft mit entsprechenden rechtlichen Offenbarungspflichten gegenüber der US-Regierung ist.

OpenMP-CEO arbeitet in Nürnberg

Die Organisation hat ihren Sitz in den USA. CEO Michael Klemm, ansonsten bei AMD mit Compilerbau befasst, arbeitet aber in Fürth bei Nürnberg. Genutzt wird OpenMP beispielsweise von AMD, HPE oder Nvidia.

Das OpenMP API und dazugehörige Middleware schaffen Durchlässigkeit zwischen paralleler Hardware und Anwendungen und verteilen gleichzeitig die Aufgaben zur parallelen Abarbeitung.(Bild:  OpenMP)
Das OpenMP API und dazugehörige Middleware schaffen Durchlässigkeit zwischen paralleler Hardware und Anwendungen und verteilen gleichzeitig die Aufgaben zur parallelen Abarbeitung.
(Bild: OpenMP)

Die OpenMP-API fokussiert das Thema Parallelität. Die Organisation beobachtet aber zugleich die ISO-Aktivitäten beispielsweise bei der C++-Standardisierung und inkorporiert manche Entwicklungen. Das gilt auch in umgekehrter Richtung.

Eintracht vor schnellem Fortschritt

OpenMP achtet besonders streng darauf, dass alle Änderungen wirklich von allen Beteiligten gutgeheißen werden. Sie sollen sämtlich das übergeordnete Ziel, nämlich Offenheit, unterstützen. Der interne Prozess ist daher komplexer als in anderen vergleichbaren Organisationen.

Nur bei Einstimmigkeit wird ein Änderungsvorschlag in den Standard übernommen. Denn inkompatible Implementierungsvarianten mit den damit verbundenen Konsequenzen sollen auf jeden Fall vermieden werden.

OpenMP-Anwendungsgebiete

Hinter OpenMP steht ein Quellcodemodell, das das Compilerverhalten steuert, um den Quellcode zu parallelisieren respektive tauglich für GPUs zu machen. Einsatzbereiche sind die Aufgabenverteilung zwischen Koprozessoren oder Beschleunigern, zwischen unterschiedlichen Knoten oder Sockets, die auf gemeinsamen Speicher zugreifen, und zwischen Cores, die über Register kommunizieren. Hinzo kommt das klassische simultane Multithreading und die Verarbeitung einzelner Befehle, die gleichzeitig mehrere funktionale Einheiten beanspruchen.

Industrielle Anwendungsbereiche, in denen sich OpenMP bewährt hat, sind Luft- und Raumfahrt, Automotive und Bahntechnologie, Chemie und Pharmazie, Rohstoffindustrien, insbesondere Öl und Gas, sowie Wetterprognosen. „Ansys“, ein CAE-Tool (Computer-Aided Engineering), verwendet OpenMP beispielsweise für Crash-Simulationen.

Weniger traditionelle Einsatzbereiche sind KI und Finanzen. Dazu kommen Grafikverarbeitung und leistungshungrige digitale Spiele.

OpenMP hilft beim autonomen Fahren und bei der Covid-Bekämpfung

Einige konkrete Beispiele: Autoware ist ein führender Anbieter von Software für autonomes Fahren. Die Firma konnte laut Klemm die Leistung seiner Software durch den Einsatz von OpenMP um das Zweieinhalbfache steigern.

Auch bei der Suche nach Covid-Medikamenten half OpenMP, die Rechenleistung über sämtliche Kerne der Hardware zu verteilen. So ließ sich die Medikamentenentwicklung erheblich beschleunigen. Hier war als weitere Technologie MPI (Message Passing Interface) eingebunden.

Bei Turbulenzsimulationen wurden CUDA und OpenMP fürs Datenmanagement verwendet. Einsatzbereich war hier das Datenmanagement. Die beiden Technologien wurden kombiniert, weil sich ein Teil der Cuda-Instruktionen von Nvidia-Systemen nicht mit OpenMP reproduzieren lässt.

Schrittweise Weiterentwicklung über drei Jahrzehnte

Die erste Version der OpenMP-API entstand 1997 im Bereich HPC/Supercomputer. Jede Hardware hatte damals ihr eigenes Programmiermodell, was ständige Portierungen oder das Neuschreiben von Code nötig machte. OpenMP Version 1.0 ermöglichte ein einheitliches Verfahren, um Shared Memory von verschiedenen parallelen Hardwaresystemen aus mit in Fortran geschriebener Software zu adressieren.

Jetzt Newsletter abonnieren

Täglich die wichtigsten Infos zu RZ- und Server-Technik

Mit Klick auf „Newsletter abonnieren“ erkläre ich mich mit der Verarbeitung und Nutzung meiner Daten gemäß Einwilligungserklärung (bitte aufklappen für Details) einverstanden und akzeptiere die Nutzungsbedingungen. Weitere Informationen finde ich in unserer Datenschutzerklärung. Die Einwilligungserklärung bezieht sich u. a. auf die Zusendung von redaktionellen Newslettern per E-Mail und auf den Datenabgleich zu Marketingzwecken mit ausgewählten Werbepartnern (z. B. LinkedIn, Google, Meta).

Aufklappen für Details zu Ihrer Einwilligung

Alle fünf Jahre bringt OpenMP ein Hauptrelease heraus.(Bild:  OpenMP)
Alle fünf Jahre bringt OpenMP ein Hauptrelease heraus.
(Bild: OpenMP)

Ein weiterer Baustein von HPC-Architekturen war das anderweitig entwickelte Message Passing Interface (MPI). OpenMP und MPI kooperieren in konkreten Implementierungen oft wie oben beschrieben. Dabei übernimmt MPI die Scaleout-Aufgaben, sprich: die Aufgabenverteilung zwischen mehreren Systemen.

Immer breitere Einsatzmöglichkeiten für OpenMP

Später wurde OpenMP auf die Programmiersprachen C++ und C erweitert. Das Task-Modell moderner Parallelsysteme wurde ab 2008 integriert.

Mit Version 4.0 kamen Technologien für den Umgang mit Nvidias KI-Programmiermodell CUDA und Vektorverarbeitung hinzu. Danach folgten Anpassungen an Beschleunigerarchitekturen und Toolsets, mehrschichtige Speicherarchitekturen sowie die aktuellen Versionen von C++ und C.

OpenMP-Versionierung

Derzeit ist OpenMP in der Version 6.0 aktuell. Sie wurde im Jahr 2024 verabschiedet.

Die nächste Zwischenversion soll im November 2025 erscheinen (6.1). Einmal im Jahr, immer im November, erscheint ein solches Zwischenrelease.

Das nächste große Release (7.0) folgt im üblichen Fünf-Jahres-Rhythmus im November 2029. Technische Berichte gibt es als Zwischenstufe zwischen den eigentlichen Releases, um den jeweiligen aktuellen Stand der internen Diskussionen sichtbar zu machen.

Neue Funktionalität in den kommenden OpenMP-Versionen

Für die nächsten Versionen hat sich OpenMP einiges vorgenommen. So soll die Verwendung mehrerer Devices innerhalb von Programmen verbessert werden, beispielsweise bei Speicheroperationen, beim Datenupdate oder der Verteilung von Tasks. Mehrere Compiler-Einheiten sollen effektiv parallel arbeiten können.

Verteilt man den Ablauf einer Software auf vier Rechenkerne oder Threads, die parallel arbeiten, dauert das Ganze nur noch ein Viertel der Zeit.(Bild:  OpenMP)
Verteilt man den Ablauf einer Software auf vier Rechenkerne oder Threads, die parallel arbeiten, dauert das Ganze nur noch ein Viertel der Zeit.
(Bild: OpenMP)

Geplant sind auch die Unterstützung von Pipelines, Data-Flow- und anderen Parallelisierungsmodellen sowie die Handhabung paralleler Events. Weiter arbeitet man daran, zukünftig auch Python als eine wichtige Sprache der KI-Welt zu unterstützen. Diesbezügliche Versuche in Richtung Java sind laut Klemm bislang immer wieder steckengeblieben.

OpenMP will Brücke zwischen Programmiermethodiken bauen

Derzeit gibt es eine Reihe maschinennaher Programmiermethodiken, zwischen denen Software nur aufwändig portieren werden kann. In der Regel weisen sie große Nähe zu einem spezifischen Hardwareanbieter auf.

CUDA (Nvidia), HIP (AMD) und dpc++/Sycl sowie die Parallelisierungslibraries Cilk und TBB (Intel) bilden im Grunde in sich geschlossene Welten. Alle sind weniger breit einsetzbar als OpenMP.

Zudem gibt es OpenACC, wie OpenMP ein offener Standard. Es eignet sich aber vor allem für Grafikkarten/GPUs und hat eine schmale Unterstützerbasis.

Inkompatibilitäten sollen massiv zurückgehen

OpenMP hat sich mittelfristig vorgenommen, diese Inkompatibilitäten weitgehend zu überwinden. Das soll massiv Zeit und Kosten sparen.

Das Vorgehen: OpenMP will die genannten Methoden auf ihre Gemeinsamkeiten hin durchforsten. Diese sollen dann in OpenMP direkt implementiert werden. Klemm: „Das könnte ein Umschreiben von Software in vielen Fällen erheblich weniger aufwändig, häufig sogar überflüssig machen.“

Gerade in Anbetracht der Entwicklung alternativer KI-Hardware zu teuren NVIDIA-GPUs ist das Vorhaben verheißungsvoll. Denn solche Hardware dürfte nur dann erfolgreich werden, wenn vorhandene, häufig auf CUDA entwickelte Software ohne allzu großen Aufwand portiert werden kann.

(ID:50565755)