EngelsFransSpaans

OnWorks-favicon

mpirun.openmpi - Online in de cloud

Voer mpirun.openmpi uit in de gratis hostingprovider van OnWorks via Ubuntu Online, Fedora Online, Windows online emulator of MAC OS online emulator

Dit is het commando mpirun.openmpi dat kan worden uitgevoerd in de gratis hostingprovider van OnWorks met behulp van een van onze meerdere gratis online werkstations zoals Ubuntu Online, Fedora Online, Windows online emulator of MAC OS online emulator

PROGRAMMA:

NAAM


orterun, mpirun, mpiexec - Voer seriële en parallelle taken uit in Open MPI. oshrun, shmemrun
- Voer seriële en parallelle taken uit in Open SHMEM.

Opmerking: mpirun, mpieexec en orterun zijn allemaal synoniemen voor elkaar en ook voor oshrun,
shmemrun in het geval dat Open SHMEM is geïnstalleerd. Het gebruik van een van de namen levert hetzelfde op
gedrag.

KORTE INHOUD


Single Process Multiple Data (SPMD)-model:

mpirun [opties] [ ]

Multiple Instruction Multiple Data (MIMD)-model:

mpirun [ globale_opties ]
[ lokale_opties1 ] [ ] :
[ lokale_opties2 ] [ ] :
...:
[lokale_optiesN] [ ]

Merk op dat in beide modellen het aanroepen van mpirun via een absolute padnaam is gelijk aan
specificeren van de --voorvoegsel optie met a waarde gelijk aan de map waar mpirun
resides, minus de laatste submap. Bijvoorbeeld:

% /usr/local/bin/mpirun ...

is gelijk aan

% mpirun --voorvoegsel / Usr / local

SNEL OVERZICHT


Als u gewoon op zoek bent naar hoe u een MPI-toepassing moet uitvoeren, wilt u waarschijnlijk een
opdrachtregel van de volgende vorm:

% mpirun [ -np X ] [ --hostbestand ]

Hiermee worden X-kopieën van uitgevoerd in uw huidige runtime-omgeving (indien uitgevoerd onder
een ondersteunde resource manager, Open MPI's mpirun gebruikt meestal automatisch de
bijbehorende resource manager processtarter, in tegenstelling tot bijvoorbeeld rsh or ssh,
die het gebruik van een hostbestand vereisen, of standaard alle X-kopieën op de
localhost), planning (standaard) op een round-robin-manier per CPU-slot. Zie de rest van
deze pagina voor meer details.

Houd er rekening mee dat mpirun processen automatisch bindt vanaf het begin van de v1.8-serie.
Bij het ontbreken van verdere richtlijnen worden twee bindende patronen gebruikt:

binder naar kern: wanneer het aantal processen <= 2 . is

binder naar socket: wanneer het aantal processen > 2 . is

Als uw toepassing threads gebruikt, wilt u er waarschijnlijk zeker van zijn dat u dat niet bent
helemaal gebonden (door --bind-to none op te geven), of gebonden aan meerdere kernen met behulp van een
passend bindingsniveau of specifiek aantal verwerkingselementen per toepassing
proces.

OPTIES


mpirun zal de naam van de map waarin het werd aangeroepen op het lokale knooppunt naar elk verzenden
van de knooppunten op afstand en probeer naar die map te gaan. Zie de "Huidige Werken"
Directory" hieronder voor meer informatie.

Het programma uitvoerbaar. Dit wordt geïdentificeerd als het eerste niet-herkende argument
naar mpirun.

Geef deze runtime-argumenten door aan elk nieuw proces. Dit moeten altijd de
laatste argumenten om mpirun. Als een app-contextbestand wordt gebruikt, zal zijn
buiten beschouwing gelaten.

-h, --help
Help voor deze opdracht weergeven

-q, --stil
Onderdruk informatieve berichten van orterun tijdens de uitvoering van de applicatie.

-v, --uitgebreid
Wees uitgebreid

-V, --versie
Versienummer afdrukken. Als er geen andere argumenten worden gegeven, zal dit ook leiden tot:
orterun om af te sluiten.

-weergave-kaart, --weergave-kaart
Geef een tabel weer met de toegewezen locatie van elk proces voorafgaand aan de lancering.

-weergave-ontwikkel-kaart, --toon-ontwikkel-kaart
Geef een meer gedetailleerde tabel weer met de toegewezen locatie van elk proces eerder
te lanceren (meestal interessant voor ontwikkelaars).

-weergave-toewijzing, --display-toewijzing
Geef de gedetecteerde resourcetoewijzing weer.

Gebruik een van de volgende opties om op te geven op welke hosts (knooppunten) van het cluster moeten worden uitgevoerd.
Merk op dat vanaf het begin van de v1.8-release, mpirun een daemon op elke host zal lanceren
in de toewijzing (zoals gewijzigd door de volgende opties) helemaal aan het begin van
uitvoering, ongeacht of applicatieprocessen uiteindelijk worden toegewezen aan:
daar uitvoeren. Dit wordt gedaan om het verzamelen van hardware-topologie-informatie van de
externe knooppunten, waardoor we processen in kaart kunnen brengen tegen bekende topologie. Het is echter een
verandering van het gedrag in eerdere releases waar daemons pas werden gelanceerd na mapping
was voltooid en kwam dus alleen voor op knooppunten waar toepassingsprocessen daadwerkelijk zouden
uitvoeren zijn.

-H, -gastheer, --gastheer
Lijst met hosts waarop processen kunnen worden aangeroepen.

-hostbestand, --hostbestand
Geef een hostbestand op om te gebruiken.

-machinebestand, --machinebestand
synoniem voor -hostbestand.

-cpu-set, --cpu-set
Beperk gestarte processen tot de opgegeven logische cpu's op elk knooppunt. Let daar op
de bindopties zijn nog steeds van toepassing binnen de opgegeven envelop - u kunt bijvoorbeeld
ervoor kiezen om elk proces aan slechts één cpu binnen de gespecificeerde cpu-set te binden.

De volgende opties specificeren het aantal te starten processen. Merk op dat geen van de
opties impliceren een bepaald bindend beleid - bijvoorbeeld het aanvragen van N processen voor elke socket
betekent niet dat de processen aan de socket zijn gebonden.

-c, -n, --N, -bijv <#>
Voer zoveel exemplaren van het programma uit op de opgegeven knooppunten. Deze optie geeft aan dat:
het opgegeven bestand is een uitvoerbaar programma en geen toepassingscontext. Als Nee
waarde wordt gegeven voor het aantal uit te voeren kopieën (dwz, noch de "-np" noch
de synoniemen staan ​​op de opdrachtregel), Open MPI wordt automatisch uitgevoerd
een kopie van het programma op elk processlot (zie hieronder voor een beschrijving van een "proces"
slot"). Deze functie kan echter alleen worden gebruikt in het SPMD-model en zal terugkeren
een fout (zonder de uitvoering van de toepassing te beginnen) anders.

—kaart door ppr:N:
Start N keer het aantal objecten van het opgegeven type op elk knooppunt.

-nperssocket, --nperssocket <#perscontact>
Start op elk knooppunt dit aantal processen maal het aantal processorsockets dat is ingeschakeld
het knooppunt. De -nperssocket optie zet ook de aan -bind-aan-socket optie.
(verouderd ten gunste van --map-by ppr:n:socket)

-nperknooppunt, --nperknooppunt <#pernode>
Start op elk knooppunt zoveel processen. (verouderd ten gunste van --map-by
ppr:n:knooppunt)

-pernode, --pernode
Start op elk knooppunt één proces -- gelijk aan -nperknooppunt 1. (verouderd in
gunst van --map-by ppr:1:node)

Om processen in kaart te brengen:

--kaart-door
Toewijzen aan het opgegeven object, standaard ingesteld op stopcontact. Ondersteunde opties zijn onder meer slot,
hwthread, core, L1cache, L2cache, L3cache, socket, numa, board, node, sequentieel,
afstand, en pp. Elk object kan modifiers bevatten door een : en any . toe te voegen
combinatie van PE=n (bind n verwerkingselementen aan elke proc), SPAN (load balance
de processen over de toewijzing), OVERSUBSCRIBE (meer processen op een knooppunt toestaan)
dan verwerkingselementen), en NOOVERSUBSCRIBE. Dit omvat PPR, waarbij de
patroon zou worden beëindigd door een andere dubbele punt om het te scheiden van de modifiers.

