EnglischFranzösischSpanisch

OnWorks-Favicon

mpirun.lam - Online in der Cloud

Führen Sie mpirun.lam im kostenlosen OnWorks-Hosting-Anbieter über Ubuntu Online, Fedora Online, Windows-Online-Emulator oder MAC OS-Online-Emulator aus

Dies ist der Befehl mpirun.lam, der im kostenlosen OnWorks-Hosting-Provider über eine unserer zahlreichen kostenlosen Online-Workstations wie Ubuntu Online, Fedora Online, Windows-Online-Emulator oder MAC OS-Online-Emulator ausgeführt werden kann

PROGRAMM:

NAME/FUNKTION


mpirun - Ausführen von MPI-Programmen auf LAM-Knoten.

ZUSAMMENFASSUNG


mpirun [-fhvO] [-c # | -np #] [-D | -wd dir] [-ger | -nger] [-sigs | -nsigs] [-ssi-Taste
Wert] [-nw | -w] [-nx] [-pty | -npty] [-s Knoten] [-t | -toff | -ton] [-tv] [-x
VAR1[=WERT1][,VAR2[=WERT2],...]] [[-p prefix_str] [-sa | -sf]] [wo] Programm [--
Argumente]

Hinweis: Obwohl jede einzeln optional ist, ist mindestens eine von woher, -np, oder auch -c muß
im obigen Formular angegeben (dh wenn kein Schema verwendet wird).

mpirun [-fhvO] [-D | -wd dir] [-ger | -nger] [-sigs | -nsigs] [-ssi Schlüsselwert] [-nw | -w]
[-nx] [-pty | -npty] [-t | -toff | -ton] [-tv] [-x
VAR1[=WERT1][,VAR2[=WERT2],...]] Schema

Hinweis: Das -c2c und -lamm Optionen sind jetzt obsolet. Verwenden -ssi stattdessen. Siehe "SSI"
Abschnitt, unten.

SCHNELL ZUSAMMENFASSUNG


Wenn Sie einfach nur wissen möchten, wie eine MPI-Anwendung ausgeführt wird, möchten Sie wahrscheinlich die
folgende Kommandozeile:

% mpirun C my_mpi_application

Dadurch wird eine Kopie von ausgeführt meine_mpi_anwendung auf jeder CPU im aktuellen LAM-Universum.
Alternativ kann "N" anstelle von "C" verwendet werden, um anzuzeigen, dass eine Kopie von
meine_mpi_anwendung sollte auf jedem Knoten (im Gegensatz zur CPU) im aktuellen LAM ausgeführt werden
Universum. Schließlich:

% mpirun -np 4 my_mpi_application

kann verwendet werden, um LAM anzuweisen, explizit vier Kopien von . auszuführen meine_mpi_anwendung, Terminplanung
ein Round-Robin-Verfahren nach CPU im LAM-Universum. Siehe den Rest dieser Seite für mehr
Details, insbesondere den Abschnitt "Standortnomenklatur".

OPTIONAL


Es gibt zwei Formen von mpirun Befehl -- einer für Programme (dh SPMD-Stil
Anwendungen) und eine für Anwendungsschemata (siehe Anwendungsschema(5)). Beide Formen von mpirun
verwenden Sie standardmäßig die folgenden Optionen: -nger -w. Diese können jeweils durch ihre . überschrieben werden
Gegenstückoptionen, unten beschrieben.

Zusätzlich mpirun sendet den Namen des Verzeichnisses, in dem es auf dem lokalen aufgerufen wurde
Knoten zu jedem der entfernten Knoten und versuchen, in dieses Verzeichnis zu wechseln. Siehe die
Abschnitt "Aktuelles Arbeitsverzeichnis" unten.

-c # Synonym für -np (siehe unten).

-D Verwenden Sie den Speicherort des ausführbaren Programms als aktuelles Arbeitsverzeichnis für erstellte
Prozesse. Das aktuelle Arbeitsverzeichnis der erstellten Prozesse wird gesetzt
bevor das Programm des Benutzers aufgerufen wird. Diese Option schließt sich gegenseitig aus mit
-wd.

-f Konfigurieren Sie keine Standard-E/A-Dateideskriptoren – verwenden Sie Standardwerte.

-h Drucken Sie nützliche Informationen zu diesem Befehl.

-GeR Aktivieren Sie das Kommunikationsprotokoll GER (Garantierte Envelope Resources) und Fehler
Berichterstattung. Sehen MPI(7) für eine Beschreibung von GER. Diese Option ist gegenseitig
exklusiv mit -nger.

-nger Deaktivieren Sie GER (Garantierte Umschlagressourcen). Diese Option schließt sich gegenseitig aus
mit -GeR.

-nsig Verwenden Sie keine LAM-Catch-Signale in der Benutzeranwendung. Dies ist die Standardeinstellung, und
schließt sich gegenseitig aus mit -sig.

-np # Führen Sie so viele Kopien des Programms auf den angegebenen Knoten aus. Diese Option zeigt an
dass die angegebene Datei ein ausführbares Programm und kein Anwendungsschema ist.
Wenn keine Knoten angegeben werden, werden alle LAM-Knoten für die Planung berücksichtigt; LAM wird
Planen Sie die Programme in einer Round-Robin-Manier, "wrapping around" (und
Planung mehrerer Kopien auf einem einzelnen Knoten), falls erforderlich.

