Freigeben über


Richtlinien für das Ausführen von MPI-Anwendungen in Azure

Dieses Thema enthält Richtlinien und Verfahren, mit denen MPI-Anwendungen auf Windows Azure-Knoten ausgeführt werden können. Diese Informationen gelten für Windows Azure-Knoten, die einem lokalen Windows HPC-Cluster (in einem Windows Azure-Szenario "burst" ) oder Knoten hinzugefügt werden, die als Teil eines Windows Azure-Diensts bereitgestellt werden, der den Windows Azure HPC Scheduler verwendet (nur Windows Azure).

Allgemeine Richtlinien zu Daten- und Dateifreigaben auf Windows Azure-Knoten finden Sie unter Richtlinien für das Ausführen von HPC-Anwendungen auf Azure Nodes.

In diesem Thema:

Welche Art von MPI-Aufträgen eignen sich am besten für Windows Azure?

MPI-Aufträge, die nicht besonders latenz- und bandbreitenempfindlich sind, werden in der Windows Azure-Umgebung wahrscheinlicher skaliert. Latenz- und Bandbreitenabhängige MPI-Aufträge können auch kleine Aufträge ausführen, bei denen eine einzelne Aufgabe nicht mehr als ein paar Knoten ausgeführt wird. Beispielsweise können Sie im Falle einer Technischen Simulation viele kleine Aufträge ausführen, um den parametrischen Raum zu untersuchen und zu definieren, bevor Sie die Modellgröße erhöhen. Dies kann besonders in Situationen hilfreich sein, in denen der Zugriff auf lokale Computeknoten begrenzt ist und Sie sicherstellen möchten, dass Sie Die Clusterzeit für die am besten geeigneten Modelle verwenden.

Warum machen wir diese Empfehlungen? MPI-Aufträge werden häufig auf Clustern mit spezieller Hardware mit geringer Latenz, Netzwerkhardware mit hoher Bandbreite ausgeführt. Windows Azure-Knoten sind derzeit nicht mit diesem Netzwerktyp verbunden. Darüber hinaus werden Windows Azure-Knoten regelmäßig vom Windows Azure-System neu bereitgestellt. Wenn ein Knoten während der Ausführung eines MPI-Auftrags neu bereitgestellt wird, schlägt der MPI-Auftrag fehl. Je mehr Knoten Sie für einen einzelnen MPI-Auftrag verwenden und je länger der Auftrag ausgeführt wird, desto wahrscheinlicher ist es, dass einer der Knoten neu bereitgestellt wird, während der Auftrag ausgeführt wird.

Registrieren eines MPI-Auftrags mit der Firewall auf Windows Azure-Knoten

Ein Administrator muss die Windows-Firewall konfigurieren, um die MPI-Kommunikation zwischen den Computeknoten in Windows Azure zu ermöglichen. Dazu können Sie jede MPI-Anwendung bei der Firewall registrieren (eine anwendungsbasierte Ausnahme erstellen). Auf diese Weise kann MPI-Kommunikation an einem Port erfolgen, der dynamisch von der Firewall zugewiesen wird. Sie können Firewallausnahmen auf Ihren Knoten mithilfe der befehle clusrun und hpcfwutil konfigurieren.

Hinweis

Für platzende Windows Azure-Knoten kann ein Administrator einen Firewallausnahmebefehl so konfigurieren, dass er automatisch auf allen neuen Windows Azure-Knoten ausgeführt wird, die Ihrem Cluster hinzugefügt werden. Nachdem Sie den befehl hpcfwutil ausgeführt und überprüft haben, ob Ihre Anwendung funktioniert, können Sie den Befehl einem Startskript für Ihre Windows Azure-Knoten hinzufügen. Weitere Informationen finden Sie unter Konfigurieren eines Startskripts für Windows Azure Nodes.

Im folgenden Verfahren wird beschrieben, wie Sie allen Knoten eine Ausnahme für myApp.exe hinzufügen. Sie müssen administrator für den Windows HPC-Cluster oder für die Windows Azure HPC Scheduler-Bereitstellung sein, um die folgenden Schritte auszuführen.

So konfigurieren Sie eine Firewall-Ausnahme für myApp.exe

  1. Stellen Sie eine Verbindung mit Ihrem Kopfknoten auf eine der folgenden Arten her (mithilfe von Administratoranmeldeinformationen):

    • Melden Sie sich direkt beim Kopfknoten (lokal) an.

    • Führen Sie den Befehl auf einem Clientcomputer aus, auf dem die HPC Pack-Clienthilfsprogramme installiert sind (lokal). Wenn die CCP_SCHEDULER Umgebungsvariable nicht auf dem Computer festgelegt ist, schließen Sie den /scheduler ein:<yourHeadNodeName> Parameter im clusrun Befehl.

    • Verwenden Sie das Windows Azure-Verwaltungsportal, um eine Remotedesktopverbindung mit einem Kopfknoten in Ihrer Dienstbereitstellung (Windows Azure HPC Scheduler) herzustellen.

  2. Öffnen Sie eine Eingabeaufforderung.

  3. Geben Sie folgenden Befehl ein:

    clusrun hpcfwutil register myApp.exe e:\approot\myApp.exe  
    

Zum Ausführen eines clusrun-befehls auf einer Teilmenge von Knoten können Sie einen clusrun Parameter wie /nodegroup:<node_group_name>, /nodes:<node_list> (kommagetrennt) oder /template:<node_template_name>angeben. Weitere Informationen finden Sie unter clusrun.

Festlegen der MPI-Netmaske für Platz auf Windows Azure-Knoten