-bijkern, --bij kern
Processen per core toewijzen (verouderd ten gunste van --map-by core)

-doorcontactdoos, --doorcontactdoos
Kaartprocessen per socket (verouderd ten gunste van --map-by socket)

-nolokaal, --geenlokaal
Voer geen kopieën van de gestarte applicatie uit op hetzelfde knooppunt als orterun is
rennen. Deze optie overschrijft de vermelding van de localhost met --gastheer of een ander
host-specifiek mechanisme.

-geenoverabonneren, --nietoverabonneren
Schrijf geen nodes te veel in; fout (zonder processen te starten) als de
gevraagd aantal processen zou leiden tot overinschrijving. Deze optie impliciet
stelt "max_slots" gelijk aan de "slots"-waarde voor elk knooppunt.

-bijknooppunt, --bynode
Lancering verwerkt één per knooppunt, fietsen per knooppunt op een round-robin-manier. Dit
verdeelt processen gelijkmatig over knooppunten en wijst MPI_COMM_WORLD-rangen toe in een ronde-
robin, "per knoop" manier.

Om de rangschikking van processen in MPI_COMM_WORLD te ordenen:

--rang-door
Rangschikken in round-robin-mode volgens het gespecificeerde object, standaard op sleuf.
Ondersteunde opties zijn onder meer slot, hwthread, core, L1cache, L2cache, L3cache, socket,
numa, bord en knoop.

Voor procesbinding:

--binden aan
Bind processen aan het opgegeven object, standaard ingesteld op kern. Ondersteunde opties omvatten:
slot, hwthread, core, l1cache, l2cache, l3cache, socket, numa, board en geen.

-cpus-per-proc, --cpus-per-proc <#perproc>
Bind elk proces aan het opgegeven aantal cpu's. (verouderd ten gunste van --map-
door :PE=n)

-cpus-per-rang, --cpus-per-rang <#perrank>
alias voor -cpus-per-proc. (verouderd ten gunste van --map-by :PE=n)

-bind-naar-kern, --bind-aan-kern
Bind processen aan cores (verouderd ten gunste van --bind-to core)

-bind-aan-socket, --bind-aan-socket
Bind processen aan processor sockets (verouderd ten gunste van --bind-to socket)

-bind-aan-niets, --bind-aan-niets
Niet binden aan processen (verouderd ten gunste van --bind-to none)

-rapport-bindingen, --rapport-bindingen
Rapporteer eventuele bindingen voor gestarte processen.

-slot-lijst, --slot-lijst
Lijst met processor-ID's die moeten worden gebruikt voor het binden van MPI-processen. De opgegeven bindingen
zal worden toegepast op alle MPI-processen. Zie uitleg hieronder voor syntaxis.

Voor rangbestanden:

-rf, --rangbestand
Geef een rankfile-bestand op.

Standaard I/O beheren:

-uitvoerbestandsnaam, --uitvoer-bestandsnaam
Leid de stdout, stderr en stddiag van alle processen om naar een proces-uniek
versie van de opgegeven bestandsnaam. Alle mappen in de bestandsnaam zullen
automatisch worden aangemaakt. Elk uitvoerbestand zal bestaan ​​uit bestandsnaam.id, waarbij de
id is de rangorde van de processen in MPI_COMM_WORLD, links gevuld met nullen voor
juiste volgorde in aanbiedingen.

-standaard, --standaard
De MPI_COMM_WORLD-rang van het proces dat stdin moet ontvangen. De standaard is om
stuur stdin door naar MPI_COMM_WORLD rang 0, maar deze optie kan worden gebruikt om door te sturen
stdin voor elk proces. Het is ook acceptabel om te specificeren: geen, wat aangeeft dat nee
processen zijn om stdin te ontvangen.

-tag-uitvoer, --tag-uitvoer
Tag elke uitvoerregel naar stdout, stderr en stddiag met [jobid,
MCW_rank] met vermelding van het proces jobid en MPI_COMM_WORLD rangschikking van de
proces dat de uitvoer heeft gegenereerd, en het kanaal dat deze heeft gegenereerd.

-tijdstempel-uitvoer, --tijdstempel-uitvoer
Tijdstempel van elke uitvoerregel naar stdout, stderr en stddiag.

-xml, --xml
Geef alle uitvoer naar stdout, stderr en stddiag in een xml-indeling.

-xtermijn, --xtermijn
Geef de uitvoer weer van de processen die worden geïdentificeerd door hun MPI_COMM_WORLD-rangen in
aparte xterm-vensters. De rangen worden gespecificeerd als een door komma's gescheiden lijst van
bereiken, waarbij een -1 alles aangeeft. Voor elk wordt een apart venster gemaakt
gespecificeerd proces. Opmerking: xterm beëindigt normaal gesproken het venster bij beëindiging
van het proces dat erin loopt. Door echter een "!" naar het einde van de lijst
van gespecificeerde rangen, zullen de juiste opties worden geboden om ervoor te zorgen dat xterm blijft
het raam open na het proces wordt beëindigd, zodat u het proces kunt zien'
uitvoer. Elk xterm-venster moet vervolgens handmatig worden gesloten. Opmerking: In
in sommige omgevingen kan xterm vereisen dat het uitvoerbare bestand zich in het pad van de gebruiker bevindt, of
in absolute of relatieve termen worden gespecificeerd. Het kan dus nodig zijn om een
lokaal uitvoerbaar bestand als "./foo" in plaats van alleen "foo". Als xterm de . niet kan vinden
uitvoerbaar is, blijft mpirun hangen, maar reageert nog steeds correct op een ctrl-c. Als dit
gebeurt, controleer dan of het uitvoerbare bestand correct is gespecificeerd en probeer
weer.

Bestanden en runtime-omgeving beheren:

-pad, --pad
die zal worden gebruikt bij het zoeken naar de gevraagde uitvoerbare bestanden. Dit
wordt gebruikt voordat de lokale PATH-instelling wordt gebruikt.

--voorvoegsel
Prefix-directory die zal worden gebruikt om de . in te stellen PATH en LD_LIBRARY_PATH op de
knooppunt op afstand voordat u Open MPI of het doelproces aanroept. Zie de "Afstandsbediening"
uitvoering" hieronder.

--preload-binair
Kopieer de gespecificeerde uitvoerbare bestanden naar externe machines voordat u remote start
processen. De uitvoerbare bestanden worden gekopieerd naar de Open MPI-sessiemap en
worden verwijderd na voltooiing van de taak.

--preload-bestanden
Laad de door komma's gescheiden lijst met bestanden vooraf in de huidige werkmap van de
externe machines waar processen worden gestart voordat die processen worden gestart.