-npty Deaktivieren Sie die Pseudo-TTY-Unterstützung. Es sei denn, Sie haben Probleme mit pseudo-tty
unterstützen, benötigen Sie diese Option wahrscheinlich nicht. Gegenseitig exklusiv mit -pty.

-nw Warten Sie mit dem Beenden nicht, bis alle Prozesse abgeschlossen sind mpirun. Diese Option ist
sich gegenseitig ausschließen mit -w.

-nx LAM_MPI_*-, LAM_IMPI_*- oder IMPI_*-Umgebung nicht automatisch exportieren
Variablen an die entfernten Knoten.

-O Multicomputer ist homogen. Führen Sie beim Übergeben von Nachrichten keine Datenkonvertierung durch.
DIESE FLAGGE IST JETZT VERALTET.

-pty Aktivieren Sie die Pseudo-TTY-Unterstützung. Dies ermöglichte unter anderem zeilengepufferte
Ausgabe (was wahrscheinlich das ist, was Sie wollen). Dies ist die Standardeinstellung. Gegenseitig
exklusiv mit -npty.

-s Knoten Laden Sie das Programm von diesem Knoten. Diese Option ist in der Befehlszeile nicht gültig
wenn ein Anwendungsschema angegeben ist.

-sig Lassen Sie LAM-Signale im Benutzerprozess abfangen. Diese Optionen schließen sich gegenseitig aus
mit -nsig.

-ssi Haupt Wert
Senden Sie Argumente an verschiedene SSI-Module. Siehe den Abschnitt "SSI" unten.

-T, -Tonne Aktivieren Sie die Ausführungs-Trace-Generierung für alle Prozesse. Trace-Generierung wird
ohne weitere Maßnahmen fortfahren. Diese Optionen schließen sich gegenseitig aus mit
-tot.

-tot Aktivieren Sie die Ausführungs-Trace-Generierung für alle Prozesse. Trace-Generierung für
Der Nachrichtenverkehr beginnt, nachdem Prozesse gemeinsam aufgerufen wurden
MPIL_Trace_on(2). Beachten Sie, dass die Trace-Generierung für Datentypen und Kommunikatoren
werden wir fahren Sie fort, unabhängig davon, ob die Trace-Generierung für Nachrichten aktiviert ist oder
nicht. Diese Option schließt sich gegenseitig aus mit -t und -Tonne.

-Fernseher Starten Sie Prozesse unter dem TotalView Debugger.

-v Seien Sie ausführlich; berichten über wichtige Schritte, wie sie durchgeführt werden.

-w Warten Sie, bis alle Anwendungen beendet sind, bevor Sie mpirun Ausgänge.

-wd dir Wechseln Sie in das Verzeichnis dir, bevor das Programm des Benutzers ausgeführt wird. Beachten Sie, dass wenn
-wd Option erscheint sowohl in der Befehlszeile als auch in einem Anwendungsschema,
das Schema hat Vorrang vor der Befehlszeile. Diese Option ist gegenseitig
exklusiv mit -D.

-x Exportieren Sie die angegebenen Umgebungsvariablen vor der Ausführung in die Remote-Knoten
das Programm. Vorhandene Umgebungsvariablen können angegeben werden (siehe Beispiele
Abschnitt unten) oder neue Variablennamen mit entsprechenden Werten angegeben. Die
Parser für die -x Option ist nicht sehr anspruchsvoll; es versteht nicht einmal
zitierte Werte. Benutzern wird empfohlen, Variablen in der Umgebung festzulegen, und dann
- -x um sie zu exportieren (nicht zu definieren).

-Sa Den Exit-Status aller MPI-Prozesse anzeigen, unabhängig davon, ob sie fehlschlagen oder
erfolgreich laufen.

-sf Den Exit-Status aller Prozesse nur anzeigen, wenn einer von ihnen fehlschlägt.

-p Präfixstr
Präfixiert jeder angezeigten Prozessstatuszeile [-sa] und [-sf] durch das
Präfix_str.

woher Eine Reihe von Knoten- und/oder CPU-Kennungen, die angeben, wo begonnen werden soll Programm. Sehen
bhost(5) für eine Beschreibung der Knoten- und CPU-Kennungen. mpirun werden wir
benachbarte Ränge einplanen in MPI_COMM_WORLD auf demselben Knoten, wenn CPU-Kennungen
werden verwendet. Wenn beispielsweise LAM mit einer CPU-Anzahl von 4 auf n0 und einer CPU gebootet wurde
Zählung von 2 auf n1 und woher C ist, werden die Ränge 0 bis 3 auf n0 gelegt, und
Die Ränge 4 und 5 werden auf n1 platziert.

args Übergeben Sie diese Laufzeitargumente an jeden neuen Prozess. Das müssen immer die sein
letzte Argumente zu mpirun. Diese Option ist in der Befehlszeile nicht gültig, wenn ein
Anwendungsschema angegeben ist.

