Azure Batch
- 10 Minuten
High Performance Computing (HPC) ist die Praxis der Verwendung erheblicher Rechenleistung, die eine hohe Leistung bietet, verglichen mit dem, was Sie bei der Verwendung Ihres Laptops und/oder Ihrer Arbeitsstation erhalten können. Es löst große Probleme, die gleichzeitig auf mehreren Kernen ausgeführt werden müssen.
Dies geschieht, indem sie ein Problem in kleinere berechnungsfähige Einheiten aufteilen und diese Einheiten in ein verteiltes System verteilen. Es kommuniziert kontinuierlich zwischen ihnen, um die endgültige Lösung schneller zu erreichen, als die gleiche Berechnung auf weniger Kernen auszuführen.
In Azure stehen mehrere HPC- und Batchverarbeitungsoptionen zur Verfügung. Wenn Sie mit einem Azure-Experten sprechen, sollten Sie sich auf drei Optionen konzentrieren: Azure Batch, Azure CycleCloud und Microsoft HPC Pack. Die folgenden Einheiten in diesem Modul konzentrieren sich auf jede Option. Es ist wichtig zu beachten, dass diese Entscheidungen nicht gegenseitig ausschließen. Sie bauen aufeinander auf und können als verschiedene Werkzeuge in einem Werkzeugkasten betrachtet werden.
Hier erfahren Sie mehr über hochleistungsbasiertes Computing im Allgemeinen und erfahren mehr über Azure HPC.
Was ist HPC bei Azure?
Es gibt viele verschiedene Branchen, die leistungsstarke Computerressourcen für spezialisierte Aufgaben benötigen. Beispiel:
- In der Genforschung, Gensequenzierung.
- In der Erdöl- und Erdgasexploration, Lagerstättensimulation.
- Im Bereich Finanzen, Marktmodellierung.
- Im Engineering, physikalische Systemmodellierung.
- In der Meteorologie, Wettermodelle.
Diese Aufgaben erfordern Prozessoren, die Anweisungen schnell ausführen können. HPC-Anwendungen in Azure können auf Tausende von Computekernen skaliert werden, die lokale große Rechenleistung erweitern oder als 100 % cloudnative Lösung ausgeführt werden. Diese HPC-Lösung, einschließlich der Kopfknoten, Computeknoten und Speicherknoten, wird in Azure ohne Hardwareinfrastruktur ausgeführt, um diese aufrechtzuerhalten. Diese Lösung basiert auf den von Azure verwalteten Diensten: Skalierungsgruppen für virtuelle Computer, virtuelles Netzwerk und Speicherkonten.
Diese Dienste werden in einer Hochverfügbarkeitsumgebung ausgeführt, gepatcht und unterstützt, sodass Sie sich auf die Lösung selbst konzentrieren können und nicht auf die Umgebung, in der sie ausgeführt werden, konzentrieren müssen. Ein Azure HPC-System hat auch den Vorteil, dass Sie ressourcen dynamisch bei Bedarf hinzufügen und sie entfernen können, wenn die Nachfrage fällt.
Was ist Parallel Computing auf verteilten Systemen?
Parallel Computing ist die gleichzeitige Verwendung mehrerer Computeressourcen zur Lösung eines Rechenproblems:
- Ein Problem ist in diskrete Teile unterteilt, die gleichzeitig gelöst werden können.
- Jeder Teil wird weiter auf eine Reihe von Anweisungen aufgeschlüsselt.
- Anweisungen von jedem Teil werden gleichzeitig auf verschiedenen Prozessoren ausgeführt.
- Ein gesamter Kontroll-/Koordinierungsmechanismus wird eingesetzt.
Verschiedene Phasen des Parallelismus
Es gibt verschiedene Möglichkeiten, parallele Computer zu klassifizieren, und Flynns Taxonomie ist eine der am häufigsten verwendeten Möglichkeiten, dies zu tun. Es unterscheidet Computerarchitekturen mit mehreren Prozessorn je nachdem, wie sie entlang der beiden unabhängigen Dimensionen von Instruction Stream und Data Stream klassifiziert werden können. Jede dieser Dimensionen kann nur einen von zwei möglichen Zuständen aufweisen: Single oder Multiple.
Dieses Diagramm zeigt eine Clientanwendung oder einen gehosteten Dienst, der mit Batch interagiert, um Eingaben hochzuladen, Aufträge zu erstellen, Aufgaben zu überwachen und die Ausgabe herunterzuladen.
Wir können uns die vier verschiedenen Klassifikationen genauer ansehen.
SISD | SIMD | MISD | MIMD |
---|---|---|---|
- Serieller Computer (nichtparallel) - Einzelanweisung: Während eines Taktzyklus wird nur ein Anweisungsdatenstrom von der CPU bearbeitet. - Einzelne Daten: Nur ein Datenstrom wird während eines einzelnen Takts als Eingabe verwendet. - Ältester Computertyp. Beispiele: 1. Großrechner der Frühen Generation 2. Minicomputer, Arbeitsstationen 3. Einzelprozessorkern-PCs |
- Paralleler Computer - Einzelanweisung: Alle Verarbeitungseinheiten führen bei jedem bestimmten Takt dieselbe Anweisung aus. - Mehrere Daten: Jede Verarbeitungseinheit kann auf einem anderen Datenelement arbeiten. - Am besten geeignet für spezialisierte Probleme, die durch einen hohen Grad an Regularität gekennzeichnet sind, wie z. B. Grafiken/Bildverarbeitung. - Die meisten modernen Computer mit Grafikprozessoreinheiten (GPUs) verwenden SIMD-Anweisungen und Ausführungseinheiten. Beispiele: 1. Prozessorarrays: Thinking Machines CM-2, MasPar MP-1 & MP-2, ILLIAC IV 2. Vektorpipelines: IBM 9000, Cray X-MP, Y-MP & C90, Fujitsu VP, NEC SX-2, Hitachi S820, ETA10 |
- Paralleler Computer - Mehrere Anweisungen: Jede Verarbeitungseinheit arbeitet unabhängig mit separaten Befehlsströmen auf den Daten. - Einzelne Daten: Ein einzelner Datenstrom wird in mehrere Verarbeitungseinheiten eingespeist. - Nur wenige (falls vorhanden) tatsächliche Beispiele für diese Klasse paralleler Computer sind jemals vorhanden. Beispiele: 1. Mehrere Frequenzfilter, die auf einem einzelnen Signalstrom ausgeführt werden 2. Mehrere Kryptografiealgorithmen, die versuchen, eine einzelne codierte Nachricht zu knacken |
- Paralleler Computer - Mehrere Anweisungen: Jeder Prozessor kann einen anderen Anweisungsstream ausführen. - Mehrere Datensätze: Jeder Prozessor kann mit einem anderen Datenstrom arbeiten. - Derzeit die am häufigsten verwendete Art von parallelen Computer - die meisten modernen Supercomputer fallen in diese Kategorie. Beispiele: 1. Die aktuellsten Supercomputer 2. Vernetzte parallele Computercluster und "Raster" 3. SMP-Computer mit mehreren Prozessoren 4. Multikern-PCs |
Verschiedene Arten von HPC-Aufträgen: Massiv parallel vs eng gekoppelt
Parallele Aufträge haben Rechenprobleme, die in kleine, einfache und unabhängige Aufgaben unterteilt sind. Aufgaben können gleichzeitig ausgeführt werden, oft mit wenig oder gar keiner Kommunikation zwischen ihnen.
Häufige Anwendungsfälle für parallele Aufträge sind Risikosimulationen, molekulare Modellierung, Kontextsuche und Logistiksimulationen.
Eng gekoppelte Aufträge haben eine große gemeinsame Arbeitsauslastung, die in kleinere Aufgaben unterteilt ist, die kontinuierlich kommunizieren. Die verschiedenen Knoten im Cluster kommunizieren miteinander, während sie ihre Verarbeitung durchführen.
Häufige Anwendungsfälle für eng gekoppelte Aufträge umfassen:
- Rechenflüssigkeitsdynamik.
- Modellierung der Wettervorhersage.
- Materialsimulationen.
- Autokollisionsemulationen.
- Geospatialsimulationen.
- Verwaltung des Datenverkehrs.
Was ist Message Passing Interface (MPI)
MPI ist ein System, das einen tragbaren und effizienten Standard für die Nachrichtendurchführung bereitstellt. Es ist hochleistungsfähig, portierbar, skalierbar und wurde entwickelt, um an Netzwerken verschiedener paralleler Computer zu arbeiten.
MPI hat bei der Vernetzung und parallelen Computing auf industrieller und globaler Ebene geholfen. Außerdem wurde die Arbeit von groß angelegten parallelen Computeranwendungen verbessert.
Zu den Vorteilen des Microsoft MPI gehören:
- Einfaches Portieren vorhandener Code, der MPICH verwendet.
- Sicherheit basierend auf Active Directory Domain Services.
- Hohe Leistung auf dem Windows-Betriebssystem.
- Binäre Kompatibilität über verschiedene Arten von Verbindungsoptionen hinweg.