--preload-bestanden-bestemmingsmap
De bestemmingsmap die moet worden gebruikt voor preload-bestanden, indien anders dan de huidige
werkmap. Standaard worden de absolute en relatieve paden geleverd door
--preload-bestanden worden gebruikt.

--tmpdir
Stel de root voor de sessiedirectorystructuur alleen voor mpirun in.

-wd
synoniem voor -wdr.

-wdr
Ga naar de map voordat het programma van de gebruiker wordt uitgevoerd. Zie de "Huidige"
Working Directory" sectie voor opmerkingen over relatieve paden. Opmerking: Indien de -wdr optie
zowel op de opdrachtregel als in een toepassingscontext verschijnt, zal de context
voorrang hebben op de opdrachtregel. Dus, als het pad naar de gewenste wdir is
anders is op de backend-knooppunten, dan moet het worden opgegeven als een absoluut pad dat
is correct voor het backend-knooppunt.

-x
Exporteer de gespecificeerde omgevingsvariabelen naar de knooppunten op afstand voordat u de
programma. Er kan slechts één omgevingsvariabele per -x optie. bestaande
omgevingsvariabelen kunnen worden opgegeven of nieuwe variabelenamen kunnen worden opgegeven met
corresponderende waarden. Bijvoorbeeld:
% mpirun -x DISPLAY -x OFILE=/tmp/out ...

De parser voor de -x optie is niet erg geavanceerd; het begrijpt het niet eens
geciteerde waarden. Gebruikers wordt geadviseerd om variabelen in de omgeving in te stellen en vervolgens
-x om ze te exporteren (niet te definiëren).

MCA-parameters instellen:

-gmca, --gmc
Geef globale MCA-parameters door die van toepassing zijn op alle contexten. is de
parameternaam; is de parameterwaarde.

-mcca, --mcca
Stuur argumenten naar verschillende MCA-modules. Zie het gedeelte 'MCA' hieronder.

Voor debuggen:

-debuggen, --debuggen
Roep de debugger op gebruikersniveau op die wordt aangegeven door de orte_base_user_debugger MCA
parameter.

-debugger, --debugger
Volgorde van debuggers om naar te zoeken wanneer --debuggen wordt gebruikt (dwz een synoniem voor
orte_base_user_debugger MCA-parameter).

-TV, --TV
Start processen onder de TotalView-foutopsporing. Achterwaartse compatibiliteit verouderd
vlag. synoniem voor --debuggen.

Er zijn ook andere opties:

--sta-uitvoeren-als-root toe
Allow mpirun om uit te voeren wanneer uitgevoerd door de rootgebruiker (mpirun staat standaard op afbreken
wanneer gestart als de rootgebruiker).

-afgebroken, --afgebroken <#>
Stel het maximum aantal afgebroken processen in om weer te geven.

--app
Geef een app-bestand op en negeer alle andere opdrachtregelopties.

-vgl, --cartobestand
Zorg voor een cartografiebestand.

--hetero
Geeft aan dat er meerdere app_contexts worden geleverd die een mix zijn van 32/64-bit
binaire bestanden.

-verlof-sessie-bijgevoegd, --laat-sessie-bijgevoegd
Koppel de OmpiRTE-daemons die door deze applicatie worden gebruikt niet los. Dit maakt foutmeldingen mogelijk
van zowel de daemons als de onderliggende omgeving (bijv
start een daemon) om te worden uitgevoerd.