BESCHREIBUNG


Ein Aufruf von mpirun startet eine MPI-Anwendung, die unter LAM läuft. Wenn die Bewerbung
ist einfach SPMD, die Anwendung kann auf der mpirun Befehlszeile. Wenn die
Anwendung ist MIMD, bestehend aus mehreren Programmen, ein Anwendungsschema ist erforderlich in a
separate Datei. Sehen Anwendungsschema(5) für eine Beschreibung der Anwendungsschemasyntax, aber
es enthält im Wesentlichen mehrere mpirun Befehlszeilen, abzüglich des Befehlsnamens selbst. Die
die Möglichkeit, verschiedene Optionen für verschiedene Instanzen eines Programms anzugeben, ist eine andere
Grund für die Verwendung eines Anwendungsschemas.

Objekt-Typ Nomenklatur
Wie oben beschrieben, mpirun kann beliebige Orte im aktuellen LAM-Universum angeben.
Standorte können entweder nach CPU oder nach Knoten angegeben werden (vermerkt durch das "Wo" im SYNTAX
Abschnitt, oben). Beachten Sie, dass LAM Prozesse nicht an CPUs bindet – Angabe eines Speicherorts
"by CPU" ist wirklich ein bequemer Mechanismus für SMPs, der sich letztendlich auf a . abbildet
bestimmten Knoten.

Beachten Sie, dass LAM effektiv die Ränge von MPI_COMM_WORLD von links nach rechts im Wo nummeriert,
unabhängig davon, welche Nomenklatur verwendet wird. Dies kann wichtig sein, da typische MPI
Programme neigen dazu, mehr mit ihren unmittelbaren Nachbarn zu kommunizieren (dh myrank +/- X) als
entfernte Nachbarn. Wenn Nachbarn auf demselben Knoten landen, können die Shmem-RPIs verwendet werden für
Kommunikation statt der Netzwerk-RPIs, was zu einer schnelleren MPI-Leistung führen kann.

Wenn Sie Speicherorte nach Knoten angeben, wird eine Kopie einer ausführbaren Datei pro angegebenen Knoten gestartet.
Die Verwendung eines Kapitols "N" weist LAM an, alle verfügbaren Knoten zu verwenden, die lambooted wurden (siehe
Lamm(1)). Bereiche bestimmter Knoten können auch in der Form "nR[,R]*" angegeben werden, wobei
R spezifiziert entweder eine einzelne Knotennummer oder einen gültigen Bereich von Knotennummern im Bereich von
[0, Anzahl_Knoten). Zum Beispiel:

mpirun SUBST a.out
Führt eine Kopie der ausführbaren Datei aus a.aus auf allen verfügbaren Knoten im LAM-Universum.
MPI_COMM_WORLD Rang 0 wird auf n0 liegen, Rang 1 wird auf n1 liegen usw.

mpirun n0-3 a.out
Führt eine Kopie der ausführbaren Datei aus a.aus auf den Knoten 0 bis 3. MPI_COMM_WORLD Rang 0
wird auf n0 sein, Rang 1 wird auf n1 sein usw.

mpirun n0-3,8-11,15 a.out
Führt eine Kopie der ausführbaren Datei aus a.aus auf den Knoten 0 bis 3, 8 bis 11 und 15.
Die Ränge von MPI_COMM_WORLD werden wie folgt geordnet: (0, n0), (1, n1), (2, n2), (3, n3),
(4, n8), (5, n9), (6, n10), (7, n11), (8, n15).

Die Angabe nach CPU ist die bevorzugte Methode zum Starten von MPI-Jobs. Die Absicht ist, dass die
Boot-Schema verwendet mit Lamm(1) gibt an, wie viele CPUs auf jedem Knoten verfügbar sind,
und dann ein einziges, einfaches mpirun Befehl kann verwendet werden, um über alle von ihnen zu starten. Wie
Wie oben erwähnt, bindet die Angabe von CPUs Prozesse nicht wirklich an CPUs - es ist nur a
Komfortmechanismus für den Start auf SMPs. Ansonsten ist die by-CPU-Notation gleich
als Nebenknoten-Notation, außer dass "C" und "c" anstelle von "N" und "n" verwendet werden.

Nehmen Sie im folgenden Beispiel an, dass das LAM-Universum aus vier 4-Wege-SMPs besteht. So
c0-3 sind auf n0, c4-7 sind auf n1, c8-11 sind auf n2 und 13-15 sind auf n3.

mpirun C a.out
Führt eine Kopie der ausführbaren Datei aus a.aus auf allen verfügbaren CPUs im LAM-Universum.
Dies ist in der Regel die einfachste (und bevorzugte) Methode zum Starten aller MPI-Jobs (sogar
wenn es in einen Prozess pro Knoten aufgelöst wird). MPI_COMM_WORLD Ränge 0-3 werden auf n0 sein,
Die Ränge 4-7 befinden sich auf n1, die Ränge 8-11 befinden sich auf n2 und die Ränge 13-15 befinden sich auf n3.