Wenn Sie MPI-Aufträge auf Windows Azure-Knoten ausführen, stellen Sie sicher, dass sich die IP-Adressen der Windows Azure-Knoten innerhalb des Bereichs der akzeptierten IP-Adressen befinden, die für die MPI-Netzwerkmaske angegeben sind. Die MPI-Netzwerkmaske bestimmt, welche IP-Adressen ein MPI-Rang akzeptieren kann. Wenn Aufträge unter Windows Azure-Knoten fehler mit Fehlern bei Verbindungsfehlern auftreten, müssen Sie möglicherweise die Netzmaske zurücksetzen, um die Kommunikation zwischen den Knoten zu aktivieren.

Der standardmäßige clusterweite Bereich wird über die CCP_MPI_NETMASK Clusterumgebungsvariable definiert. Der in dieser Clustervariable angegebene Wert wird automatisch als Systemumgebungsvariable auf allen Clusterknoten festgelegt. Je nach Ihren Anforderungen kann ein Administrator die Netzwerkmaske auf clusterweiter Ebene neu konfigurieren oder die Clustereinstellungen auf Knoten- oder Knotengruppenebene außer Kraft setzen. Ein Auftragsbesitzer kann Cluster- oder Knoteneinstellungen auf Auftragsebene überschreiben (weitere Informationen finden Sie unter Umgebungsvariablenhierarchie).

clusterebene

Sie können die Netzmaske (alle IP-Adressen zulassen) im gesamten Cluster deaktivieren. Führen Sie beispielsweise den folgenden Befehl auf dem Kopfknoten aus:

setx CCP_MPI_NETMASK=”0.0.0.0/0.0.0.0”

Sie können den Bereich erweitern, um sicherzustellen, dass er Ihre Windows Azure-Knoten und lokale Knoten enthält. Wenn Ihre Windows Azure-Knoten beispielsweise eine IP-Adresse von 10.x.x.x aufweisen und der Standardadressbereich für lokale Knoten 10.x.x.x.x oder 10.1.x.x lautet, können Sie die Netmask wie folgt festlegen:

cluscfg setenvs ccp_mpi_netmask=10.0.0.0/255.0.0.0

Wichtig

Wenn Sie die Konnektivität zwischen dem Zugriff auf windows Azure-Knoten und lokalen Ressourcen konfigurieren, sollten Sie separate Netmasks für Ihre lokalen und Windows Azure-Knoten definieren. Stellen Sie sicher, dass die Netmaske für die Windows Azure-Knoten keine lokalen IP-Adressen zulässt.

Knotenebene

Sie können die Netzmaske (alle IP-Adressen zulassen) nur auf Ihren Windows Azure-Knoten deaktivieren oder festlegen. Um beispielsweise die Netmaske zu deaktivieren, geben Sie den folgenden Befehl ein:

clusrun /nodegroup:AzureNodes setx CCP_MPI_NETMASK=”0.0.0.0/0.0.0.0”

Ein Auftragsbesitzer kann den gewünschten Bereich (oder ihn deaktivieren) auf Auftragsebene angeben, indem die MPI-Umgebungsvariable MPICH_NETMASK <Bereichs> in den mpiexec- Befehlsargumenten festgelegt wird. Wenn die Windows Azure-Knoten beispielsweise IP-Adressen haben, die mit 10.28.x.x beginnen, geben Sie den folgenden Befehl ein:

job submit /nodegroup:azurenodes /numcores:32 /stdout: %CCP_PACKAGE_ROOT%\myApp\out.txt /workdir: %CCP_PACKAGE_ROOT%\myApp mpiexec –env MPICH_NETMASK 10.28.0.0/255.255.0.0 myApp.exe

Ablaufverfolgung von MPI-Anwendungen auf Windows Azure-Knoten

Wenn Sie versuchen, eine MPI-Anwendung auf Windows Azure-Knoten mithilfe des Arguments –trace in mpiexecnachzuverfolgen, ist die Standardmäßige Ablaufverfolgungsdateigröße (10 GB) zu groß. Die Auftragsübermittlung schlägt wahrscheinlich mit einer Meldung über unzureichenden Speicherplatz fehl. Sie können die Dateigröße der Ablaufverfolgung reduzieren, indem Sie das Argument –tracefilemax einschließen. Um beispielsweise eine Ablaufverfolgungsdateigröße von 1 GB zu konfigurieren, legen Sie –tracefilemax 1000fest.

Identifizieren von Windows Azure-Knoten in MPI-Fehlermeldungen

Fehlermeldungen für MPI-Anwendungen verwenden in der Regel den Hostnamen, um Knoten zu identifizieren. In Windows Azure ist der Hostname nicht der Anzeigename für die Knoten und kann schwer zu identifizieren sein. Sie können HPC Cluster Manager verwenden, um den Knotennamen im HPC-Cluster und den Namen der Windows Azure-Instanz anzuzeigen.

Zusätzliche Überlegungen für Platz für Windows Azure

  • MPI-Aufträge können nicht über lokale und Windows Azure-Knoten oder über verschiedene Windows Azure-Knotenbereitstellungen (Windows Azure-Knoten, die mithilfe verschiedener Knotenvorlagen bereitgestellt werden) umfassen. Separate Windows Azure-Knotenbereitstellungen sind isoliert, und MPI-Prozesse könnten nicht miteinander kommunizieren. Sie können verhindern, dass MPI-Aufträge diese Grenzen überschreiten, indem Sie MPI-Aufträge an bestimmte Knotengruppen übermitteln. Knotengruppen können vom Administrator auf Der Ebene der Auftragsvorlage erzwungen oder vom Auftragsbesitzer auf Auftragsebene angegeben werden.

Siehe auch

Richtlinien für die Ausführung von HPC-Anwendungen auf Azure Nodes
hpcpack