-ompi-server, --ompi-server <uri or bestand>
Specificeer de URI van de Open MPI-server (of de mpirun die als server moet worden gebruikt),
de naam van het bestand (opgegeven als bestand:bestandsnaam) dat die info bevat, of de
PID (gespecificeerd als pid:#) van de mpirun die moet worden gebruikt als
de server. De Open MPI-server wordt gebruikt om gegevens voor meerdere toepassingen te ondersteunen
uitwisseling via de MPI-2 MPI_Publish_name en MPI_Lookup_name functies.

-rapport-pid, --rapport-pid
Druk de PID van mpirun af tijdens het opstarten. Het kanaal moet een '-' zijn om aan te geven
geef aan dat de pid moet worden uitgevoerd naar stdout, een '+' om aan te geven dat de pid moet worden uitgevoerd
be outp ut to stderr, of een bestandsnaam waarnaar de pid moet worden geschreven.

-rapport-uri, --rapport-uri
Druk de URI van mpirun af tijdens het opstarten. Het kanaal moet een '-' zijn om aan te geven
geef aan dat de URI moet worden uitgevoerd naar stdout, een '+' om aan te geven dat de URI moet worden uitgevoerd
be outp ut to stderr, of een bestandsnaam waarnaar de URI moet worden geschreven.

-wacht-op-server, --wacht-op-server
Pauzeer mpirun voordat u de taak start totdat ompi-server wordt gedetecteerd. Dit is handig
in scripts waar ompi-server op de achtergrond kan worden gestart, onmiddellijk gevolgd
bij een mpirun commando dat er verbinding mee wil maken. Mpirun pauzeert tot een van beide
de opgegeven ompi-server wordt gecontacteerd of de server-wachttijd is overschreden.

-server-wachttijd, --server-wachttijd
De maximale hoeveelheid tijd (in seconden) die mpirun moet wachten tot de ompi-server
begin. De standaardwaarde is 10 seconden.

De volgende opties zijn handig voor ontwikkelaars; ze zijn over het algemeen niet nuttig voor de meesten
ORTE- en/of MPI-gebruikers:

-d, --debug-ontwikkeling
Schakel debugging van de OmpiRTE (de runtime-laag in Open MPI) in. Dit is niet
algemeen nuttig voor de meeste gebruikers.

--debug-daemons
Schakel debuggen in van alle OmpiRTE-daemons die door deze applicatie worden gebruikt.

--debug-daemons-bestand
Schakel debuggen in van alle OmpiRTE-daemons die door deze applicatie worden gebruikt, waarbij de uitvoer wordt opgeslagen in
bestanden.

-lanceringsagent, --lanceringsagent
Naam van het uitvoerbare bestand dat moet worden gebruikt om processen op de externe knooppunten te starten.
De standaardwaarde is "orted". Deze optie kan worden gebruikt om nieuwe daemonconcepten te testen, of om
geef opties terug aan de daemons zonder dat mpirun ze zelf ziet. Voor
door bijvoorbeeld een startagent van orted -mca odls_base_verbose 5 op te geven, kan de
ontwikkelaar om de orted te vragen om uitvoer te debuggen zonder rommel van mpirun zelf.

--geen voorvoegsel
Schakel het automatische --prefix-gedrag uit

Er kunnen andere opties worden vermeld met mpirun --help.

Milieu Variabelen
MPIEXEC_TIMEOUT
Het maximum aantal seconden dat mpirun (mpieexec) zal rennen. Na deze vele
seconden, mpirun zal de gestarte taak afbreken en afsluiten.

PRODUCTBESCHRIJVING


Een aanroeping van mpirun start een MPI-toepassing die draait onder Open MPI. Als de
applicatie is single process multiple data (SPMD), de applicatie kan worden gespecificeerd op
the mpirun opdrachtregel.

Als de toepassing multiple-instructie multiple data (MIMD) is, bestaande uit meerdere
programma's, de reeks programma's en argumenten kunnen op twee manieren worden gespecificeerd: Uitgebreid
Opdrachtregelargumenten en toepassingscontext.

Een applicatiecontext beschrijft de MIMD-programmaset inclusief alle argumenten in a
apart bestand. Dit bestand bevat in wezen meerdere mpirun opdrachtregels, minus de
opdrachtnaam zelf. De mogelijkheid om verschillende opties op te geven voor verschillende
instantiaties van een programma is een andere reden om een ​​toepassingscontext te gebruiken.

Uitgebreide opdrachtregelargumenten zorgen voor de beschrijving van de applicatielay-out op de
opdrachtregel met dubbele punten (:) om de specificatie van programma's en argumenten te scheiden.
Sommige opties zijn globaal ingesteld voor alle gespecificeerde programma's (bijv. --hostfile), terwijl
andere zijn specifiek voor een enkel programma (bijv. -np).

opgeven gastheer Nodes
Host nodes kunnen worden geïdentificeerd op de mpirun opdrachtregel met de -gastheer optie of in een
hostbestand.

Bijvoorbeeld

mpirun -H aa,aa,bb ./a.uit
lanceert twee processen op knooppunt aa en één op bb.

Of, overweeg het hostbestand

% kat mijnhostbestand
aa-slots = 2
bb-slots = 2
cc-slots = 2

Hier vermelden we zowel de hostnamen (aa, bb en cc), maar ook hoeveel "slots" er zijn voor
elk. Slots geven aan hoeveel processen potentieel kunnen worden uitgevoerd op een knooppunt. Voor het beste
prestaties, het aantal slots kan worden gekozen om het aantal kernen op het knooppunt te zijn of
het aantal processorsockets. Als het hostbestand geen slots-informatie geeft, a
standaardwaarde van 1 wordt aangenomen. Bij gebruik onder resource managers (bijv. SLURM, Torque,
enz.), zal Open MPI zowel de hostnamen als het aantal slots rechtstreeks verkrijgen van de
resource manager.

mpirun -hostbestand mijnhostbestand ./a.out
start twee processen op elk van de drie knooppunten.

mpirun -hostbestand mijnhostbestand -host aa ./a.out
zal twee processen starten, beide op node aa.

mpirun -hostbestand mijnhostbestand -host dd ./a.out
zal geen hosts vinden om op te draaien en afbreken met een fout. Dat wil zeggen, de opgegeven host dd
staat niet in het opgegeven hostbestand.

opgeven Telefoon Nummer of processen
Zoals we zojuist hebben gezien, kan het aantal uit te voeren processen worden ingesteld met behulp van het hostbestand. Ander
mechanismen bestaan.

Het aantal gestarte processen kan worden gespecificeerd als een veelvoud van het aantal knooppunten of
processorsockets beschikbaar. Bijvoorbeeld,

mpirun -H aa,bb -npersocket 2 ./a.out
start processen 0-3 op knooppunt aa en proces 4-7 op knooppunt bb, waarbij aa en bb beide zijn
dual-socket-knooppunten. De -nperssocket optie zet ook de aan -bind-aan-socket keuze,
die in een later gedeelte wordt besproken.

mpirun -H aa,bb -npernode 2 ./a.out
start processen 0-1 op knooppunt aa en processen 2-3 op knooppunt bb.

mpirun -H aa,bb -npernode 1 ./a.out
start één proces per hostknooppunt.

mpirun -H aa,bb -pernode ./a.out
is hetzelfde als -nperknooppunt 1.

Een ander alternatief is om het aantal processen te specificeren met de -bijv optie. Overwegen
nu het hostbestand

% kat mijnhostbestand
aa-slots = 4
bb-slots = 4
cc-slots = 4

Nu,

mpirun -hostbestand mijnhostbestand -np 6 ./a.out
zal processen 0-3 starten op knooppunt aa en processen 4-5 op knooppunt bb. De resterende
slots in het hostbestand worden niet gebruikt omdat de -bijv optie gaf aan dat slechts 6
processen moeten worden opgestart.

Mapping processen naar knooppunten: gebruik Policies
De bovenstaande voorbeelden illustreren de standaardtoewijzing van procesprocessen aan knooppunten. Dit
mapping kan ook worden bestuurd met verschillende mpirun opties die toewijzingsbeleid beschrijven.

Beschouw hetzelfde hostbestand als hierboven, opnieuw met -bijv 6:

knoop aa knoop bb knoop cc

mpirun 0 1 2 3 4 5

mpirun --map-by knooppunt 0 3 1 4 2 5

mpirun -nolokaal 0 1 2 3 4 5

De --kaart-door knooppunt optie zal de processen over de beschikbare knooppunten verdelen,
elk proces op een round-robin manier nummeren.

De -nolokaal optie voorkomt dat processen worden toegewezen aan de lokale host (in deze
case-knooppunt aa). Terwijl mpirun verbruikt doorgaans weinig systeembronnen, -nolokaal kan zijn
nuttig voor het lanceren van zeer grote taken waarbij: mpirun moet mogelijk merkbaar worden gebruikt
hoeveelheden geheugen en/of verwerkingstijd.

Zoals -bijv kan minder processen specificeren dan er slots zijn, het kan ook overtekenen
de sleuven. Bijvoorbeeld met hetzelfde hostbestand:

mpirun -hostbestand mijnhostbestand -np 14 ./a.out
start processen 0-3 op knooppunt aa, 4-7 op bb en 8-11 op cc. Het zal dan de . toevoegen
resterende twee processen naar de knooppunten die het kiest.

Men kan ook limieten opgeven voor overinschrijving. Bijvoorbeeld met hetzelfde hostbestand:

mpirun -hostbestand mijnhostbestand -np 14 -nooversubscribe ./a.out
zal een fout produceren aangezien -geenoverabonneren voorkomt overinschrijving.

Grenzen aan overinschrijving kunnen ook in het hostbestand zelf worden gespecificeerd:
% kat mijnhostbestand
aa-slots=4 max_slots=4
bb max_slots=4
cc-slots = 4

De max_slots veld specificeert een dergelijke limiet. Wanneer dit het geval is, speelautomaten waarde staat standaard op de
begrenzing. Nutsvoorzieningen:

mpirun -hostbestand mijnhostbestand -np 14 ./a.out
zorgt ervoor dat de eerste 12 processen worden gestart zoals voorheen, maar de resterende twee
processen worden op node cc geforceerd. De andere twee knooppunten worden beschermd door de
hostfile tegen overinschrijving door deze job.

De --nietoverabonneren optie kan handig zijn omdat Open MPI momenteel niet krijgt
"max_slots" waarden van de resource manager.

Uiteraard -bijv kan ook worden gebruikt met de -H or -gastheer keuze. Bijvoorbeeld,

mpirun -H aa,bb -np 8 ./a.uit
lanceert 8 processen. Aangezien er slechts twee hosts zijn opgegeven, na de eerste twee
processen worden in kaart gebracht, één naar aa en één naar bb, de overige processen overtekenen
de opgegeven hosts.

En hier is een MIMD-voorbeeld:

mpirun -H aa -np 1 hostnaam: -H bb,cc -np 2 uptime
start proces 0 actief hostname op knooppunt aa en processen 1 en 2 zijn elk actief
uptime op respectievelijk knooppunten bb en cc.

mapping, Rangschikking, en Binding: Oh Mijn!
Open MPI maakt gebruik van een driefasige procedure voor het toewijzen van proceslocaties en rangen:

in kaart brengen Wijst een standaardlocatie toe aan elk proces

ranking Wijst een MPI_COMM_WORLD rangwaarde toe aan elk proces

verbindend Beperkt elk proces om op specifieke processors te draaien

De in kaart brengen stap wordt gebruikt om een ​​standaardlocatie toe te wijzen aan elk proces op basis van de mapper
in dienst zijn. Mapping per slot, node en sequentieel resulteert in de toewijzing van de
processen tot op knooppuntniveau. Daarentegen stelt mapping op object de mapper in staat om toe te wijzen:
het proces naar een werkelijk object op elk knooppunt.

Opmerking: de locatie die aan het proces is toegewezen, is onafhankelijk van waar het zal worden gebonden - de
toewijzing wordt uitsluitend gebruikt als invoer voor het bindingsalgoritme.

De toewijzing van procesprocessen aan knooppunten kan niet alleen worden gedefinieerd met algemeen beleid
maar ook, indien nodig, met behulp van willekeurige mappings die niet kunnen worden beschreven door een eenvoudig
beleid. Men kan de "sequentiële mapper" gebruiken, die het hostbestand regel voor regel leest,
het toewijzen van processen aan knooppunten in de volgorde die het hostbestand aangeeft. Gebruik de -mcca kaarten
seq optie. Gebruik bijvoorbeeld hetzelfde hostbestand als voorheen:

mpirun -hostbestand mijnhostbestand -mca rmaps seq ./a.out

zal drie processen starten, één op elk van respectievelijk de knooppunten aa, bb en cc. de gleuf
tellingen doen er niet toe; één proces wordt gestart per regel op welk knooppunt dan ook wordt vermeld op de
lijn.

Een andere manier om willekeurige mappings te specificeren is met een rankfile, die je gedetailleerde
ook controle over procesbinding. Rankfiles worden hieronder besproken.

De tweede fase richt zich op de ranking van het proces binnen de MPI_COMM_WORLD van de taak.
Open MPI scheidt dit van de mappingprocedure om meer flexibiliteit in de
relatieve plaatsing van MPI-processen. Dit wordt het best geïllustreerd door het volgende te overwegen:
twee gevallen waarin we de optie —map-by ppr:2:socket hebben gebruikt:

knooppunt aa knooppunt bb

gerangschikt op kern 0 1 ! 2 3 4 5 ! 6 7

gerangschikt op socket 0 2 ! 1 3 4 6 ! 5 7

rangschikking per socket:span 0 4 ! 1 5 2 6 ! 3 7

Rangschikking per kern en per slot levert hetzelfde resultaat op - een eenvoudige progressie van
MPI_COMM_WORLD rangschikt over elk knooppunt. Rangschikking per socket doet een round-robin ranking binnen
elk knooppunt totdat aan alle processen een MCW-rang is toegewezen en gaat vervolgens door naar de
volgende knoop. De . toevoegen span modifier van de rangorderichtlijn veroorzaakt het rangschikkingsalgoritme
om de volledige toewijzing als een enkele entiteit te behandelen - dus de MCW-rangen worden toegewezen
over alle sockets voordat u weer naar het begin cirkelt.

De verbindend fase bindt eigenlijk elk proces aan een bepaalde set processors. Dit kan
prestaties verbeteren als het besturingssysteem processen niet optimaal plaatst. Voor
het kan bijvoorbeeld een aantal multi-core processorsockets overschrijven, waardoor andere sockets overblijven
inactief; dit kan ertoe leiden dat processen onnodig strijden om gemeenschappelijke middelen. Of, het
zou processen te wijd kunnen verspreiden; dit kan suboptimaal zijn als de applicatieprestaties
is gevoelig voor communicatiekosten tussen processen. Binden kan ook de werking behouden
systeem van het overmatig migreren van processen, ongeacht hoe optimaal die processen zijn
werden geplaatst om mee te beginnen.

De processors die voor binding moeten worden gebruikt, kunnen worden geïdentificeerd in termen van topologische groeperingen
- bijv. binding aan een l3cache zal elk proces binden aan alle processors binnen de reikwijdte van
een enkele L3-cache binnen hun toegewezen locatie. Dus als een proces wordt toegewezen door de
mapper naar een bepaalde socket, dan a -binden aan l3cache richtlijn zal ervoor zorgen dat het proces
gebonden aan de processors die een enkele L3-cache binnen die socket delen.

Om te helpen bij het balanceren van belastingen, gebruikt de bindende richtlijn een round-robin-methode bij het binden aan:
niveaus lager dan gebruikt in de mapper. Denk bijvoorbeeld aan het geval waarin een taak in kaart wordt gebracht
naar het socketniveau en vervolgens gebonden aan de kern. Elke socket heeft meerdere kernen, dus als:
meerdere processen worden toegewezen aan een bepaalde socket, het bindingsalgoritme zal elk toewijzen
proces gelokaliseerd op een socket naar een unieke kern op een round-robin-manier.

Als alternatief zullen processen die zijn toegewezen door l2cache en vervolgens aan socket zijn gebonden, gewoon worden gebonden
naar alle processors in de socket waar ze zich bevinden. Op deze manier kunnen gebruikers
oefen gedetailleerde controle uit over de relatieve MCW-ranglocatie en binding.

Tenslotte --rapport-bindingen kan worden gebruikt om bindingen te melden.

Beschouw als voorbeeld een knooppunt met twee processorsockets, elk met vier kernen. We
lopen mpirun with -bijv 4 --rapport-bindingen en de volgende extra opties:

% mpirun ... --map-by core --bind-to core
[...] ... koppelt kind [...,0] aan cpus 0001
[...] ... koppelt kind [...,1] aan cpus 0002
[...] ... koppelt kind [...,2] aan cpus 0004
[...] ... koppelt kind [...,3] aan cpus 0008

% mpirun ... --map-by socket --bind-aan socket
[...] ... binding kind [...,0] aan socket 0 cpus 000f
[...] ... binding kind [...,1] aan socket 1 cpus 00f0
[...] ... binding kind [...,2] aan socket 0 cpus 000f
[...] ... binding kind [...,3] aan socket 1 cpus 00f0

% mpirun ... --map-by core:PE=2 --bind-aan core
[...] ... koppelt kind [...,0] aan cpus 0003
[...] ... koppelt kind [...,1] aan cpus 000c
[...] ... koppelt kind [...,2] aan cpus 0030
[...] ... koppelt kind [...,3] aan cpus 00c0

% mpirun ... --bind-aan geen

Hier --rapport-bindingen toont de binding van elk proces als een masker. In het eerste geval,
de processen binden aan opeenvolgende kernen zoals aangegeven door de maskers 0001, 0002, 0004 en
0008. In het tweede geval binden processen aan alle kernen op opeenvolgende sockets zoals aangegeven
door de maskers 000f en 00f0. De processen doorlopen de processorsockets in een ronde
robin mode zo vaak als nodig is. In het derde geval laten de maskers ons zien dat 2
cores zijn per proces gebonden. In het vierde geval is de binding uitgeschakeld en niet
bindingen worden gemeld.

De ondersteuning van Open MPI voor procesbinding is afhankelijk van het onderliggende besturingssysteem.
Daarom zijn bepaalde procesbindingsopties mogelijk niet op elk systeem beschikbaar.

Procesbinding kan ook worden ingesteld met MCA-parameters. Het gebruik ervan is minder handig dan
dat van mpirun opties. Aan de andere kant kunnen MCA-parameters niet alleen worden ingesteld op de
mpirun commandoregel, maar als alternatief in een systeem of gebruiker mca-params.conf bestand of as
omgevingsvariabelen, zoals beschreven in de MCA-sectie hieronder. Enkele voorbeelden zijn:

mpirun optie MCA parameter sleutel waarde

--map-by kern rmaps_base_mapping_policy kern
--map-by-socket rmaps_base_mapping_policy-socket
--rangschikken op kern rmaps_base_ranking_policy kern
--binden aan kern hwloc_base_binding_policy kern
--bind-to-socket hwloc_base_binding_policy-socket
--bind-aan geen hwloc_base_binding_policy geen

Rangbestanden
Rankfiles zijn tekstbestanden die gedetailleerde informatie specificeren over hoe individuele processen
moeten worden toegewezen aan knooppunten en aan welke processor(s) ze moeten worden gebonden. Elke regel van a
rankfile specificeert de locatie van één proces (voor MPI-taken verwijst de 'rang' van het proces
tot zijn rang in MPI_COMM_WORLD). De algemene vorm van elke regel in het rangbestand is:

rang = slot=

Bijvoorbeeld:

$ cat mijnrankfile
rang 0=aa-slot=1:0-2
rang 1=bb slot=0:0,1
rang 2=cc slot=1-2
$ mpirun -H aa,bb,cc,dd -rf mijnrangbestand ./a.out

betekent dat

Rank 0 draait op node aa, gebonden aan logische socket 1, cores 0-2.
Rank 1 draait op node bb, gebonden aan logische socket 0, cores 0 en 1.
Rank 2 draait op node cc, gebonden aan logische cores 1 en 2.

Rankfiles kunnen ook worden gebruikt om te specificeren: Fysiek processor locaties. In dit geval,
de syntaxis is iets anders. Sockets worden niet meer herkend en het slotnummer
gegeven moet het nummer van de fysieke PU zijn, aangezien de meeste besturingssystemen geen unieke fysieke toewijzen
identifier voor elke kern in het knooppunt. Een goede fysieke rankfile ziet er dus ongeveer zo uit:
het volgende:

$ cat mijn fysieke rangbestand
rang 0=aa-slot=1
rang 1=bb slot=8
rang 2=cc slot=6

Dit betekent dat

Rang 0 wordt uitgevoerd op knooppunt aa, gebonden aan de kern die fysieke PU 1 bevat
Rank 1 wordt uitgevoerd op node bb, gebonden aan de kern die fysieke PU 8 . bevat
Rank 2 draait op node cc, gebonden aan de kern die fysieke PU 6 bevat

Rankfiles worden behandeld als logisch standaard, en de MCA-parameter
rmaps_rank_file_physical moet worden ingesteld op 1 om aan te geven dat de rankfile moet worden
beschouwd als Fysiek.

De hostnamen die hierboven worden vermeld zijn "absoluut", wat betekent dat de werkelijke oplosbare hostnamen zijn
gespecificeerd. Hostnamen kunnen echter ook als "relatief" worden opgegeven, wat betekent dat ze zijn
gespecificeerd in relatie tot een extern gespecificeerde lijst met hostnamen (bijv. door mpirun's
--host argument, een hostbestand of een taakplanner).

De "relatieve" specificatie is van de vorm "+n ", waarbij X een geheel getal is dat de . specificeert
Xe hostnaam in de set van alle beschikbare hostnamen, geïndexeerd vanaf 0. Bijvoorbeeld:

$ cat mijnrankfile
rank 0=+n0 slot=1:0-2
rang 1=+n1 slot=0:0,1
rang 2=+n2 slot=1-2
$ mpirun -H aa,bb,cc,dd -rf mijnrangbestand ./a.out

Vanaf Open MPI v1.7 worden alle socket/core-slotlocaties gespecificeerd als: logisch
indexen (de gebruikte Open MPI v1.6-serie) Fysiek indexen). U kunt hulpmiddelen gebruiken zoals:
HWLOC's "lstopo" om de logische indexen van socket en cores te vinden.