mpirun c0-3 a.out
Führt eine Kopie der ausführbaren Datei aus a.aus auf den CPUs 0 bis 3. Alle vier Ränge von
MPI_COMM_WORLD wird auf MPI_COMM_WORLD sein.

mpirun c0-3,8-11,15 a.out
Führt eine Kopie der ausführbaren Datei aus a.aus auf den CPUs 0 bis 3, 8 bis 11 und 15.
MPI_COMM_WORLD Ränge 0-3 werden auf n0 liegen, 4-7 auf n2 und 8 auf n3.

Der Grund, warum die Nomenklatur nach CPU gegenüber der Nomenklatur nach Knoten bevorzugt wird, ist der beste
durch Beispiel gezeigt. Erwägen Sie, das erste CPU-Beispiel auszuführen (mit dem gleichen
MPI_COMM_WORLD-Mapping) mit der Nomenklatur nach Knoten -- Führen Sie eine Kopie von . aus a.aus für jeden
verfügbare CPU und maximieren Sie die Anzahl der lokalen Nachbarn, um möglicherweise MPI . zu maximieren
Leistung. Eine Lösung wäre, den folgenden Befehl zu verwenden:

mpirun n0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3 a.out

Dieses PayDay, ist aber definitiv klobig zu tippen. Es ist in der Regel einfacher, die By-CPU zu verwenden
Notation. Man könnte meinen, dass folgendes äquivalent ist:

mpirun N -np 16 a.out

Das ist nicht Äquivalent, da die MPI_COMM_WORLD-Rangzuordnungen vom Knoten zugewiesen werden
eher nach CPU. Daher befindet sich Rang 0 auf n0, Rang 1 befindet sich auf n1 usw. Beachten Sie, dass die
folgende jedoch is Äquivalent, da LAM das Fehlen eines Where als "C" interpretiert:

mpirun -np 16 a.out

Ein "C" kann jedoch praktischer sein, insbesondere für Batch-Warteschlangen-Skripte
da die genaue Anzahl der Prozesse zwischen den Warteschlangenübergaben variieren kann. Da die Charge
Das System bestimmt die endgültige Anzahl der verfügbaren CPUs mit einem generischen Skript, das
effektiv sagt "Run auf allem, was Sie mir gegeben haben" kann zu tragbarer / wiederverwendbarer führen
Skripte.

Schließlich sollte beachtet werden, dass die Angabe mehrerer where-Klauseln perfekt ist
akzeptabel. Daher ist auch die Vermischung der by-node- und by-CPU-Syntax gültig, albiet
normalerweise nicht sinnvoll. Zum Beispiel:

mpirun CN a.out

In einigen Fällen kann es jedoch hilfreich sein, mehrere where-Klauseln anzugeben. Betrachten Sie a
parallele Anwendung, bei der MPI_COMM_WORLD Rang 0 ein "Manager" ist und daher konsumiert
sehr wenige CPU-Zyklen, da normalerweise auf die Rückkehr von "Worker"-Prozessen gewartet wird
Ergebnisse. Daher ist es wahrscheinlich wünschenswert, einen "Worker"-Prozess auf allen verfügbaren auszuführen
CPUs und führen Sie einen zusätzlichen Prozess aus, der der "Manager" sein wird:

mpirun c0 C Manager-Worker-Programm

Anwendungsbereiche Schema or Ausführbar Programm?
Um die beiden unterschiedlichen Formen zu unterscheiden, mpirun sucht in der Befehlszeile nach wo oder dem
-c Möglichkeit. Wenn keines angegeben ist, wird angenommen, dass die in der Befehlszeile angegebene Datei
ein Anwendungsschema sein. Wenn entweder eine oder beide angegeben sind, wird die Datei angenommen
ein ausführbares Programm sein. Wenn wo und -c beide sind angegeben, dann Kopien der
Programme werden auf den angegebenen Knoten/CPUs nach einem internen LAM-Scheduling gestartet
Politik. Die Angabe nur eines Knotens zwingt LAM effektiv dazu, alle Kopien des Programms auszuführen
in einem Platz. Wenn -c gegeben ist, aber nicht wo, dann sind alle verfügbaren CPUs auf allen LAM-Knoten
Gebraucht. Wenn wo angegeben ist, aber nicht -c, dann wird auf jedem Knoten eine Kopie des Programms ausgeführt.

Mentessa for Good Art des
LAM sucht standardmäßig nach ausführbaren Programmen auf dem Zielknoten, auf dem ein bestimmtes
Instanziierung wird ausgeführt. Wenn das Dateisystem nicht geteilt wird, sind die Zielknoten
homogen ist und das Programm häufig neu kompiliert wird, kann es praktisch sein, LAM
Übertragen Sie das Programm von einem Quellknoten (normalerweise dem lokalen Knoten) auf jeden Zielknoten. Die
-s Option spezifiziert dieses Verhalten und identifiziert den einzelnen Quellenknoten.

Lokalisierung Mappen
LAM sucht nach einem ausführbaren Programm, indem es die Verzeichnisse im PATH des Benutzers durchsucht
Umgebungsvariable wie auf dem/den Quellknoten(n) definiert. Dieses Verhalten steht im Einklang mit
Einloggen in den Quellknoten und Ausführen des Programms von der Shell aus. Auf entfernten Knoten,
das "." Pfad ist das Home-Verzeichnis.

