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)
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)
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.
Stand: 08.12.2025
Es ist für uns eine Selbstverständlichkeit, dass wir verantwortungsvoll mit Ihren personenbezogenen Daten umgehen. Sofern wir personenbezogene Daten von Ihnen erheben, verarbeiten wir diese unter Beachtung der geltenden Datenschutzvorschriften. Detaillierte Informationen finden Sie in unserer Datenschutzerklärung.
Einwilligung in die Verwendung von Daten zu Werbezwecken
Ich bin damit einverstanden, dass die Vogel IT-Medien GmbH, Max-Josef-Metzger-Straße 21, 86157 Augsburg, einschließlich aller mit ihr im Sinne der §§ 15 ff. AktG verbundenen Unternehmen (im weiteren: Vogel Communications Group) meine E-Mail-Adresse für die Zusendung von Newslettern und Werbung nutzt. Auflistungen der jeweils zugehörigen Unternehmen können hier abgerufen werden.
Der Newsletterinhalt erstreckt sich dabei auf Produkte und Dienstleistungen aller zuvor genannten Unternehmen, darunter beispielsweise Fachzeitschriften und Fachbücher, Veranstaltungen und Messen sowie veranstaltungsbezogene Produkte und Dienstleistungen, Print- und Digital-Mediaangebote und Services wie weitere (redaktionelle) Newsletter, Gewinnspiele, Lead-Kampagnen, Marktforschung im Online- und Offline-Bereich, fachspezifische Webportale und E-Learning-Angebote. Wenn auch meine persönliche Telefonnummer erhoben wurde, darf diese für die Unterbreitung von Angeboten der vorgenannten Produkte und Dienstleistungen der vorgenannten Unternehmen und Marktforschung genutzt werden.
Meine Einwilligung umfasst zudem die Verarbeitung meiner E-Mail-Adresse und Telefonnummer für den Datenabgleich zu Marketingzwecken mit ausgewählten Werbepartnern wie z.B. LinkedIN, Google und Meta. Hierfür darf die Vogel Communications Group die genannten Daten gehasht an Werbepartner übermitteln, die diese Daten dann nutzen, um feststellen zu können, ob ich ebenfalls Mitglied auf den besagten Werbepartnerportalen bin. Die Vogel Communications Group nutzt diese Funktion zu Zwecken des Retargeting (Upselling, Crossselling und Kundenbindung), der Generierung von sog. Lookalike Audiences zur Neukundengewinnung und als Ausschlussgrundlage für laufende Werbekampagnen. Weitere Informationen kann ich dem Abschnitt „Datenabgleich zu Marketingzwecken“ in der Datenschutzerklärung entnehmen.
Falls ich im Internet auf Portalen der Vogel Communications Group einschließlich deren mit ihr im Sinne der §§ 15 ff. AktG verbundenen Unternehmen geschützte Inhalte abrufe, muss ich mich mit weiteren Daten für den Zugang zu diesen Inhalten registrieren. Im Gegenzug für diesen gebührenlosen Zugang zu redaktionellen Inhalten dürfen meine Daten im Sinne dieser Einwilligung für die hier genannten Zwecke verwendet werden. Dies gilt nicht für den Datenabgleich zu Marketingzwecken.
Recht auf Widerruf
Mir ist bewusst, dass ich diese Einwilligung jederzeit für die Zukunft widerrufen kann. Durch meinen Widerruf wird die Rechtmäßigkeit der aufgrund meiner Einwilligung bis zum Widerruf erfolgten Verarbeitung nicht berührt. Um meinen Widerruf zu erklären, kann ich als eine Möglichkeit das unter https://contact.vogel.de abrufbare Kontaktformular nutzen. Sofern ich einzelne von mir abonnierte Newsletter nicht mehr erhalten möchte, kann ich darüber hinaus auch den am Ende eines Newsletters eingebundenen Abmeldelink anklicken. Weitere Informationen zu meinem Widerrufsrecht und dessen Ausübung sowie zu den Folgen meines Widerrufs finde ich in der Datenschutzerklärung.
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)
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.