Aanvraag Context or Uitvoerbaar Programma?
Om de twee verschillende vormen te onderscheiden, mpirun zoekt op de opdrachtregel naar --app optie.
Als het is opgegeven, wordt aangenomen dat het bestand met de naam op de opdrachtregel een
toepassingscontext. Als het niet is opgegeven, wordt aangenomen dat het bestand een uitvoerbaar bestand is
programma.

lokaliseren Bestanden
Als er geen relatief of absoluut pad is opgegeven voor een bestand, zoekt Open MPI eerst naar
bestanden door te zoeken in de mappen die zijn opgegeven door de --pad optie. Als er geen --pad
optieset of als het bestand niet wordt gevonden op de --pad locatie, dan zal Open MPI zoeken
de PATH-omgevingsvariabele van de gebruiker zoals gedefinieerd op de bronknooppunt(en).

Als een relatieve directory is opgegeven, moet deze relatief zijn ten opzichte van de initiële werkdirectory
bepaald door de specifieke gebruikte starter. Als u bijvoorbeeld de rsh- of ssh-starters gebruikt,
de initiële directory is standaard $HOME. Andere starters kunnen de initiële directory instellen op:
de huidige werkdirectory van de aanroep van mpirun.

Actueel Werkzaam Directory
De -wdr mpirun-optie (en zijn synoniem, -wd) stelt de gebruiker in staat om naar een willekeurige te veranderen
directory voordat het programma wordt aangeroepen. Het kan ook worden gebruikt in toepassingscontextbestanden
om werkmappen op specifieke knooppunten en/of voor specifieke toepassingen te specificeren.