LAM sucht in drei Verzeichnissen nach einem Anwendungsschema: dem lokalen Verzeichnis, dem Wert
der Umgebungsvariablen LAMAPPLDIR und laminstalldir/boot, wobei "laminstalldir" ist
das Verzeichnis, in dem LAM/MPI installiert wurde.

Standard I / O
LAM leitet UNIX-Standardeingaben auf allen entfernten Knoten an /dev/null. Auf dem lokalen Knoten, der
aufgerufen mpirun, Standardeingabe wird geerbt von mpirun. Der Standard ist, was früher war
die Option -w, um einen widersprüchlichen Zugriff auf das Terminal zu verhindern.

LAM leitet UNIX-Standardausgaben und -Fehler an den LAM-Daemon auf allen entfernten Knoten. LAM
sendet alle erfassten Ausgaben/Fehler an den Knoten, der aufgerufen wurde mpirun und druckt es auf die
Standardausgabe/Fehler von mpirun. Lokale Prozesse erben die Standardausgabe/Fehler von
mpirun und direkt dorthin überweisen.

Somit ist es möglich, Standard-I/O für LAM-Anwendungen umzuleiten, indem die typischen
Shell-Umleitungsverfahren an mpirun.

% mpirun C my_app my_input my_output

Beachten Sie, dass in diesem Beispiel einzige der lokale Knoten (dh der Knoten, in dem mpirun aufgerufen wurde
from) erhält den Stream von my_input auf stdin. Die stdin auf allen anderen Knoten
wird an /dev/null gebunden. Die Standardausgabe aller Knoten wird jedoch in der
my_output-Datei.

Das -f Option vermeidet die gesamte Einrichtung, die zur Unterstützung der oben beschriebenen Standard-E/A erforderlich ist.
Entfernte Prozesse werden vollständig an /dev/null geleitet und lokale Prozesse erben die Datei
Beschreibungen von Lamm(1).

Pseudo-tty Support
Das -pty Option aktivierte Pseudo-TTY-Unterstützung für die Prozessausgabe (wird auch aktiviert durch
Ursprünglich). Dies ermöglicht unter anderem die zeilengepufferte Ausgabe von entfernten Knoten
(was wahrscheinlich das ist, was Sie wollen). Diese Option kann mit dem deaktiviert werden -npty Schalter.

Prozess Kündigung / Signal Handling
Wenn während der Ausführung einer MPI-Anwendung ein Rang abnormal stirbt (entweder vor dem Beenden)
aufrufen MPI_FINALIZE, oder als Folge eines Signals sterben), mpirun druckt einen Fehler aus
Nachricht und beenden Sie den Rest der MPI-Anwendung.

LAM/MPI installiert standardmäßig nur einen Signalhandler für ein Signal in Anwenderprogrammen
(SIGUSR2 standardmäßig, aber dies kann überschrieben werden, wenn LAM konfiguriert und erstellt wird).
Daher ist es für Benutzer sicher, ihre eigenen Signalhandler in LAM/MPI-Programmen zu installieren
(LAM bemerkt Todes-durch-Signal-Fälle, indem es den Rückgabestatus des Prozesses untersucht, der von der
Betriebssystem).

Benutzersignal-Handler sollten wahrscheinlich vermeiden, den MPI-Status zu bereinigen – LAM ist keines davon
threadsicher oder async-signal-sicher. Wenn beispielsweise ein Seg-Fehler auftritt in MPI_SEND
(vielleicht weil ein fehlerhafter Puffer übergeben wurde) und ein Benutzersignal-Handler wird aufgerufen, wenn dies
Benutzerhandler versucht aufzurufen MPI_FINALIZE, Schlimme Dinge könnten passieren, seit LAM/MPI war
bereits "in" MPI, als der Fehler auftrat. Schon seit mpirun wird bemerken, dass der Prozess gestorben ist
aufgrund eines Signals ist es wahrscheinlich nicht notwendig (und am sichersten), dass der Benutzer nur aufräumt
Nicht-MPI-Zustand.

Besitzt das -sig Option wird verwendet mit mpirun, LAM/MPI installiert mehrere Signalhandler an
lokal auf jedem Rang, um Signale abzufangen, Fehlermeldungen auszudrucken und den Rest zu löschen
MPI-Anwendung. Dies ist ein etwas redundantes Verhalten, da dies jetzt alles von gehandhabt wird
mpirun, aber es wurde aus Gründen der Abwärtskompatibilität belassen.

Prozess Beenden Status
Das -Sa, -sf und -p Parameter können zur Anzeige der vorhandenen Zustände der
einzelne MPI-Prozesse beim Beenden. -Sa erzwingt die Anzeige des Ausgangsstatus
für alle Prozesse; -sf zeigt die existierenden Zustände nur an, wenn mindestens ein Prozess beendet wird
entweder durch ein Signal oder einen Exit-Status ungleich Null (beachten Sie, dass das Verlassen vor dem Aufrufen
MPI_FINALIZE führt zu einem Exit-Status ungleich Null).

