
Es ist ungefähr anderthalb Jahre her, seit wir ein wiederverwendbarer Azure Cloud Service für die Bereitstellung eines einfachen Windows MS-MPI-Clusters ohne Installation von HPC Pack. Azure hat seitdem viele Änderungen erfahren, und wir dachten, es wäre sinnvoll, dieses Thema noch einmal aufzugreifen, um zu sehen, wie die aktuelle Landschaft für die Ausführung von Windows MPI-Anwendungen in der Cloud aussieht.
Erstens wurden Cloud-Dienste und die sogenannten „IaaS v1 Virtual Machines“ im Azure-Portal auf den Status „Classic“ zurückgestuft. Microsoft empfiehlt nun für alle neuen Bereitstellungen die Verwendung des Azure Resource Managers (ARM). Mit dem Azure Resource Manager können Kunden eine deklarative Vorlage in JSON übermitteln, die alle Cloud-Ressourcen wie VMs, Load Balancer und Netzwerkschnittstellen definiert, die als Teil einer Anwendung oder eines Clusters erstellt werden müssen. Abhängigkeiten zwischen Ressourcen können definiert werden, und der Resource Manager ist intelligent genug, um die Ressourcenbereitstellung nach Möglichkeit zu parallelisieren. Dies kann die Bereitstellung eines neuen Clusters oder einer neuen Anwendung deutlich beschleunigen als das alte Modell. Der Azure Resource Manager entspricht im Wesentlichen CloudFormation auf AWS. Es gibt jedoch einige zusätzliche Feinheiten, wie z. B. die Möglichkeit, Schleifen in der Vorlage anzugeben. Die Handhabung der bedingten Ressourcenbereitstellung ist in ARM-Vorlagen jedoch umständlicher als in CloudFormation. Beide Dienste leiden unter dem Versuch, Programmierlogik innerhalb von JSON zu unterstützen. Insgesamt sind ARM-Bereitstellungen jedoch deutlich einfacher zu verwalten als klassische.
Das Azure-Schnellstartvorlagen Das Projekt auf Github ist eine hervorragende Ressource für ARM-Vorlagen. Das Bereitstellen einer Anwendung ist buchstäblich so einfach wie das Klicken auf die Schaltfläche „In Azure bereitstellen“ und das Ausfüllen einiger Vorlagenparameterwerte. Im HPC-Bereich gibt es eine praktische HPC Pack-Beispiel verfügbar, die zum Bereitstellen und Einrichten des Schedulers verwendet werden können.
Wie wir jedoch bereits in unserem ursprünglichen Blogbeitrag erwähnt haben, ist HPC Pack möglicherweise nicht die beste Wahl, wenn Sie gerade erst mit MPI beginnen und einfach einen neuen MPI-Cluster starten, Ihre Anwendung testen und anschließend alles wieder herunterfahren möchten. HPC Pack bietet zwar die Funktionen eines vollwertigen HPC-Schedulers, diese zusätzliche Leistung geht jedoch mit einem gewissen Ressourcenaufwand auf dem Submit-Knoten einher (Einrichten von Active Directory, Installieren von SQL Server usw.). Dies kann übertrieben sein, wenn Sie nur einen einmaligen Cluster zum Ausführen einer MPI-Anwendung benötigen.
Eine weitere potenziell leichtere Option für die Ausführung von Windows MPI-Anwendungen in der Cloud ist der Azure Batch-Dienst. Kürzlich Microsoft kündigte Unterstützung an zum Ausführen von MPI-Aufgaben mit mehreren Instanzen auf einem Pool von VMs. Dies scheint eine nützliche Option für diejenigen zu sein, die die Ausführung von MPI-Jobs automatisieren möchten. Es erfordert jedoch einige Investitionen von Entwicklerressourcen, um sich mit dem Dienst vertraut zu machen, bevor MPI-Jobs ausgeführt werden können.
Wir sind der Meinung, dass noch Raum für eine Azure Resource Manager-Vorlage besteht, die 1) einen einfachen Windows MPI-Cluster ohne den Overhead von HPC Pack startet und 2) die Ausführung von MPI-Jobs über die Befehlszeile oder ein Batch-Skript von jedem Betriebssystem aus ermöglicht.
Zu diesem zweiten Punkt oben ist eine weitere interessante Entwicklung seit unserem ursprünglichen Beitrag, dass Microsoft beschlossen hat, unterstützt offiziell SSH für den Fernzugriff. Seit dieser Ankündigung Vorabversion des Codes wurde auf GitHub verfügbar gemacht.
Angesichts dieser Punkte haben wir beschlossen, eine einfache ARM-Vorlage zu erstellen, um beide Ziele zu erreichen. Für jemanden, der mit MS-MPI beginnt, ist dies unserer Meinung nach eine einfachere Möglichkeit, seinen Code auf einem Windows-Cluster in Azure auszuführen.
Hier ist ein einfaches Anwendungsbeispiel:
- Klicken Sie auf die Schaltfläche In Azure bereitstellen im Github-Projekt. Füllen Sie die Vorlagenparameter aus. Hier wird ein Standard_D2-Cluster mit zwei Knoten bereitgestellt:

- Notieren Sie sich die öffentliche IP-Adresse, die dem Cluster nach Abschluss der Bereitstellung zugewiesen wird.
- Die Vorlage aktiviert SSH und SFTP auf allen Knoten. Laden Sie Ihre Anwendung auf die erste VM im Cluster (N0) hoch. Hier verwenden wir die Hello World-Anwendung von diesem Blog-Post.
$ sftp ryan@40.76.38.78 Passwort für ryan@40.76.38.78: Verbunden mit 40.76.38.78. sftp> put MPIHelloworld.exe MPIHelloworld.exe wird nach C:/Users/ryan/MPIHelloworld.exe hochgeladen. MPIHelloworld.exe 100% 8192 8.0 KB/s 00:00 sftp> bye
- Melden Sie sich per SSH bei N0 an, kopieren Sie die MPI-Binärdatei in das freigegebene SMB-Verzeichnis (C:\shared) und führen Sie sie aus. Geben Sie Ihr Passwort als
Argument für den Schalter -pwd (unten redigiert). Das Kommandozeilenargument -savecreds speichert Ihre Anmeldeinformationen sicher auf
die Compute-Knoten, sodass Sie das Kennwort bei zukünftigen mpiexec-Aufrufen nicht angeben müssen. Siehe werden auf dieser Seite erläutert für weitere Informationen an.$ ssh ryan@40.76.38.78 Passwort für ryan@40.76.38.78: Microsoft Windows [Version 6.3.9600] (c) 2013 Microsoft Corporation. Alle Rechte vorbehalten. ryan@N0 C:\Users\ryan>copy MPIHelloworld.exe C:\shared 1 Datei(en) kopiert. ryan@N0 C:\Users\ryan>cd C:\shared ryan@N0 C:\shared>mpiexec -hosts 2 n0 1 n1 1 -pwd ****** -savecreds MPIHelloworld.exe Rang 1 empfing die Zeichenkette „Hello World“ von Rang 0
Und das war's! Für diejenigen, die eher GUI-orientiert sind, ist RDP auch für alle Instanzen im MPI-Cluster verfügbar. Gehen Sie weiter zum Github-Projektseite für weitere Informationen an.