Indien de -wdr optie verschijnt zowel in een contextbestand als op de opdrachtregel, de context
bestandsmap zal de opdrachtregelwaarde overschrijven.

Indien de -wdr optie is opgegeven, zal Open MPI proberen te wijzigen in de opgegeven
map op alle externe knooppunten. Als dit niet lukt, mpirun zal afbreken.

Indien de -wdr Optie is niet opgegeven, zal Open MPI de mapnaam verzenden waar mpirun
werd aangeroepen voor elk van de externe knooppunten. De externe knooppunten zullen proberen daar verandering in te brengen
map. Als ze dat niet kunnen (bijv. als de map niet op dat knooppunt bestaat), dan:
Open MPI gebruikt de standaardmap die door de starter is bepaald.

Alle directorywijzigingen vinden plaats voordat het programma van de gebruiker wordt aangeroepen; het wacht niet tot
MPI_INIT wordt genoemd.

Standaard I / O
Open MPI stuurt UNIX-standaardinvoer naar /dev/null op alle processen behalve de
MPI_COMM_WORLD rang 0 proces. Het proces MPI_COMM_WORLD rang 0 neemt de standaardinvoer over
van mpirun. Opmerking: Het knooppunt dat aanriep mpirun hoeft niet hetzelfde te zijn als het knooppunt waar
het proces MPI_COMM_WORLD rang 0 bevindt zich. Open MPI zorgt voor de omleiding van mpirun's
standaardinvoer voor het rang 0-proces.

Open MPI stuurt UNIX-standaarduitvoer en fout van externe knooppunten naar het knooppunt dat werd aangeroepen
mpirun en drukt het af op de standaarduitvoer/fout van mpirun. Lokale processen erven de
standaard uitvoer/fout van mpirun en er direct naar overstappen.

Het is dus mogelijk om standaard I/O voor Open MPI-toepassingen om te leiden met behulp van de
typische shell-omleidingsprocedure aan mpirun.

% mpirun -np 2 mijn_app < ​​mijn_input > mijn_output

Merk op dat in dit voorbeeld Slechts het MPI_COMM_WORLD rang 0-proces zal de stream ontvangen
van mijn_invoer op std. De stdin op alle andere knooppunten wordt gekoppeld aan /dev/null.
De stdout van alle knooppunten wordt echter verzameld in de mijn_output bestand.