Der Status jedes Prozesses wird pro Zeile im folgenden Format ausgedruckt:

prefix_string Knoten-PID-Status beendet

If getötet ist dann 1 Status ist die Signalnummer. Wenn getötet ist dann 0 Status ist der Ausgang
Status des Prozesses.

Der Standard Präfixzeichenfolge ist "mpirun:", aber die -p Option kann verwendet werden, um dies zu überschreiben
String.

Aktuell Arbeiten Verzeichnis
Das Standardverhalten von mpirun hat sich in Bezug auf das Verzeichnis geändert, das verarbeitet wird
wird gestartet.

Das -wd Option zu mpirun ermöglicht es dem Benutzer, in ein beliebiges Verzeichnis zu wechseln, bevor seine
Programm aufgerufen wird. Es kann auch in Anwendungsschemadateien verwendet werden, um die Funktionsweise anzugeben
Verzeichnisse auf bestimmten Knoten und/oder für bestimmte Anwendungen.

Besitzt das -wd Option erscheint sowohl in einer Schemadatei als auch in der Befehlszeile, der Schemadatei
Verzeichnis überschreibt den Befehlszeilenwert.

Das -D Option ändert das aktuelle Arbeitsverzeichnis in das Verzeichnis, in dem die
ausführbare befindet. Sie kann nicht in Anwendungsschemadateien verwendet werden. -wd ist gegenseitig
exklusiv mit -D.

Wenn weder -wd noch -D angegeben sind, sendet der lokale Knoten den Verzeichnisnamen, wobei
mpirun wurde von jedem der entfernten Knoten aufgerufen. Die entfernten Knoten werden dann versuchen,
in dieses Verzeichnis wechseln. Wenn sie fehlschlagen (zB wenn das Verzeichnis dort nicht existiert
node), beginnen sie mit dem Home-Verzeichnis des Benutzers.

Alle Verzeichnisänderungen erfolgen, bevor das Programm des Benutzers aufgerufen wird; es wartet nicht bis
MPI_INIT wird genannt.

Prozess Arbeitsumfeld
Prozesse in der MPI-Anwendung erben ihre Umgebung vom LAM-Daemon nach dem
Knoten, auf dem sie ausgeführt werden. Die Umgebung eines LAM-Daemons wird beim Booten von
der LAM mit Lamm(1) und wird normalerweise von der Shell des Benutzers geerbt. Über den Ursprung
Knoten, dies wird die Shell sein, von der aus Lamm(1) wurde aufgerufen; auf entfernten Knoten, die genaue
Umgebung wird durch das Boot-SSI-Modul bestimmt, das von . verwendet wird Lamm(1). Das rsh-Boot-Modul,
verwendet beispielsweise entweder rsh/ssh, um den LAM-Daemon auf Remote-Knoten zu starten, und normalerweise
führt eine oder mehrere Shell-Setup-Dateien des Benutzers aus, bevor der LAM-Daemon gestartet wird.
Beim Ausführen von dynamisch verknüpften Anwendungen, die die LD_LIBRARY_PATH-Umgebung erfordern
zu setzenden Variablen ist darauf zu achten, dass sie beim Booten des
LAM.

Exportiert Arbeitsumfeld Variablen
Alle Umgebungsvariablen, die in der Form LAM_MPI_*, LAM_IMPI_* oder IMPI_* benannt sind, werden
automatisch in neue Prozesse auf den lokalen und entfernten Knoten exportiert werden. Dieser Export
kann mit dem gehemmt werden -nx .

Da es -x Option zu mpirun kann verwendet werden, um bestimmte Umgebungsvariablen zu exportieren
zu den neuen Prozessen. Während die Syntax des -x Option ermöglicht die Definition von new
Beachten Sie, dass der Parser für diese Option derzeit nicht sehr ausgereift ist - es
versteht nicht einmal zitierte Werte. Benutzern wird empfohlen, Variablen im
Umwelt und Nutzung -x sie zu exportieren; sie nicht zu definieren.

Spur Generation
Zwei Schalter steuern die Trace-Generierung von Prozessen, die unter LAM ausgeführt werden, und beide müssen aktiviert sein
die Ein-Position für tatsächlich zu erzeugende Traces. Der erste Schalter wird gesteuert durch
mpirun und der zweite Schalter wird zunächst durch mpirun kann aber zur Laufzeit mit umgeschaltet werden
MPIL_Trace_on(2) und MPIL_Trace_off(2). Das -t (-Tonne ist äquivalent) und -tot Optionen alle
Schalten Sie den ersten Schalter ein. Ansonsten ist der erste Schalter aus und ruft an MPIL_Trace_on(2)
im Anwendungsprogramm sind wirkungslos. Die -t Option schaltet auch die zweite ein
Schalter. Das -tot Option schaltet den zweiten Schalter aus. Sehen MPIL_Trace_on(2) und
lamtrace(1) für weitere Details.

MPI Daten-Management Umwandlung (Conversion)
Die MPI-Bibliothek von LAM konvertiert MPI-Nachrichten von der lokalen Darstellung in die LAM-Darstellung
nach dem Senden und dann nach Erhalt an die lokale Vertretung zurück. Wenn der Fall
eines LAM bestehend aus einem homogenen Netzwerk von Maschinen, wobei die lokale Repräsentation
von der LAM-Darstellung abweicht, kann dies zu unnötigen Konvertierungen führen.

