Paralleles Rechnen, auch als parallele Programmierung bekannt, ist ein Prozess, bei dem große Rechenprobleme in kleinere Probleme unterteilt werden, die von mehreren Prozessoren gleichzeitig gelöst werden können.
Die Prozessoren kommunizieren über einen gemeinsamen Speicher und ihre Lösungen werden mithilfe eines Algorithmus kombiniert. Das parallele Rechnen ist deutlich schneller als das serielle Computing (wird auch als serielles Rechnen bezeichnet), sein Vorgänger, der einen einzelnen Prozessor verwendet, um Probleme nacheinander zu lösen.
Als Computer in den späten 1940er und 1950er Jahren erfunden wurden, wurde Software so programmiert, dass sie nacheinander Probleme löste, was die Verarbeitungsgeschwindigkeit einschränkte. Um Probleme schneller zu lösen, mussten Algorithmen nach einer Reihe von Anweisungen auf einer Zentraleinheit (CPU) entwickelt und implementiert werden. Erst nachdem eine Anweisung ausgeführt worden war, konnte eine andere gelöst werden.
Seit den 1950er Jahren ermöglichte die parallele Datenverarbeitung Computern, Code schneller und effizienter auszuführen, indem Rechenprobleme in kleinere, ähnliche Probleme zerlegt wurden. Diese als parallele Algorithmen bezeichneten Probleme wurden dann auf mehrere Prozessoren verteilt.
Mittlerweile werden parallele Systeme so weit entwickelt, dass sie in verschiedenen Computern eingesetzt werden. Sie erledigen alltägliche Aufgaben wie das Abrufen von E-Mails oder das Versenden einer Textnachricht hunderte Male schneller als mit seriellem Rechnen. Parallele Systeme betreiben nicht nur persönliche Geräte wie Laptops und Smartphones, sondern auch die fortschrittlichsten Supercomputer und modernste Technologien wie künstliche Intelligenz (KI) und das Internet der Dinge (IoT).
Serielles Computing, auch bekannt als sequentielles Rechnen, ist eine Art des Rechnens, bei dem Anweisungen zur Lösung von Rechenproblemen nacheinander oder sequenziell befolgt werden. Die Grundlagen des seriellen Rechnens erfordern, dass Systeme nur einen Prozessor verwenden, anstatt Probleme auf mehrere Prozessoren zu verteilen.
Mit der Weiterentwicklung der Informatik wurde das parallele Rechnen eingeführt, da das serielle Rechnen langsame Geschwindigkeiten aufwies. Betriebssysteme mit paralleler Programmierung ermöglichen es Computern, Prozesse und Berechnungen gleichzeitig durchzuführen – eine Technik, die als parallele Verarbeitung bekannt ist.
Parallele Verarbeitung und paralleles Rechnen sind sehr ähnliche Begriffe, aber es gibt einige Unterschiede, die beachtet werden sollten. Parallelverarbeitung oder Parallelität teilt eine Laufzeitaufgabe in kleinere Teile auf, die unabhängig und gleichzeitig mit mehr als einem Prozessor ausgeführt werden. In der Regel ist ein Computernetzwerk oder ein Computer mit mehr als einem Prozessor erforderlich, um die Daten wieder zusammenzusetzen, sobald die Gleichungen auf mehreren Prozessoren gelöst wurden.
Während parallele Verarbeitung und paralleles Rechnen manchmal synonym verwendet werden, bezieht sich parallele Verarbeitung auf die Anzahl der Kerne und CPUs, die neben einem Computer laufen, während paralleles Rechnen sich auf das bezieht, was die Software tut, um den Prozess zu erleichtern.
Branchen-Newsletter
Bleiben Sie mit dem Think-Newsletter über die wichtigsten – und faszinierendsten – Branchentrends in den Bereichen KI, Automatisierung, Daten und mehr auf dem Laufenden. Weitere Informationen finden Sie in der IBM Datenschutzerklärung.
Ihr Abonnement wird auf Englisch geliefert. In jedem Newsletter finden Sie einen Abmeldelink. Hier können Sie Ihre Abonnements verwalten oder sich abmelden. Weitere Informationen finden Sie in unserer IBM Datenschutzerklärung.
Die Geschwindigkeit und Effizienz des parallelen Rechnens sind die Grundlage für einige der wichtigsten technischen Durchbrüche des letzten halben Jahrhunderts, darunter Smartphones, High Performance Computing (HPC), KI und maschinelles Lernen (ML). Durch die Möglichkeit, komplexere Probleme schneller und mit weniger Ressourcen zu lösen, ist paralleles Rechnen für viele Unternehmen auch ein entscheidender Treiber der digitalen Transformation.
Das Interesse an parallelem Computing begann, als Computerprogrammierer und Hersteller nach Möglichkeiten suchten, energieeffizientere Prozessoren zu bauen. In den 1950er, 1960er und 1970er Jahren bauten Führungskräfte aus Wissenschaft und Technik erstmals Computer, die einen gemeinsam genutzten Speicherplatz nutzten und parallele Operationen mit Datensätzen ausführten.
Diese Bemühungen gipfelten in dem bahnbrechenden Projekt Caltech Concurrent Computation, das in den 1980er Jahren eine neue Art des parallelen Rechnens mit 64 Intel-Prozessoren einführte.
In den 1990er Jahren erreichte der Supercomputer ASCI Red mit massiv-parallelen Prozessoren (MPPs) eine noch nie dagewesene Billion Rechenoperationen pro Sekunde und läutete damit eine Ära der Dominanz von MPPs bei der Rechenleistung ein.1 Zur gleichen Zeit wurden Cluster – eine Art des parallelen Rechnens, das Computercluster oder „Knoten“ in einem kommerziellen Netzwerk miteinander verbindet – auf den Markt gebracht, die schließlich die MPPs für viele Anwendungen ersetzten.
Paralleles Rechnen, insbesondere Mehrkernprozessoren und Grafikprozessoren (GPUs), bleibt auch heute noch ein kritischer Teil der Informatik. GPUs werden oft zusammen mit CPUs bereitgestellt, um den Datendurchsatz zu erhöhen und mehr Berechnungen gleichzeitig auszuführen, was viele moderne Anwendungen beschleunigt.
Vor dem parallelen Rechnen zwang das serielle Rechnen einzelne Prozessoren dazu, komplexe Probleme Schritt für Schritt zu lösen, wodurch Aufgaben, welche das parallele Rechnen in wenigen Sekunden erledigen konnte, Minuten und Stunden in Anspruch nahmen. Die ersten iPhones beispielsweise verwendeten seriellen Computer und brauchten unter Umständen eine Minute, um eine App oder E-Mail zu öffnen. Heute beschleunigt das parallele Rechnen, das 2011 erstmals in iPhones eingesetzt wurde, diese Aufgaben erheblich.
Da die Datenverarbeitung immer ausgereifter wird und immer komplexere Probleme bewältigt, müssen die Systeme Tausende oder sogar Millionen von Aufgaben in einem Augenblick ausführen. Heutige ML-Modelle basieren stark auf parallelem Rechnen und verwenden hochkomplexe Algorithmen, die über mehrere Prozessoren bereitgestellt werden. Mit seriellem Rechnen würden ML-Aufgaben aufgrund von Engpässen, die dadurch entstehen, dass jeweils nur eine Berechnung auf einem einzigen Prozessor durchgeführt werden kann, viel länger dauern.
Paralleles Rechnen und parallele Verarbeitung beschleunigen die Zahlenverarbeitung bei großen Datensätzen und ermöglichen die interaktiven Abfragen hinter der Datenanalyse. Mit mehr als einer Trillion Byte an Informationen, die täglich generiert werden, kann es für Unternehmen schwierig sein, digitale Informationen nach relevanten, hilfreichen Erkenntnissen zu durchsuchen. Die parallele Verarbeitung stellt Computer mit vielen Kernen in einer Datenstruktur bereit und verarbeitet Daten viel schneller als ein serieller Computer.
Mit parallelem Rechnen können Computer Ressourcen weitaus effizienter nutzen als ihre seriellen Pendants. Die modernsten Computersysteme von heute verfügen über mehrere Kerne und Prozessoren, wodurch sie mehrere Programme gleichzeitig ausführen und mehr Aufgaben parallel erledigen können.
Paralleles Rechnen bezieht sich auf viele Arten von Geräten und Computerarchitekturen, von Supercomputern bis hin zum Smartphone in der Hosentasche. In seiner komplexesten Form nutzt das parallele Computing Hunderttausende von Kernen, um Probleme wie die Suche nach einem neuen Krebsmedikament oder die Suche nach extraterrestrischer Intelligenz (SETI) zu lösen. Im einfachsten Fall hilft Ihnen das parallele Rechnen, eine E-Mail von Ihrem Telefon aus schneller zu senden, als wenn Sie ein serielles Rechensystem verwenden.
Im Großen und Ganzen werden beim parallelen Rechnen drei einzigartige Architekturen verwendet: geteilter Speicher, verteilter Rechenspeicher und hybrider Speicher. Jede Architektur arbeitet mit ihrer eigenen Message-Passing-Schnittstelle (MPI), einem Standard für alle parallelen Rechenarchitekturen. MPI beschreibt Protokolle für Message-Passing-Programme in Programmiersprachen wie C++ und Fortran. Open-Source-MPI ist der Schlüssel zur Entwicklung neuer Anwendungen und Software, die auf parallelen Rechenfunktionen beruhen.
Eine geteilte Speicherarchitektur kommt in gängigen, alltäglichen Anwendungen des parallelen Rechnens zum Einsatz, etwa bei Laptops oder Smartphones. In einer geteilten Speicherarchitektur sind parallele Computer auf mehrere Prozessoren angewiesen, um Kontakt zu derselben gemeinsam genutzten Speicherressource herzustellen.
Verteilter Speicher wird in Cloud Computing-Architekturen verwendet und ist daher in vielen Unternehmensanwendungen weit verbreitet. In einem verteilten System für paralleles Rechnen sind mehrere Prozessoren mit eigenen Speicherressourcen über ein Netzwerk verbunden.
Die heutigen Supercomputer basieren auf hybriden Speicherarchitekturen, einem parallelen Rechensystem, das Computer mit gemeinsam genutztem Speicher in verteilten Speichernetzwerken kombiniert. Verbundene CPUs in einer hybriden Speicherumgebung können auf den gemeinsam genutzten Speicher und auf Aufgaben zugreifen, die anderen Einheiten im selben Netzwerk zugewiesen wurden.
Neben den drei Hauptarchitekturen gibt es weitere, weniger verbreitete parallele Rechenarchitekturen, die für die Bewältigung größerer Probleme oder hochspezialisierter Aufgaben konzipiert sind. Dazu gehören Vektorprozessoren – für Daten-Arrays, die als „Vektoren“ bezeichnet werden – und Prozessoren für allgemeines Rechnen auf Grafikprozessoren (GPGCUs). Eine davon, CUDA, eine von Nvidia entwickelte proprietäre GPGCU-Programmierschnittstelle (API), ist entscheidend für Deep Learning (DL), die Technologie, die den meisten KI-Anwendungen zugrunde liegt.
Es gibt vier Arten des parallelen Rechnens, jede mit ihrem eigenen spezifischen Zweck:
Die Parallelität auf Bitebene beruht auf einer Technik, bei der die Wortgröße des Prozessors erhöht und die Anzahl der Befehle, die der Prozessor zur Lösung eines Problems ausführen muss, verringert wird. Bis 1986 wurde die Computerarchitektur dadurch weiterentwickelt, dass die Parallelität auf Bitebene von 4-Bit-Prozessoren auf 8-Bit-, 16-Bit-, 32-Bit- und 64-Bit-Prozessoren erhöht wurde, wobei jede Generation die vorherige übertraf. Das vielleicht bekannteste Beispiel für einen Fortschritt in Sachen Bitparallelität war die Nintendo 64 – das erste Mal, dass eine Mainstream-Anwendung 64-Bit verwendete.
Parallelität auf Befehlsebene (Instruction Level Parallelity, ILP) ist eine Art des parallelen Rechnens, bei dem der Prozessor auswählt, welche Befehle ausgeführt werden. Bei ILP sind die Prozessoren so konzipiert, dass sie bestimmte Vorgänge gleichzeitig ausführen, um die Ressourcenoptimierung zu verbessern und den Durchsatz zu erhöhen.
Aufgabenparallelität ist eine Art des parallelen Rechnens, bei der Code über mehrere Prozessoren hinweg parallelisiert wird, die gleichzeitig Aufgaben für dieselben Daten ausführen. Aufgabenparallelität wird verwendet, um die serielle Laufzeit zu reduzieren, indem Aufgaben gleichzeitig ausgeführt werden; beispielsweise beim Pipelining, wo eine Reihe von Aufgaben auf einem einzigen Datensatz ausgeführt wird.
Die Superword-Level-Parallelität (SLP) ist eine Vektorisierungstaktik, die für Inline-Code verwendet wird und weiter fortgeschritten ist als ILP. Die Vektorisierung ist ein paralleler Rechenprozess, mit dem mehrere ähnliche Aufgaben gleichzeitig erledigt werden können, was Zeit und Ressourcen spart. SLP wird verwendet, um skalare Anweisungen zu identifizieren, die in einem Codeblock redundant sind, und sie zu einer einzigen Superwort-Operation zu kombinieren.
Von Blockchains über Smartphones und Spielekonsolen bis hin zu Chatbots ist paralleles Rechnen ein wesentlicher Bestandteil vieler Technologien, die unsere Welt antreiben. Hier sind einige Beispiele:
Viele Smartphones verlassen sich auf die parallele Verarbeitung, um ihre Aufgaben schneller und effizienter zu erledigen. Das iPhone 14 verfügt beispielsweise über eine 6-Kern-CPU und eine 5-Kern-GPU, wodurch es marktführende 17 Billionen Aufgaben pro Sekunde ausführen kann – ein undenkbares Leistungsniveau bei seriellem Rechnen.
Blockchain-Technologie, die Technologie, die Kryptowährungen, Wahlgeräten, das Gesundheitswesen und viele andere fortschrittliche Anwendungen digitaler Technologie zugrunde liegt, basiert auf parallelem Rechnen, um mehrere Computer zur Validierung von Transaktionen und Eingaben miteinander zu verbinden. Paralleles Rechnen ermöglicht es, Transaktionen in einer Blockchain gleichzeitig statt einzeln zu verarbeiten, was den Durchsatz erhöht und sie hochgradig skalierbar und effizient macht.
Die leistungsstärksten Laptops von heute – MacBooks, ChromeBooks und ThinkPads – verwenden Chips mit mehreren Prozessorkernen, eine Grundlage für Parallelität. Beispiele für Multicore-Prozessoren sind der Intel Core i5 und der HP Z8, mit denen Benutzer Videos in Echtzeit bearbeiten, 3D-Grafiken ausführen und andere komplexe, ressourcenintensive Aufgaben ausführen können.
Das Internet der Dinge (Internet of Things, IoT) basiert auf Daten, die von Sensoren erfasst werden, die mit dem Internet verbunden sind. Sobald diese Daten erfasst wurden, ist paralleles Rechnen erforderlich, um sie zu analysieren, um Erkenntnisse zu gewinnen und komplexe Systeme wie Kraftwerke, Dämme und Verkehrssysteme zu unterstützen. Herkömmliches serielles Rechnen kann Daten nicht schnell genug durchsuchen, damit das IoT funktioniert. Somit ist paralleles Rechnen für die Weiterentwicklung der IoT-Technologie von entscheidender Bedeutung.
Parallele Datenverarbeitung spielt eine kritische Rolle beim Training von ML-Modellen für KI-Anwendungen wie Gesichtserkennung und Verarbeitung natürlicher Sprache (NLP). Durch die gleichzeitige Ausführung von Vorgängen reduziert paralleles Rechnen die Zeit, die für das genaue Trainieren von ML-Modellen anhand von Daten benötigt wird, erheblich.
Der Computer, der die Raumfähre antreibt, stützt sich auf fünf parallel arbeitende IBM® AP-101-Computer, um seine Avionik zu steuern und Daten in Echtzeit zu überwachen. Diese leistungsstarken Maschinen, die auch in Kampfjets eingesetzt werden, können fast 500.000 Anweisungen pro Sekunde ausführen.
Supercomputer sind so stark auf parallele Datenverarbeitung angewiesen, dass sie oft als parallele Computer bezeichnet werden. Der Supercomputer American Summit zum Beispiel verarbeitet 200 Billiarden Operationen pro Sekunde, um den Menschen zu helfen, die Physik und die natürliche Umwelt besser zu verstehen.2
IBM Spectrum LSF Suites ist eine Plattform für Workloadmanagement und ein Job-Scheduler für verteiltes Hochleistungscomputing (HPC).
Hybrid Cloud HPC-Lösungen von IBM helfen bei der Bewältigung großer, rechenintensiver Herausforderungen und beschleunigen die Erkenntnisgewinnung.
Finden Sie die richtige Cloud-Infrastrukturlösung für Ihre Geschäftsanforderungen und skalieren Sie Ressourcen nach Bedarf.