Signaal Voortplanting
Wanneer orterun een SIGTERM en SIGINT ontvangt, zal het proberen de hele taak te doden door:
alle processen in de taak een SIGTERM sturen, een klein aantal seconden wachten, dan
het verzenden van alle processen in de taak een SIGKILL.

SIGUSR1- en SIGUSR2-signalen die door orterun worden ontvangen, worden doorgegeven aan alle processen in de
baan.

Men kan het doorsturen van SIGSTOP en SIGCONT aanzetten naar het programma uitgevoerd door mpirun by
het instellen van de MCA-parameter orte_forward_job_control op 1. Een SIGTSTOP-signaal naar mpirun zal
zorg er vervolgens voor dat een SIGSTOP-signaal wordt verzonden naar alle programma's die door mpirun zijn gestart en
evenzo zal een SIGCONT-signaal naar mpirun ervoor zorgen dat een SIGCONT wordt verzonden.

Andere signalen worden momenteel niet door orterun verspreid.

Proces Beëindiging / Signaal Behandeling
Als tijdens het uitvoeren van een MPI-toepassing een proces abnormaal sterft
voordat je een beroep doet op MPI_FINALIZE, of sterven als gevolg van een signaal), mpirun zal uitprinten
een foutmelding en sluit de rest van de MPI-toepassing af.

Signaalbehandelaars van gebruikers moeten waarschijnlijk vermijden om de MPI-status op te schonen (Open MPI is
momenteel niet async-signaalveilig; zien MPI_Init_thread(3) voor details over:
MPI_THREAD_MULTIPLE en draadveiligheid). Als er bijvoorbeeld een segmentatiefout optreedt in
MPI_SEND (misschien omdat er een slechte buffer is doorgegeven) en een gebruikerssignaalhandler is
aangeroepen, als deze gebruikershandler probeert aan te roepen MPI_FINALIZE, Er kunnen slechte dingen gebeuren
omdat Open MPI al "in" MPI was toen de fout optrad. Sinds mpirun zal opmerken
dat het proces stierf door een signaal, is het waarschijnlijk niet nodig (en veiligste) voor de
gebruiker om alleen niet-MPI-status op te schonen.

Proces Milieu
Processen in de MPI-toepassing erven hun omgeving van de Open RTE-daemon op
het knooppunt waarop ze draaien. De omgeving wordt meestal geërfd van de
shell van de gebruiker. Op externe knooppunten wordt de exacte omgeving bepaald door de opstart-MCA-module
gebruikt. De rsh launch-module gebruikt bijvoorbeeld ofwel: rsh/ssh om de Open RTE . te starten
daemon op externe knooppunten, en voert meestal een of meer van de shell-setup-bestanden van de gebruiker uit
voordat u de Open RTE-daemon start. Bij het uitvoeren van dynamisch gekoppelde applicaties die:
vereisen de LD_LIBRARY_PATH omgevingsvariabele die moet worden ingesteld, moet ervoor worden gezorgd dat:
dat het correct is ingesteld bij het opstarten van Open MPI.

Zie de sectie "Externe uitvoering" voor meer details.

op Afstand Uitvoering
Open MPI vereist dat de PATH omgevingsvariabele worden ingesteld om uitvoerbare bestanden op afstand te vinden
nodes (dit is meestal alleen nodig in rsh- of ssh-gebaseerde omgevingen --
batch/geplande omgevingen kopiëren doorgaans de huidige omgeving naar de uitvoering van
taken op afstand, dus als de huidige omgeving heeft PATH en / of LD_LIBRARY_PATH goed instellen,
de externe knooppunten zullen het ook correct hebben ingesteld). Als Open MPI is gecompileerd met shared
bibliotheekondersteuning, kan het ook nodig zijn om de LD_LIBRARY_PATH variabele omgeving
ook ingesteld op externe knooppunten (vooral om de gedeelde bibliotheken te vinden die nodig zijn om gebruiker uit te voeren)
MPI-toepassingen).

Het is echter niet altijd wenselijk of mogelijk om shell-opstartbestanden te bewerken om in te stellen PATH
en / of LD_LIBRARY_PATH. De --voorvoegsel optie is voorzien voor enkele eenvoudige configuraties
waar dit niet mogelijk is.

De --voorvoegsel optie heeft één argument nodig: de basismap op het externe knooppunt waar
Open MPI is geïnstalleerd. Open MPI zal deze map gebruiken om de afstandsbediening in te stellen PATH en
LD_LIBRARY_PATH voordat u Open MPI of gebruikerstoepassingen uitvoert. Dit maakt hardlopen mogelijk
Open MPI-taken zonder vooraf de PATH en LD_LIBRARY_PATH op de afstandsbediening
knooppunten.

Open MPI voegt de basisnaam toe van de "bindir" van het huidige knooppunt (de map waarin Open MPI's
uitvoerbare bestanden zijn geïnstalleerd) naar het voorvoegsel en gebruikt dat om de PATH op het externe knooppunt.
Op dezelfde manier voegt Open MPI de basisnaam toe van de "libdir" van het huidige knooppunt (de map waar
Open MPI's bibliotheken zijn geïnstalleerd) naar het voorvoegsel en gebruikt dat om de LD_LIBRARY_PATH
op het externe knooppunt. Bijvoorbeeld:

Lokale bindir: /local/node/directory/bin

Lokale libdir: /local/node/directory/lib64

Als de volgende opdrachtregel wordt gebruikt:

% mpirun --voorvoegsel /remote/node/directory

Open MPI zal "/remote/node/directory/bin" toevoegen aan de PATH en
"/remote/node/directory/lib64" naar het D_LIBRARY_PATH op het externe knooppunt voordat u probeert
om iets uit te voeren.

De --voorvoegsel optie is niet voldoende als de installatiepaden op het externe knooppunt:
anders is dan het lokale knooppunt (bijv. als "/ lib" wordt gebruikt op het lokale knooppunt, maar "/lib64'is
gebruikt op het externe knooppunt), of als de installatiepaden iets anders zijn dan a
submap onder een gemeenschappelijk voorvoegsel.

Merk op dat het uitvoeren van mpirun via een absolute padnaam is gelijk aan specificeren --voorvoegsel
zonder de laatste submap in de absolute padnaam naar mpirun. Bijvoorbeeld:

% /usr/local/bin/mpirun ...

is gelijk aan

% mpirun --voorvoegsel / Usr / local

geëxporteerd Milieu Variabelen
Alle omgevingsvariabelen met de naam OMPI_* worden automatisch geëxporteerd
naar nieuwe processen op de lokale en externe knooppunten. Omgevingsparameters kunnen ook
ingesteld/doorgestuurd naar de nieuwe processen met behulp van de MCA-parameter mca_base_env_list. De -x
optie om mpirun is verouderd, maar de syntaxis van de MCA-param volgt dat prior
voorbeeld. Terwijl de syntaxis van de -x optie en MCA-parameter maakt de definitie van nieuwe
variabelen, merk op dat de parser voor deze opties momenteel niet erg geavanceerd is -
het begrijpt niet eens geciteerde waarden. Gebruikers wordt geadviseerd om variabelen in te stellen in de
omgeving en gebruik de optie om ze te exporteren; om ze niet te definiëren.

omgeving MCA parameters
De -mcca schakelaar maakt het doorgeven van parameters aan verschillende MCA (Modular Component) mogelijk
architectuur) modules. MCA-modules hebben directe invloed op MPI-programma's omdat ze het mogelijk maken:
afstembare parameters die tijdens runtime moeten worden ingesteld (zoals het stuurprogramma van het BTL-communicatieapparaat)
gebruiken, welke parameters aan die BTL moeten worden doorgegeven, enz.).