Das -O Früher war ein Schalter notwendig, um dem LAM anzuzeigen, ob der Multicomputer
homogen oder nicht. LAM ermittelt jetzt automatisch, ob ein bestimmter MPI-Job
homogen oder nicht. Die -O Flag wird aus Gründen der Abwärtskompatibilität stillschweigend akzeptiert,
aber es wird ignoriert.

SSI (System Services Schnittstelle)
Das -ssi switch ermöglicht die Übergabe von Parametern an verschiedene SSI-Module. SSI . von LAM
Module sind ausführlich beschrieben in lamssi(7). SSI-Module haben direkten Einfluss auf MPI
Programme, da sie die Einstellung einstellbarer Parameter zur Laufzeit ermöglichen (z. B. welche RPI
zu verwendenden Kommunikationsgerätetreiber, welche Parameter an diesen RPI übergeben werden usw.).

Das -ssi switch nimmt zwei Argumente an: Haupt und Wertdem „Vermischten Geschmack“. Seine Haupt Argument spezifiziert im Allgemeinen
welches SSI-Modul den Wert erhält. Zum Beispiel die Haupt "rpi" wird verwendet, um auszuwählen
welches RPI für den Transport von MPI-Nachrichten verwendet werden soll. Die Wert Argument ist der Wert, der
ist bestanden. Zum Beispiel:

mpirun -ssi rpi lamd SUBST foo
Weist LAM an, das "lamd"-RPI zu verwenden und auf jedem Knoten eine einzelne Kopie von "foo" auszuführen.

mpirun -ssi rpi tcp SUBST foo
Weist LAM an, das "tcp"-RPI zu verwenden.

mpirun -ssi rpi sysv SUBST foo
Weist LAM an, das "sysv"-RPI zu verwenden.

Und so weiter. Die RPI SSI-Module von LAM sind beschrieben in lamssi_rpi(7).

Das -ssi Schalter kann mehrmals verwendet werden, um unterschiedliche zu spezifizieren Haupt und / oder Wert
Argumente. Wenn das gleiche Haupt wird mehrfach angegeben, die Werts sind verkettet mit
ein Komma (","), das sie trennt.

Beachten Sie, dass die -ssi switch ist einfach eine Verknüpfung zum Setzen von Umgebungsvariablen. Die
Der gleiche Effekt kann erreicht werden, indem vorher entsprechende Umgebungsvariablen gesetzt werden
Laufen mpirun. Die Form der Umgebungsvariablen, die LAM festlegt, sind:
LAM_MPI_SSI_key=Wert.

Beachten Sie, dass die -ssi switch überschreibt alle zuvor festgelegten Umgebungsvariablen. Beachten Sie auch
das unbekannte Haupt Argumente werden immer noch als Umgebungsvariable gesetzt -- sie werden nicht überprüft
(Durch mpirun) auf Richtigkeit. Unzulässig oder falsch Wert Argumente können sein oder nicht
gemeldet -- es hängt vom spezifischen SSI-Modul ab.

Das -ssi Schalter überholt das Alte -c2c und -lamm Schalter. Diese Schalter waren früher
relevant, da LAM nur zwei RPIs gleichzeitig zur Verfügung haben konnte: das lamd-RPI und eins
der C2C-RPIs. Dies ist nicht mehr wahr – alle RPIs sind jetzt verfügbar und wählbar unter
Laufzeit. Die Auswahl des lamd RPI wird in den obigen Beispielen gezeigt. Die -c2c Schalter hat keine
direkte Übersetzung, da "C2C" sich früher auf alle anderen RPIs bezog, die nicht die lamd . waren
RPI. Als solche, -ssi rpi Wert muss verwendet werden, um den spezifischen gewünschten RPI auszuwählen (ob es
ist "lamd" oder einer der anderen RPIs).

Garantierter Umschlag Ressourcen
Standardmäßig garantiert LAM eine minimale Pufferung von Nachrichtenumschlägen für jeden MPI
Prozesspaar und verhindert oder meldet einen Fehler an einen Prozess, der einen Überlauf versucht
diese Systemressource. Diese Robustheits- und Debugging-Funktion ist in einer Maschine implementiert
auf bestimmte Weise, wenn direkte Kommunikation verwendet wird. Für die normale LAM-Kommunikation über die
LAM-Daemon wird ein Protokoll verwendet. Die -nger Option deaktiviert GER und die getroffenen Maßnahmen
unterstütze es. Der minimale GER wird vom Systemadministrator konfiguriert, wenn LAM . ist
installiert. Sehen MPI(7) für weitere Details.

Beispiele:


Beachten Sie auch die Beispiele im Abschnitt "Standortnomenklatur" oben.

mpirun N prog1
Laden und führen Sie prog1 auf allen Knoten aus. Durchsuchen Sie den $PATH des Benutzers nach der ausführbaren Datei
auf jedem Knoten.

mpirun -c 8 prog1
Führen Sie 8 Kopien von prog1 aus, wo immer LAM sie ausführen möchte.

mpirun n8-10 -v -nw -s n3 prog1 -q
Laden und führen Sie prog1 auf den Knoten 8, 9 und 10 aus. Suchen Sie nach prog1 auf Knoten 3 und übertragen Sie
es zu den drei Zielknoten. Berichten Sie, wenn jeder Prozess erstellt wird. Geben Sie "-q" als a . ein
Befehlszeile für jeden neuen Prozess. Warten Sie nicht, bis die Prozesse abgeschlossen sind, bevor Sie
Verlassen mpirun.

mpirun -v meineapp
Analysieren Sie das Anwendungsschema myapp und starten Sie alle darin angegebenen Prozesse. Prüfbericht
wie jeder Prozess erstellt wird.

mpirun -npty -wd /work/output -x DISPLAY C my_application

Starten Sie auf jeder verfügbaren CPU eine Kopie von "my_application". Die Anzahl der verfügbaren
CPUs auf jedem Knoten wurden zuvor beim Booten von LAM mit . angegeben Lamm(1). Wie
oben angemerkt, mpirun wird angrenzenden Rang einplanen MPI_COMM_WORLD auf demselben Knoten
wo möglich. Wenn beispielsweise n0 eine CPU-Anzahl von 8 hat und n1 eine CPU-Anzahl von 4 hat,
mpirun wird platzieren MPI_COMM_WORLD Rang 0 bis 7 auf n0 und 8 bis 11 auf n1.
Dadurch wird die Kommunikation auf dem Knoten für viele parallele Anwendungen tendenziell maximiert; wenn benutzt
in Verbindung mit den Multiprotokoll-Netzwerk-/Shared-Memory-RPIs in LAM (siehe die
RELEASE_NOTES- und INSTALL-Dateien mit der LAM-Distribution), Gesamtkommunikation
Leistung kann ganz gut sein. Deaktivieren Sie auch die Pseudo-Tty-Unterstützung, ändern Sie das Verzeichnis in
/work/output und exportieren Sie die DISPLAY-Variable in die neuen Prozesse (vielleicht
my_application ruft eine X-Anwendung wie xv auf, um die Ausgabe anzuzeigen).

DIAGNOSE


mpirun: Exec-Formatfehler
Dies bedeutet normalerweise, dass entweder eine Reihe von Prozessen oder eine entsprechende Where-Klausel
wurde nicht angegeben, was darauf hinweist, dass LAM nicht weiß, wie viele Prozesse ausgeführt werden sollen. Sehen
In den Abschnitten BEISPIELE und "Standortnomenklatur" oben finden Sie Beispiele für die Vorgehensweise
Geben Sie an, wie viele Prozesse ausgeführt werden sollen und/oder wo sie ausgeführt werden sollen. Es kann aber auch
bedeutet, dass im Anwendungsschema ein Nicht-ASCII-Zeichen erkannt wurde. Das ist
normalerweise ein Fehler bei der Verwendung der Befehlszeile, bei dem mpirun erwartet ein Anwendungsschema und
eine ausführbare Datei wurde übergeben.

mpirun: Syntaxfehler im Anwendungsschema, Zeile XXX
Das Anwendungsschema kann aufgrund eines Verwendungs- oder Syntaxfehlers auf der Seite nicht geparst werden
gegebene Zeile in der Datei.

Dateiname: Keine solche Datei oder kein Verzeichnis
Dieser Fehler kann in zwei Fällen auftreten. Entweder kann die benannte Datei nicht gefunden werden oder sie hat
gefunden wurde, aber der Benutzer nicht über ausreichende Berechtigungen zum Ausführen des Programms verfügt oder
Lesen Sie das Anwendungsschema.

RÜCKKEHR BEWERTUNG


mpirun gibt 0 zurück, wenn alle Ränge mit begonnen haben mpirun Exit nach Aufruf von MPI_FINALIZE. Ein Nicht-
Nullwert wird zurückgegeben, wenn ein interner Fehler in mpirun aufgetreten ist, oder ein oder mehrere Ränge
beendet, bevor MPI_FINALIZE aufgerufen wird. Wenn in mpirun ein interner Fehler aufgetreten ist,
der entsprechende Fehlercode wird zurückgegeben. Für den Fall, dass ein oder mehrere Ränge vorher aussteigen
Aufruf von MPI_FINALIZE, der Rückgabewert des Rangs des Prozesses, der mpirun zuerst
Benachrichtigungen, die vor dem Aufrufen von MPI_FINALIZE gestorben sind, werden zurückgegeben. Beachten Sie, dass dies im Allgemeinen
wird der erste Rang sein, der gestorben ist, aber es ist nicht garantiert, dass dies der Fall ist.

Beachten Sie jedoch, dass, wenn die -nw switch verwendet wird, der Rückgabewert von mpirun nicht
geben den Austrittsstatus der Ränge an.

Verwenden Sie mpirun.lam online mit den onworks.net-Diensten


Kostenlose Server & Workstations

Laden Sie Windows- und Linux-Apps herunter

Linux-Befehle

Ad