De -mcca switch heeft twee argumenten: en . De argument in het algemeen
specificeert welke MCA-module de waarde zal ontvangen. Bijvoorbeeld de "btl" wordt gebruikt
om te selecteren welke BTL moet worden gebruikt voor het transporteren van MPI-berichten. De argument is het
waarde die wordt doorgegeven. Bijvoorbeeld:

mpirun -mca btl tcp,self -np 1 foo
Vertelt Open MPI om de "tcp" en "self" BTL's te gebruiken, en om een ​​enkele kopie van "foo" en
toegewezen knooppunt.

mpirun -mca btl zelf -np 1 foo
Vertelt Open MPI om de "zelf" BTL te gebruiken en een enkele kopie van "foo" een toegewezen te gebruiken
knooppunt.

De -mcca schakelaar kan meerdere keren worden gebruikt om verschillende te specificeren en / of
argumenten. Als hetzelfde meer dan één keer is opgegeven, de s zijn aaneengeschakeld
met een komma (",") die ze scheidt.

Merk op dat de -mcca switch is gewoon een snelkoppeling voor het instellen van omgevingsvariabelen. De
hetzelfde effect kan worden bereikt door eerder corresponderende omgevingsvariabelen in te stellen
lopend mpirun. De vorm van de omgevingsvariabelen die Open MPI instelt is:

OMPI_MCA_ =

Dus de -mcca switch overschrijft alle eerder ingestelde omgevingsvariabelen. De -mcca
instellingen overschrijven op dezelfde manier MCA-parameters die zijn ingesteld in de $OPAL_PREFIX/etc/openmpi-mca-
params.conf of $HOME/.openmpi/mca-params.conf bestand.

Onbekend argumenten zijn nog steeds ingesteld als omgevingsvariabele -- ze worden niet gecontroleerd (door
mpirun) voor juistheid. Illegaal of onjuist argumenten kunnen wel of niet zijn
gerapporteerd -- het hangt af van de specifieke MCA-module.

Om de beschikbare componenttypes onder de MCA-architectuur te vinden, of om de beschikbare te vinden
parameters voor een specifiek onderdeel, gebruik de ompi_info opdracht. Zie de ompi_info(1) man
pagina voor gedetailleerde informatie over de opdracht.

Hardlopen as wortel
Het Open MPI-team raadt ten zeerste af om te executeren mpirun als de rootgebruiker. MPI
applicaties moeten worden uitgevoerd als gewone (niet-root) gebruikers.

In navolging van dit advies, zal mpirun standaard weigeren als root te draaien. Om dit te negeren
standaard kunt u de . toevoegen --sta-uitvoeren-als-root toe optie voor de mpirun opdrachtregel.

afrit toestand
Er is geen standaarddefinitie voor wat? mpirun moet terugkeren als een exit-status. Na
aanzienlijke discussie, kwamen we tot de volgende methode voor het toewijzen van de mpirun afrit
status (let op: in de volgende beschrijving is de "primaire" baan de eerste sollicitatie
gestart door mpirun - alle banen die door die baan worden voortgebracht, worden "secundair" genoemd
banen):

· als alle processen in de primaire taak normaal eindigen met afsluitstatus 0, retourneren we 0

· als een of meer processen in de primaire taak normaal eindigen met een exit die niet nul is
status, retourneren we de exit-status van het proces met de laagste MPI_COMM_WORLD-rang naar
een niet-nul status hebben

· als alle processen in de primaire taak normaal eindigen met afsluitstatus 0, en één of
meer processen in een secundaire taak eindigen normaal gesproken met een exit-status die niet nul is, we (a)
retourneer de exit-status van het proces met de laagste MPI_COMM_WORLD-rang in de laagste
jobid om een ​​niet-nul status te hebben, en (b) voer een bericht uit met een samenvatting van de exit-status van
de primaire en alle secundaire banen.

· als de cmd-regeloptie --report-child-jobs-apart is ingesteld, zullen we -alleen- de
exit-status van de primaire taak. Elke exit-status die niet nul is in secundaire taken wordt
uitsluitend gerapporteerd in een samenvattende afdrukverklaring.

OMPI registreert en merkt standaard op dat MPI-processen zijn afgesloten met niet-nul-beëindiging
toestand. Dit wordt over het algemeen niet als een "abnormale beëindiging" beschouwd - dat wil zeggen, OMPI zal dat niet doen
een MPI-taak afbreken als een of meer processen een niet-nulstatus retourneren. In plaats daarvan is de standaard
gedrag rapporteert eenvoudig het aantal processen dat eindigt met een niet-nul status op
voltooiing van de baan.

In sommige gevallen kan het echter wenselijk zijn om de taak af te breken wanneer een proces
eindigt met een niet-nul status. Een niet-MPI-taak kan bijvoorbeeld een slecht resultaat detecteren van:
een berekening en wil afbreken, maar wil geen kernbestand genereren. Of een MPI-baan
kan doorgaan na een oproep naar MPI_Finalize, maar aangeven dat alle processen moeten worden afgebroken
vanwege een post-MPI-resultaat.

Het is niet te verwachten dat deze situatie vaak zal voorkomen. Echter, in het belang
om de bredere gemeenschap te dienen, heeft OMPI nu een middel om gebruikers in staat te stellen dat te sturen
taken worden afgebroken wanneer een proces wordt afgesloten met een status die niet nul is. De MCA-parameter instellen
"orte_abort_on_non_zero_status" naar 1 zorgt ervoor dat OMPI alle processen eens afbreekt

uitgangen met een niet-nul status.

Beëindigingen die op deze manier worden veroorzaakt, worden op de console gerapporteerd als een "abnormaal"
beëindiging", waarbij het eerste proces om zo te verlaten wordt geïdentificeerd, samen met de exit-status.

Voorbeelden


Zorg ervoor dat u ook de voorbeelden in de bovenstaande secties bekijkt.

mpirun -np 4 -mca btl ib,tcp,zelf prog1
Voer 4 exemplaren van prog1 uit met behulp van de "ib", "tcp" en "self" BTL's voor het transport van MPI
berichten.

mpirun -np 4 -mca btl tcp,sm,zelf
--mca btl_tcp_if_include eth0 prog1
Voer 4 exemplaren van prog1 uit met behulp van de "tcp", "sm" en "self" BTL's voor het transport van MPI
berichten, waarbij TCP alleen de eth0-interface gebruikt om te communiceren. Merk op dat andere BTL's
vergelijkbare if_include MCA-parameters hebben.

RETURN WAARDE


mpirun geeft 0 terug als alle processen zijn gestart door mpirun afsluiten na het aanroepen van MPI_FINALIZE. EEN
niet-nulwaarde wordt geretourneerd als er een interne fout is opgetreden in mpirun, of een of meer
processen zijn afgesloten voordat MPI_FINALIZE werd aangeroepen. Als er een interne fout is opgetreden in mpirun,
de bijbehorende foutcode wordt geretourneerd. In het geval dat een of meer processen worden afgesloten
voordat MPI_FINALIZE wordt aangeroepen, de geretourneerde waarde van de MPI_COMM_WORLD-rang van het proces
uit die mpirun eerste meldingen overleden voordat MPI_FINALIZE werd gebeld, worden geretourneerd. Let daar op,
over het algemeen zal dit het eerste proces zijn dat stierf, maar het is niet gegarandeerd dat dit het geval is.

Gebruik mpirun.openmpi online met behulp van onworks.net-services


Gratis servers en werkstations

Windows- en Linux-apps downloaden

Linux-commando's

Ad