InglesPransesEspanyol

OnWorks favicon

orterun - Online sa Cloud

Patakbuhin ang orterun sa OnWorks na libreng hosting provider sa Ubuntu Online, Fedora Online, Windows online emulator o MAC OS online emulator

Ito ang command orterun na maaaring patakbuhin sa OnWorks na libreng hosting provider gamit ang isa sa aming maramihang libreng online na workstation gaya ng Ubuntu Online, Fedora Online, Windows online emulator o MAC OS online emulator

PROGRAMA:

NAME


orterun, mpirun, mpiexec - Magsagawa ng mga serial at parallel na trabaho sa Open MPI. oshrun, shmemrun
- Magsagawa ng mga serial at parallel na trabaho sa Open SHMEM.

tandaan: mpirun, mpiexec, at orterun ay ang lahat ng kasingkahulugan para sa isa't isa pati na rin oshrun,
shmemrun kung sakaling naka-install ang Open SHMEM. Ang paggamit ng alinman sa mga pangalan ay magbubunga ng pareho
pag-uugali.

SINOPSIS


Modelo ng Single Process Multiple Data (SPMD):

mpirun [mga pagpipilian] [ ]

Modelo ng Multiple Instruction Multiple Data (MIMD):

mpirun [ global_options ]
[ local_options1 ] [ ] :
[ local_options2 ] [ ] :
... :
[ local_optionsN ] [ ]

Tandaan na sa parehong mga modelo, invoking mpirun sa pamamagitan ng isang ganap na pangalan ng path ay katumbas ng
pagtukoy sa --prefix opsyon na may a katumbas ng halaga sa direktoryo kung saan mpirun
naninirahan, minus ang huling subdirectory nito. Halimbawa:

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

ay katumbas ng

% mpirun --prefix / usr / lokal

Mabilis BUOD


Kung naghahanap ka lang kung paano magpatakbo ng isang MPI application, malamang na gusto mong gumamit ng a
command line ng sumusunod na form:

% mpirun [ -np X ] [ --hostfile ]

Tatakbo ito ng X na kopya ng sa iyong kasalukuyang run-time na kapaligiran (kung tumatakbo sa ilalim
isang suportadong resource manager, Open MPI's mpirun ay karaniwang awtomatikong gagamitin ang
kaukulang resource manager process starter, bilang kabaligtaran sa, halimbawa, rsh or SSH,
na nangangailangan ng paggamit ng isang hostfile, o magiging default sa pagpapatakbo ng lahat ng X na kopya sa
localhost), pag-iiskedyul (bilang default) sa isang round-robin fashion sa pamamagitan ng CPU slot. Tingnan ang iba pa
ang pahinang ito para sa higit pang mga detalye.

Pakitandaan na ang mpirun ay awtomatikong nagbubuklod ng mga proseso sa simula ng v1.8 series.
Dalawang umiiral na pattern ang ginagamit sa kawalan ng anumang karagdagang direktiba:

Magbigkis sa pangunahing: kapag ang bilang ng mga proseso ay <= 2

Magbigkis sa socket: kapag ang bilang ng mga proseso ay > 2

Kung ang iyong aplikasyon ay gumagamit ng mga thread, malamang na gusto mong tiyakin na ikaw ay alinman sa hindi
nakatali sa lahat (sa pamamagitan ng pagtukoy --bind-to none), o nakatali sa maramihang mga core gamit ang isang
naaangkop na antas ng pagbubuklod o tiyak na bilang ng mga elemento ng pagproseso sa bawat aplikasyon
proseso.

Opsyon


mpirun ay magpapadala ng pangalan ng direktoryo kung saan ito na-invoke sa lokal na node sa bawat isa
ng mga malalayong node, at subukang lumipat sa direktoryong iyon. Tingnan ang "Kasalukuyang Paggawa
Direktoryo" na seksyon sa ibaba para sa karagdagang mga detalye.

Ang programa ay maipapatupad. Ito ay kinilala bilang ang unang hindi kinikilalang argumento
sa mpirun.

Ipasa ang mga run-time na argumento na ito sa bawat bagong proseso. Ang mga ito ay dapat palaging ang
huling argumento sa mpirun. Kung ginamit ang isang context file ng app, ay
hindi pinansin

-h, - Tumulong
Ipakita ang tulong para sa utos na ito

-q, --tahimik
Pigilan ang mga mensaheng nagbibigay-kaalaman mula sa orterun sa panahon ng pagpapatupad ng aplikasyon.

-v, --verbose
Maging verbose

-V, --bersyon
Numero ng bersyon ng pag-print. Kung walang ibang argumento ang ibibigay, ito rin ang magiging sanhi
orterun para lumabas.

-display-map, --display-map
Magpakita ng talahanayan na nagpapakita ng nakamapang lokasyon ng bawat proseso bago ilunsad.

-display-devel-map, --display-devel-map
Magpakita ng mas detalyadong talahanayan na nagpapakita ng nakamapang lokasyon ng bawat prosesong nauna
upang ilunsad (karaniwan ay interesado sa mga developer).

-display-allocation, --display-allocation
Ipakita ang nakitang paglalaan ng mapagkukunan.

Gamitin ang isa sa mga sumusunod na opsyon para tukuyin kung aling mga host (node) ng cluster ang tatakbo.
Tandaan na sa pagsisimula ng v1.8 release, ang mpirun ay maglulunsad ng isang daemon sa bawat host
sa alokasyon (tulad ng binago ng mga sumusunod na opsyon) sa pinakasimula ng
execution, hindi alintana kung ang mga proseso ng aplikasyon ay mamamapa sa kalaunan
execute doon. Ginagawa ito upang payagan ang koleksyon ng impormasyon sa topology ng hardware mula sa
malalayong node, kaya nagbibigay-daan sa amin na i-map ang mga proseso laban sa kilalang topology. Gayunpaman, ito ay isang
pagbabago mula sa pag-uugali sa mga naunang release kung saan ang mga daemon ay inilunsad lamang pagkatapos ng pagmamapa
ay kumpleto, at sa gayon ay naganap lamang sa mga node kung saan ang mga proseso ng aplikasyon ay aktuwal
isagawa.

-H, -host, --host
Listahan ng mga host kung saan mag-invoke ng mga proseso.

-hostfile, --hostfile
Magbigay ng hostfile na gagamitin.

-machinefile, --machinefile
kasingkahulugan ng -hostfile.

-cpu-set, --cpu-set
Limitahan ang mga inilunsad na proseso sa tinukoy na lohikal na cpus sa bawat node. Tandaan na
malalapat pa rin ang mga opsyon sa pagbubuklod sa loob ng tinukoy na sobre - hal, maaari mo
piliin na isailalim ang bawat proseso sa isang cpu lamang sa loob ng tinukoy na set ng cpu.

Tinutukoy ng mga sumusunod na opsyon ang bilang ng mga prosesong ilulunsad. Tandaan na wala sa
Ang mga opsyon ay nagpapahiwatig ng isang partikular na patakarang nagbubuklod - hal., humihiling ng mga proseso ng N para sa bawat socket
ay hindi nagpapahiwatig na ang mga proseso ay iuugnay sa socket.

-c, -n, --n, -np <#>
Patakbuhin ang maraming kopya ng programa sa mga ibinigay na node. Ang pagpipiliang ito ay nagpapahiwatig na
ang tinukoy na file ay isang maipapatupad na programa at hindi isang konteksto ng aplikasyon. Kung hindi
ang halaga ay ibinigay para sa bilang ng mga kopya na isasagawa (ibig sabihin, hindi ang "-np" o
ang mga kasingkahulugan nito ay ibinigay sa command line), ang Open MPI ay awtomatikong isasagawa
isang kopya ng programa sa bawat puwang ng proseso (tingnan sa ibaba para sa paglalarawan ng isang "proseso
slot"). Gayunpaman, ang feature na ito ay magagamit lamang sa modelong SPMD at babalik
isang error (nang hindi nagsisimula ang pagpapatupad ng application) kung hindi man.

—mapa-sa pamamagitan ng ppr:N:
Ilunsad ang N beses sa bilang ng mga bagay ng tinukoy na uri sa bawat node.

-npersocket, --npersocket <#persocket>
Sa bawat node, ilunsad ito nang maraming beses sa bilang ng mga socket ng processor
ang node. Ang -npersocket Ino-on din ng opsyon ang -bind-to-socket pagpipilian.
(hindi na ginagamit pabor sa --map-by ppr:n:socket)

-npernode, --npernode <#pernode>
Sa bawat node, ilunsad ang maraming prosesong ito. (hindi na ginagamit pabor sa --map-by
ppr:n:node)

-pernode, --pernode
Sa bawat node, ilunsad ang isang proseso -- katumbas ng -npernode 1. (hindi na ginagamit sa
pabor sa --map-by ppr:1:node)

Upang mapa ang mga proseso:

--mapa-ni
Mapa sa tinukoy na bagay, default sa socket. Kasama sa mga sinusuportahang opsyon ang slot,
hwthread, core, L1cache, L2cache, L3cache, socket, numa, board, node, sequential,
distansya, at ppr. Ang anumang bagay ay maaaring magsama ng mga modifier sa pamamagitan ng pagdaragdag ng isang : at anuman
kumbinasyon ng PE=n (bind n processing elements sa bawat proc), SPAN (load balance
ang mga proseso sa kabuuan ng alokasyon), OVERSUBSCRIBE (payagan ang higit pang mga proseso sa isang node
kaysa sa pagpoproseso ng mga elemento), at NOOVERSUBSCRIBE. Kabilang dito ang PPR, kung saan ang
pattern ay wawakasan ng isa pang colon upang paghiwalayin ito mula sa mga modifier.

-bycore, --bycore
Mga proseso ng mapa ayon sa core (hindi na ginagamit pabor sa --map-by core)

-bysocket, --bysocket
Mga proseso ng mapa ayon sa socket (hindi na ginagamit pabor sa --map-by socket)

-nolocal, --nolocal
Huwag magpatakbo ng anumang mga kopya ng inilunsad na application sa parehong node bilang orterun ay
tumatakbo. I-o-override ng opsyong ito ang listahan ng localhost na may --host o anumang iba pang
mekanismo ng pagtukoy ng host.

-nooversubscribe, --nooversubscribe
Huwag mag-oversubscribe sa anumang mga node; error (nang hindi nagsisimula ng anumang mga proseso) kung ang
ang hiniling na bilang ng mga proseso ay magdudulot ng labis na subscription. Ang pagpipiliang ito ay hindi malinaw
nagtatakda ng "max_slots" na katumbas ng halaga ng "slots" para sa bawat node.

-bynode, --bynode
Ilunsad ang mga proseso ng isa sa bawat node, pagbibisikleta sa pamamagitan ng node sa isang round-robin na paraan. Ito
nagkakalat ng mga proseso nang pantay-pantay sa mga node at nagtatalaga ng mga ranggo ng MPI_COMM_WORLD sa isang round-
robin, "sa pamamagitan ng node" na paraan.

Upang mag-order ng mga ranggo ng mga proseso sa MPI_COMM_WORLD:

--ranggo-ng
I-rank sa round-robin fashion ayon sa tinukoy na bagay, ang default ay sa puwang.
Kasama sa mga sinusuportahang opsyon ang slot, hwthread, core, L1cache, L2cache, L3cache, socket,
numa, board, at node.

Para sa proseso ng pagbubuklod:

--bind-to
I-bind ang mga proseso sa tinukoy na object, default sa ubod. Kasama sa mga sinusuportahang opsyon
slot, hwthread, core, l1cache, l2cache, l3cache, socket, numa, board, at wala.

-cpus-per-proc, --cpus-per-proc <#perproc>
Itali ang bawat proseso sa tinukoy na bilang ng cpus. (hindi na ginagamit pabor sa --map-
sa pamamagitan ng :PE=n)

-cpus-per-rank, --cpus-per-rank <#perrank>
Alyas para sa -cpus-per-proc. (hindi na ginagamit pabor sa --map-by :PE=n)

-bind-to-core, --bind-to-core
I-bind ang mga proseso sa mga core (hindi na ginagamit pabor sa --bind-to core)

-bind-to-socket, --bind-to-socket
I-bind ang mga proseso sa mga processor socket (deprecated in favor of --bind-to socket)

-bind-to-none, --bind-to-none
Huwag itali ang mga proseso (hindi na ginagamit pabor sa --bind-to none)

-ulat-bindings, --ulat-bindings
Iulat ang anumang mga binding para sa mga inilunsad na proseso.

-slot-list, --listahan ng puwang
Listahan ng mga processor ID na gagamitin para sa pagbubuklod ng mga proseso ng MPI. Ang tinukoy na mga binding
ilalapat sa lahat ng proseso ng MPI. Tingnan ang paliwanag sa ibaba para sa syntax.

Para sa mga rankfile:

-Rf, --rankfile
Magbigay ng rankfile file.

Upang pamahalaan ang karaniwang I/O:

-pangalan ng file output, --pangalan ng file output
I-redirect ang stdout, stderr, at stddiag ng lahat ng mga proseso sa isang natatanging proseso
bersyon ng tinukoy na filename. Ang anumang mga direktoryo sa filename ay
awtomatikong malilikha. Ang bawat output file ay bubuo ng filename.id, kung saan ang
id ang magiging ranggo ng mga proseso sa MPI_COMM_WORLD, kaliwang puno ng mga zero para sa
tamang pagkakasunod-sunod sa mga listahan.

-stdin, --stdin
Ang ranggo ng MPI_COMM_WORLD ng proseso na tumanggap ng stdin. Ang default ay sa
ipasa ang stdin sa MPI_COMM_WORLD na ranggo 0, ngunit ang opsyong ito ay maaaring gamitin upang ipasa
stdin sa anumang proseso. Katanggap-tanggap din na tukuyin wala, na nagpapahiwatig na hindi
ang mga proseso ay upang makatanggap ng stdin.

-tag-output, --tag-output
I-tag ang bawat linya ng output sa stdout, stderr, at stddiag with [jobid,
MCW_rank] na nagsasaad ng prosesong jobid at MPI_COMM_WORLD na ranggo ng
proseso na nakabuo ng output, at ang channel na nakabuo nito.

-timestamp-output, --timestamp-output
Timestamp ang bawat linya ng output sa stdout, stderr, at stddiag.

-xml, --xml
Ibigay ang lahat ng output sa stdout, stderr, at stddiag sa isang xml na format.

-xterm, --xterm
Ipakita ang output mula sa mga prosesong natukoy ng kanilang MPI_COMM_WORLD rank in
hiwalay na xterm windows. Ang mga ranggo ay tinukoy bilang isang listahan na pinaghihiwalay ng kuwit ng
mga saklaw, na may -1 na nagsasaad ng lahat. Isang hiwalay na window ang gagawin para sa bawat isa
tinukoy na proseso. tandaan: Karaniwang tatapusin ng xterm ang window sa pagwawakas
ng prosesong tumatakbo sa loob nito. Gayunpaman, sa pamamagitan ng pagdaragdag ng "!" hanggang sa dulo ng listahan
ng mga tinukoy na ranggo, ibibigay ang mga wastong opsyon upang matiyak na mananatili ang xterm
bukas ang bintana pagkatapos ang proseso ay nagtatapos, sa gayon ay nagbibigay-daan sa iyong makita ang proseso'
output. Ang bawat xterm window ay kakailanganing manu-manong isara. tandaan: In
ilang environment, maaaring kailanganin ng xterm na ang executable ay nasa landas ng user, o
matukoy sa ganap o kamag-anak na mga termino. Kaya, maaaring kailanganin na tukuyin ang a
local executable bilang "./foo" sa halip na "foo" lang. Kung nabigo ang xterm na mahanap ang
executable, mag-hang ang mpirun, ngunit tumugon pa rin ng tama sa isang ctrl-c. Kung ito
mangyari, mangyaring suriin kung ang executable ay tinukoy nang tama at subukan
muli.

Upang pamahalaan ang mga file at runtime environment:

- landas, --daanan
na gagamitin kapag sinusubukang hanapin ang hiniling na mga executable. Ito
ay ginagamit bago gamitin ang lokal na setting ng PATH.

--prefix
Prefix na direktoryo na gagamitin upang itakda ang PATH at LD_LIBRARY_PATH sa
malayong node bago i-invoke ang Open MPI o ang target na proseso. Tingnan ang "Remote
Execution", sa ibaba.

--preload-binary
Kopyahin ang tinukoy na (mga) executable sa mga malalayong makina bago simulan ang remote
mga proseso. Ang mga executable ay makokopya sa Open MPI session directory at
ay tatanggalin kapag natapos ang trabaho.

--preload-files
I-preload ang listahan ng mga file na pinaghihiwalay ng kuwit sa kasalukuyang gumaganang direktoryo ng
mga malalayong makina kung saan ilulunsad ang mga proseso bago simulan ang mga prosesong iyon.

--preload-files-dest-dir
Ang patutunguhang direktoryo na gagamitin para sa mga preload-file, kung iba sa kasalukuyang
gumaganang direktoryo. Bilang default, ang absolute at relative path na ibinigay ng
--preload-file ay ginagamit.

--tmpdir
Itakda ang ugat para sa puno ng direktoryo ng session para sa mpirun lamang.

-wd
kasingkahulugan ng -wdir.

-wdir
Palitan sa direktoryo bago i-execute ang program ng user. Tingnan ang "Kasalukuyan
Working Directory" na seksyon para sa mga tala sa mga kaugnay na landas. tandaan: Kung ang -wdir opsyon
lilitaw pareho sa command line at sa isang konteksto ng aplikasyon, ang konteksto ay
unahin ang command line. Kaya, kung ang landas sa nais na wdir ay
naiiba sa mga backend node, pagkatapos ay dapat itong tukuyin bilang isang ganap na landas na
ay tama para sa backend node.

-x
I-export ang tinukoy na mga variable ng kapaligiran sa mga malalayong node bago isagawa ang
programa. Isang environment variable lang ang maaaring tukuyin bawat -x opsyon. Umiiral
maaaring tukuyin ang mga variable ng kapaligiran o tinukoy ang mga bagong pangalan ng variable
kaukulang halaga. Halimbawa:
% mpirun -x DISPLAY -x OFILE=/tmp/out ...

Ang parser para sa -x ang opsyon ay hindi masyadong sopistikado; hindi rin nito maintindihan
sinipi na mga halaga. Ang mga gumagamit ay pinapayuhan na magtakda ng mga variable sa kapaligiran, at pagkatapos ay gamitin
-x upang i-export (hindi tukuyin) ang mga ito.

Pagtatakda ng mga parameter ng MCA:

-gmca, --gmca
Ipasa ang mga global na parameter ng MCA na naaangkop sa lahat ng konteksto. ay ang
pangalan ng parameter; ay ang halaga ng parameter.

-mca, --mca
Magpadala ng mga argumento sa iba't ibang MCA modules. Tingnan ang seksyong "MCA", sa ibaba.

Para sa pag-debug:

-debug, --debug
I-invoke ang user-level debugger na ipinahiwatig ng orte_base_user_debugger MCA
parameter

-debugger, --debugger
Pagkakasunud-sunod ng mga debugger na hahanapin kung kailan --debug ay ginagamit (ibig sabihin, isang kasingkahulugan para sa
orte_base_user_debugger parameter ng MCA).

- tv, --tv
Ilunsad ang mga proseso sa ilalim ng TotalView debugger. Hindi na ginagamit pabalik na compatibility
bandila. kasingkahulugan ng --debug.

Mayroon ding iba pang mga pagpipilian:

--allow-run-as-root
Payagan mpirun upang tumakbo kapag naisakatuparan ng root user (mpirun default sa pagpapalaglag
kapag inilunsad bilang root user).

-nalaglag, --na-abort <#>
Itakda ang maximum na bilang ng mga aborted na proseso na ipapakita.

--app
Magbigay ng appfile, hindi pinapansin ang lahat ng iba pang opsyon sa command line.

-cf, --cartofile
Magbigay ng cartography file.

--hetero
Isinasaad na maraming app_context ang ibinibigay na pinaghalong 32/64-bit
mga binary

-iwan-session-nakalakip, --iwan-session-nakalakip
Huwag tanggalin ang mga OmpiRTE daemon na ginagamit ng application na ito. Pinapayagan nito ang mga mensahe ng error
mula sa mga daemon pati na rin sa pinagbabatayan na kapaligiran (hal., kapag nabigo
maglunsad ng isang daemon) upang maging output.

-ompi-server, --ompi-server <uri or file>
Tukuyin ang URI ng Open MPI server (o ang mpirun na gagamitin bilang server) ,
ang pangalan ng file (tinukoy bilang file:filename) na naglalaman ng impormasyong iyon, o ang
PID (tinukoy bilang pid:#) ng mpirun na gagamitin bilang
ang server. Ang Open MPI server ay ginagamit upang suportahan ang multi-application data
exchange sa pamamagitan ng MPI-2 MPI_Publish_name at MPI_Lookup_name function.

-ulat-pid, --ulat-pid
I-print ang PID ng mpirun sa pagsisimula. Ang channel ay dapat na alinman sa '-' sa indi
ipahiwatig na ang pid ay magiging output sa stdout, isang '+' upang ipahiwatig na ang pid ay upang
maging outp ut sa stderr, o isang filename kung saan isusulat ang pid.

-ulat-uri, --ulat-uri
I-print ang URI ng mpirun sa panahon ng startup. Ang channel ay dapat na alinman sa '-' sa indi
ipahiwatig na ang URI ay magiging output sa stdout, isang '+' upang ipahiwatig na ang URI ay upang
maging outp ut sa stderr, o isang filename kung saan isusulat ang URI.

-wait-for-server, --wait-for-server
I-pause ang mpirun bago ilunsad ang trabaho hanggang sa matukoy ang ompi-server. Ito ay kapaki-pakinabang
sa mga script kung saan maaaring magsimula ang ompi-server sa background, sinundan kaagad
gawa ng mpirun utos na gustong kumonekta dito. Magpa-pause ang Mpirun hanggang sa alinman
ang tinukoy na ompi-server ay nakipag-ugnayan o ang server-wait-time ay lumampas.

-server-wait-time, --server-wait-time
Ang max na tagal ng oras (sa mga segundo) mpirun ay dapat maghintay para sa ompi-server na
simulan. Ang default ay 10 segundo.

Ang mga sumusunod na opsyon ay kapaki-pakinabang para sa mga developer; ang mga ito sa pangkalahatan ay hindi kapaki-pakinabang sa karamihan
Mga gumagamit ng ORTE at/o MPI:

-d, --debug-devel
Paganahin ang pag-debug ng OmpiRTE (ang run-time na layer sa Open MPI). Hindi ito
sa pangkalahatan ay kapaki-pakinabang para sa karamihan ng mga gumagamit.

--debug-daemons
Paganahin ang pag-debug ng anumang OmpiRTE daemon na ginagamit ng application na ito.

--debug-daemons-file
Paganahin ang pag-debug ng anumang OmpiRTE daemon na ginagamit ng application na ito, na nag-iimbak ng output
file.

-lunch-ahente, --lunch-agent
Pangalan ng executable na gagamitin para simulan ang mga proseso sa mga malalayong node.
Ang default ay "orted". Maaaring gamitin ang opsyong ito upang subukan ang mga bagong konsepto ng daemon, o upang
ipasa ang mga opsyon pabalik sa mga daemon nang hindi nakikita ng mpirun mismo ang mga ito. Para sa
halimbawa, ang pagtukoy ng isang launch agent ng orted -mca odls_base_verbose 5 ay nagbibigay-daan sa
tanungin ng developer ang orted para sa pag-debug ng output nang walang kalat mula sa mpirun mismo.

--noprefix
Huwag paganahin ang awtomatikong --prefix na gawi

Maaaring may iba pang mga opsyon na nakalista sa mpirun - Tumulong.

kapaligiran Variable
MPIEXEC_TIMEOUT
Ang maximum na bilang ng mga segundo na mpirun (mpiexec) ay tatakbo. Pagkatapos nitong marami
segundo, mpirun ipapalaglag ang inilunsad na trabaho at lalabas.

DESCRIPTION


Isang panawagan ng mpirun nagsisimula ng isang MPI application na tumatakbo sa ilalim ng Open MPI. Kung ang
application ay isang proseso ng maramihang data (SPMD), ang application ay maaaring tinukoy sa
ang mpirun command line.

Kung ang application ay multiple instruction multiple data (MIMD), na binubuo ng maramihang
mga programa, ang hanay ng mga programa at argumento ay maaaring tukuyin sa isa sa dalawang paraan: Extended
Mga Pangangatwiran sa Command Line, at Konteksto ng Application.

Inilalarawan ng konteksto ng aplikasyon ang set ng MIMD program kasama ang lahat ng argumento sa a
hiwalay na file. Ang file na ito ay naglalaman ng marami mpirun command lines, mas mababa ang
pangalan mismo ng command. Ang kakayahang tukuyin ang iba't ibang mga pagpipilian para sa iba't ibang
Ang mga instantiations ng isang programa ay isa pang dahilan upang gumamit ng konteksto ng application.

Ang pinalawak na mga argumento ng command line ay nagbibigay-daan para sa paglalarawan ng layout ng application sa
command line gamit ang mga tutuldok (:) upang paghiwalayin ang detalye ng mga programa at argumento.
Ang ilang mga opsyon ay itinakda sa buong mundo sa lahat ng tinukoy na mga programa (hal --hostfile), habang
ang iba ay tiyak sa isang programa (hal -np).

Tinutukoy Paghandaan Node
Ang mga host node ay maaaring makilala sa mpirun command line kasama ang -host opsyon o sa a
hostfile.

Halimbawa,

mpirun -H aa,aa,bb ./a.out
naglulunsad ng dalawang proseso sa node aa at isa sa bb.

O, isaalang-alang ang hostfile

% cat myhostfile
aa slots=2
bb slots=2
mga puwang ng cc=2

Dito, inilista namin ang parehong mga pangalan ng host (aa, bb, at cc) ngunit gayundin kung ilang "slot" ang mayroon para sa
bawat isa. Isinasaad ng mga slot kung gaano karaming mga proseso ang posibleng maisagawa sa isang node. Para sa pinakamahusay
pagganap, ang bilang ng mga puwang ay maaaring piliin na ang bilang ng mga core sa node o
ang bilang ng mga socket ng processor. Kung ang hostfile ay hindi nagbibigay ng impormasyon ng mga slot, a
ang default ng 1 ay ipinapalagay. Kapag tumatakbo sa ilalim ng mga resource manager (hal., SLURM, Torque,
atbp.), Makukuha ng Open MPI ang parehong mga hostname at ang bilang ng mga slot nang direkta mula sa
tagapamahala ng mapagkukunan.

mpirun -hostfile myhostfile ./a.out
ay maglulunsad ng dalawang proseso sa bawat isa sa tatlong node.

mpirun -hostfile myhostfile -host aa ./a.out
ay maglulunsad ng dalawang proseso, pareho sa node aa.

mpirun -hostfile myhostfile -host dd ./a.out
ay hindi makakahanap ng mga host na tatakbo at i-abort nang may error. Iyon ay, ang tinukoy na host dd
ay wala sa tinukoy na hostfile.

Tinutukoy Numero of Mga Proseso
Tulad ng nakita na natin, ang bilang ng mga prosesong tatakbo ay maaaring itakda gamit ang hostfile. Iba pa
umiiral ang mga mekanismo.

Maaaring tukuyin ang bilang ng mga prosesong inilunsad bilang maramihang bilang ng mga node o
magagamit ang mga socket ng processor. Halimbawa,

mpirun -H aa,bb -npersocket 2 ./a.out
naglulunsad ng mga prosesong 0-3 sa node aa at nagproseso ng 4-7 sa node bb, kung saan pareho ang aa at bb
dual-socket node. Ang -npersocket Ino-on din ng opsyon ang -bind-to-socket pagpipilian,
na tinatalakay sa susunod na seksyon.

mpirun -H aa,bb -npernode 2 ./a.out
naglulunsad ng mga prosesong 0-1 sa node aa at nagpoproseso ng 2-3 sa node bb.

mpirun -H aa,bb -npernode 1 ./a.out
naglulunsad ng isang proseso sa bawat host node.

mpirun -H aa,bb -pernode ./a.out
ay pareho -npernode 1.

Ang isa pang alternatibo ay ang tukuyin ang bilang ng mga proseso sa -np opsyon. Isipin mo
ngayon ang hostfile

% cat myhostfile
aa slots=4
bb slots=4
mga puwang ng cc=4

Ngayon,

mpirun -hostfile myhostfile -np 6 ./a.out
ay maglulunsad ng mga proseso 0-3 sa node aa at mga proseso ng 4-5 sa node bb. Ang natitirang
ang mga puwang sa hostfile ay hindi na gagamitin dahil ang -np ang opsyon ay nagpahiwatig na 6 lamang
dapat ilunsad ang mga proseso.

Pagma-map Mga Proseso sa Node: paggamit Mga Patakaran
Ang mga halimbawa sa itaas ay naglalarawan ng default na pagmamapa ng mga proseso ng proseso sa mga node. Ito
ang pagmamapa ay maaari ding kontrolin sa iba't-ibang mpirun mga opsyon na naglalarawan sa mga patakaran sa pagmamapa.

Isaalang-alang ang parehong hostfile tulad ng nasa itaas, muli sa -np 6:

node aa node bb node cc

mpirun 0 1 2 3 4 5

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

mpirun -nolocal 0 1 2 3 4 5

Ang --mapa-ni buko ang opsyon ay maglo-load ng balanse sa mga proseso sa mga magagamit na node,
binibilang ang bawat proseso sa round-robin na paraan.

Ang -nolocal pinipigilan ng pagpipilian ang anumang mga proseso na mai-mapa sa lokal na host (sa ito
kaso node aa). Habang mpirun karaniwang gumagamit ng kaunting mapagkukunan ng system, -nolocal ay maaaring maging
kapaki-pakinabang para sa paglulunsad ng napakalaking trabaho kung saan mpirun maaaring kailanganin talagang gumamit ng kapansin-pansin
dami ng memorya at/o oras ng pagproseso.

Tulad ng -np maaaring tukuyin ang mas kaunting mga proseso kaysa sa mga slot, maaari din itong mag-oversubscribe
ang mga puwang. Halimbawa, sa parehong hostfile:

mpirun -hostfile myhostfile -np 14 ./a.out
ay maglulunsad ng mga prosesong 0-3 sa node aa, 4-7 sa bb, at 8-11 sa cc. Pagkatapos ay idaragdag nito ang
natitirang dalawang proseso sa alinmang node na pipiliin nito.

Maaari ding tukuyin ng isa ang mga limitasyon sa sobrang pag-subscribe. Halimbawa, sa parehong hostfile:

mpirun -hostfile myhostfile -np 14 -nooversubscribe ./a.out
ay magbubunga ng isang error mula noon -nooversubscribe pinipigilan ang labis na subscription.

Ang mga limitasyon sa labis na subscription ay maaari ding tukuyin sa mismong hostfile:
% cat myhostfile
aa slots=4 max_slots=4
bb max_slots=4
mga puwang ng cc=4

Ang max_slots tinukoy ng field ang naturang limitasyon. Kapag nangyari ito, ang mga puwang default ang halaga sa
limitasyon. ngayon:

mpirun -hostfile myhostfile -np 14 ./a.out
nagiging sanhi ng paglulunsad ng unang 12 proseso tulad ng dati, ngunit ang natitirang dalawa
ang mga proseso ay pipilitin sa node cc. Ang iba pang dalawang node ay protektado ng
hostfile laban sa labis na pag-subscribe ng trabahong ito.

Paggamit ng --nooversubscribe maaaring makatulong ang opsyon dahil kasalukuyang hindi nakukuha ang Open MPI
"max_slots" na mga halaga mula sa resource manager.

Siyempre, -np maaari ding gamitin sa -H or -host opsyon. Halimbawa,

mpirun -H aa,bb -np 8 ./a.out
naglulunsad ng 8 proseso. Dahil dalawang host lang ang tinukoy, pagkatapos ng unang dalawa
Ang mga proseso ay nakamapa, isa sa aa at isa sa bb, ang natitirang mga proseso ay nag-oversubscribe
ang tinukoy na mga host.

At narito ang isang halimbawa ng MIMD:

mpirun -H aa -np 1 hostname : -H bb,cc -np 2 uptime
ay maglulunsad ng proseso 0 tumatakbo hostname sa node aa at mga proseso ng 1 at 2 bawat tumatakbo
uptime sa mga node na bb at cc, ayon sa pagkakabanggit.

Pagma-map, pagraranggo, at Nagbubuklod: Oh Aking!
Gumagamit ang Open MPI ng tatlong yugtong pamamaraan para sa pagtatalaga ng mga lokasyon ng proseso at mga ranggo:

paggawa ng mga mapa Nagtatalaga ng default na lokasyon sa bawat proseso

ranggo Nagtatalaga ng halaga ng ranggo ng MPI_COMM_WORLD sa bawat proseso

umiiral Pinipigilan ang bawat proseso na tumakbo sa mga partikular na processor

Ang paggawa ng mga mapa Ang hakbang ay ginagamit upang magtalaga ng default na lokasyon sa bawat proseso batay sa mapper
pagiging empleyado. Ang pagmamapa ayon sa slot, node, at sunud-sunod ay nagreresulta sa pagtatalaga ng
mga proseso sa antas ng node. Sa kaibahan, ang pagmamapa ayon sa bagay, ay nagbibigay-daan sa mapper na magtalaga
ang proseso sa isang aktwal na bagay sa bawat node.

tandaan: ang lokasyon na itinalaga sa proseso ay independiyente sa kung saan ito itatali - ang
Ang pagtatalaga ay ginagamit lamang bilang input sa binding algorithm.

Ang pagmamapa ng mga proseso ng proseso sa mga node ay maaaring tukuyin hindi lamang sa mga pangkalahatang patakaran
ngunit gayundin, kung kinakailangan, gamit ang mga arbitrary na pagmamapa na hindi mailalarawan ng isang simple
patakaran. Maaaring gamitin ng isa ang "sequential mapper," na nagbabasa ng hostfile na linya sa pamamagitan ng linya,
pagtatalaga ng mga proseso sa mga node sa anumang pagkakasunud-sunod na tinukoy ng hostfile. Gamitin ang -mca rmaps
seq opsyon. Halimbawa, gamit ang parehong hostfile tulad ng dati:

mpirun -hostfile myhostfile -mca rmaps seq ./a.out

ay maglulunsad ng tatlong proseso, isa sa bawat node na aa, bb, at cc, ayon sa pagkakabanggit. Ang slot
hindi mahalaga ang mga bilang; isang proseso ang inilunsad sa bawat linya sa anumang node na nakalista sa
linya.

Ang isa pang paraan upang tukuyin ang mga arbitrary na pagmamapa ay sa pamamagitan ng isang rankfile, na nagbibigay sa iyo ng detalyadong
kontrol sa proseso na nagbubuklod din. Ang mga rankfile ay tinalakay sa ibaba.

Ang ikalawang yugto ay nakatuon sa ranggo ng proseso sa loob ng MPI_COMM_WORLD ng trabaho.
Ang Open MPI ay naghihiwalay dito sa pamamaraan ng pagmamapa upang bigyang-daan ang higit na kakayahang umangkop sa
relatibong paglalagay ng mga proseso ng MPI. Ito ay pinakamahusay na inilalarawan sa pamamagitan ng pagsasaalang-alang sa mga sumusunod
dalawang kaso kung saan ginamit namin ang —map-by ppr:2:socket na opsyon:

node aa node bb

rank-by core 0 1 ! 2 3 4 5 ! 6 7

rank-by socket 0 2 ! 1 3 4 6 ! 5 7

rank-by socket:span 0 4 ! 1 5 2 6 ! 3 7

Ang pagraranggo ayon sa core at ayon sa slot ay nagbibigay ng magkatulad na resulta - isang simpleng pag-unlad ng
Ang MPI_COMM_WORLD ay nagra-rank sa bawat node. Ang pagraranggo ayon sa socket ay gumagawa ng round-robin na ranggo sa loob
bawat node hanggang sa ang lahat ng mga proseso ay maitalaga ng isang MCW rank, at pagkatapos ay umuusad sa
susunod na node. Pagdaragdag ng maikling panahon ang modifier sa direktiba sa pagraranggo ay nagiging sanhi ng algorithm ng pagraranggo
para ituring ang buong alokasyon bilang isang entity - sa gayon, ang mga ranggo ng MCW ay itinalaga
sa lahat ng socket bago umikot pabalik sa simula.

Ang umiiral Ang phase ay aktwal na nagbubuklod sa bawat proseso sa isang naibigay na hanay ng mga processor. Maaari itong
pagbutihin ang pagganap kung ang operating system ay naglalagay ng mga proseso sa suboptimally. Para sa
halimbawa, maaari itong mag-oversubscribe sa ilang multi-core processor socket, na iniiwan ang iba pang socket
walang ginagawa; maaari itong humantong sa mga proseso upang makipaglaban nang hindi kinakailangan para sa mga karaniwang mapagkukunan. O, ito
maaaring kumalat nang masyadong malawak ang mga proseso; maaari itong maging suboptimal kung ang pagganap ng application
ay sensitibo sa mga gastos sa interprocess na komunikasyon. Ang pagbubuklod ay maaari ding panatilihin ang pagpapatakbo
system mula sa labis na paglipat ng mga proseso, gaano man kahusay ang mga prosesong iyon
ay inilagay sa simula.

Ang mga processor na gagamitin para sa pagbubuklod ay maaaring matukoy sa mga tuntunin ng topological groupings
- hal, ang pagbubuklod sa isang l3cache ay magbubuklod sa bawat proseso sa lahat ng mga processor sa loob ng saklaw ng
isang L3 cache sa loob ng kanilang itinalagang lokasyon. Kaya, kung ang isang proseso ay itinalaga ng
mapper sa isang tiyak na socket, pagkatapos ay a —bind-to l3cache direktiba ay magiging sanhi ng proseso
nakatali sa mga processor na nagbabahagi ng isang L3 cache sa loob ng socket na iyon.

Upang matulungang balansehin ang pag-load, ang nagbubuklod na direktiba ay gumagamit ng isang round-robin na paraan kapag nagbubuklod sa
mga antas na mas mababa kaysa sa ginamit sa mapper. Halimbawa, isaalang-alang ang kaso kung saan ang isang trabaho ay nakamapa
sa antas ng socket, at pagkatapos ay itali sa core. Ang bawat socket ay magkakaroon ng maramihang mga core, kaya kung
maramihang mga proseso ang nakamapa sa isang ibinigay na socket, ang binding algorithm ay magtatalaga ng bawat isa
prosesong matatagpuan sa isang socket sa isang natatanging core sa isang round-robin na paraan.

Bilang kahalili, ang mga prosesong namamapa ng l2cache at pagkatapos ay i-bound sa socket ay ibibigkis lang
sa lahat ng mga processor sa socket kung saan sila matatagpuan. Sa ganitong paraan, magagawa ng mga user
magsagawa ng detalyadong kontrol sa kamag-anak na lokasyon ng ranggo ng MCW at may bisa.

Sa wakas, --ulat-bindings maaaring gamitin sa pag-uulat ng mga binding.

Bilang halimbawa, isaalang-alang ang isang node na may dalawang socket ng processor, bawat isa ay binubuo ng apat na core. Kami
tumakbo mpirun sa -np 4 --ulat-bindings at ang mga sumusunod na karagdagang opsyon:

% mpirun ... --map-by core --bind-to core
[...] ... nagbubuklod ng bata [...,0] sa cpus 0001
[...] ... nagbubuklod ng bata [...,1] sa cpus 0002
[...] ... nagbubuklod ng bata [...,2] sa cpus 0004
[...] ... nagbubuklod ng bata [...,3] sa cpus 0008

% mpirun ... --map-by socket --bind-to socket
[...] ... nagbubuklod na bata [...,0] sa socket 0 cpus 000f
[...] ... nagbubuklod na bata [...,1] sa socket 1 cpus 00f0
[...] ... nagbubuklod na bata [...,2] sa socket 0 cpus 000f
[...] ... nagbubuklod na bata [...,3] sa socket 1 cpus 00f0

% mpirun ... --map-by core:PE=2 --bind-to core
[...] ... nagbubuklod ng bata [...,0] sa cpus 0003
[...] ... nagbubuklod na bata [...,1] sa cpus 000c
[...] ... nagbubuklod ng bata [...,2] sa cpus 0030
[...] ... nagbubuklod na bata [...,3] sa cpus 00c0

% mpirun ... --bind-to none

Dito, --ulat-bindings ipinapakita ang pagbubuklod ng bawat proseso bilang isang maskara. Sa unang kaso,
ang mga proseso ay nagbubuklod sa magkakasunod na mga core gaya ng ipinahiwatig ng mga maskara 0001, 0002, 0004, at
0008. Sa pangalawang kaso, ang mga proseso ay nagbubuklod sa lahat ng mga core sa magkakasunod na mga socket gaya ng ipinahiwatig
sa pamamagitan ng mga maskara 000f at 00f0. Ang mga proseso ay umiikot sa mga socket ng processor sa isang round-
robin fashion nang maraming beses hangga't kinakailangan. Sa ikatlong kaso, ipinapakita sa amin ng mga maskara na 2
ang mga core ay nakatali sa bawat proseso. Sa ikaapat na kaso, naka-off ang pagbubuklod at hindi
iniuulat ang mga pagbubuklod.

Ang suporta ng bukas na MPI para sa pagbubuklod ng proseso ay nakasalalay sa pinagbabatayan na operating system.
Samakatuwid, maaaring hindi available sa bawat system ang ilang mga opsyon sa pagbubuklod ng proseso.

Ang proseso ng pagbubuklod ay maaari ding itakda gamit ang mga parameter ng MCA. Ang kanilang paggamit ay hindi gaanong maginhawa kaysa sa
na ng mpirun mga pagpipilian. Sa kabilang banda, ang mga parameter ng MCA ay maaaring itakda hindi lamang sa
mpirun command line, ngunit bilang kahalili sa isang system o user mca-params.conf file o bilang
mga variable ng kapaligiran, tulad ng inilarawan sa seksyon ng MCA sa ibaba. Ang ilang mga halimbawa ay kinabibilangan ng:

mpirun option MCA parameter key value

--map-by core rmaps_base_mapping_policy core
--map-by socket rmaps_base_mapping_policy socket
--rank-by core rmaps_base_ranking_policy core
--bind-to core hwloc_base_binding_policy core
--bind-to socket hwloc_base_binding_policy socket
--bind-to none hwloc_base_binding_policy wala

Rankfiles
Ang mga rankfile ay mga text file na tumutukoy sa detalyadong impormasyon tungkol sa kung paano nagpoproseso ang mga indibidwal
dapat na imapa sa mga node, at kung aling (mga) processor ang dapat itali. Ang bawat linya ng a
Tinutukoy ng rankfile ang lokasyon ng isang proseso (para sa mga trabaho sa MPI, ang "ranggo" ng proseso ay tumutukoy
sa ranggo nito sa MPI_COMM_WORLD). Ang pangkalahatang anyo ng bawat linya sa rankfile ay:

ranggo = slot=

Halimbawa:

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

Ibig sabihin

Ang ranggo 0 ay tumatakbo sa node aa, nakatali sa lohikal na socket 1, mga core 0-2.
Ang ranggo 1 ay tumatakbo sa node bb, nakatali sa logical socket 0, mga core 0 at 1.
Ang ranggo 2 ay tumatakbo sa node cc, nakatali sa mga lohikal na core 1 at 2.

Ang mga rankfile ay maaaring gamitin bilang kahalili upang tukuyin Physical mga lokasyon ng processor. Sa kasong ito,
medyo iba ang syntax. Hindi na nakikilala ang mga socket, at ang numero ng slot
ang ibinigay ay dapat ang bilang ng pisikal na PU dahil ang karamihan sa mga OS ay hindi nagtatalaga ng isang natatanging pisikal
identifier sa bawat core sa node. Kaya, ang isang wastong pisikal na rankfile ay kamukha
ang mga sumusunod:

$ cat myphysicalrankfile
ranggo 0=aa slot=1
ranggo 1=bb slot=8
ranggo 2=cc slot=6

Nangangahulugan ito na

Ang ranggo 0 ay tatakbo sa node aa, na nakatali sa core na naglalaman ng pisikal na PU 1
Ang ranggo 1 ay tatakbo sa node bb, na nakatali sa core na naglalaman ng pisikal na PU 8
Ang ranggo 2 ay tatakbo sa node cc, na nakatali sa core na naglalaman ng pisikal na PU 6

Ang mga rankfile ay itinuturing bilang lohiko bilang default, at ang parameter ng MCA
Ang rmaps_rank_file_physical ay dapat itakda sa 1 upang ipahiwatig na ang rankfile ay dapat na
itinuturing bilang Physical.

Ang mga hostname na nakalista sa itaas ay "ganap," ibig sabihin ay ang mga aktwal na malulutas na hostname ay
tinukoy. Gayunpaman, ang mga hostname ay maaari ding tukuyin bilang "kamag-anak," ibig sabihin ay sila
tinukoy na may kaugnayan sa isang panlabas na tinukoy na listahan ng mga hostname (hal, ng mpirun's
--host argument, isang hostfile, o isang job scheduler).

Ang "kamag-anak" na detalye ay nasa anyong "+n ", kung saan ang X ay isang integer na tumutukoy sa
Xth hostname sa set ng lahat ng available na hostname, na-index mula sa 0. Halimbawa:

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

Simula sa Open MPI v1.7, ang lahat ng lokasyon ng socket/core slot ay tinukoy bilang lohiko
mga index (ang Open MPI v1.6 series na ginamit Physical mga index). Maaari kang gumamit ng mga tool tulad ng
Ang "lstopo" ng HWLOC upang mahanap ang mga lohikal na index ng socket at mga core.

application Kaugnay na kahulugan or Maipapatupad Programa?
Upang makilala ang dalawang magkaibang anyo, mpirun tumitingin sa command line para sa --app pagpipilian.
Kung ito ay tinukoy, ang file na pinangalanan sa command line ay ipinapalagay na isang
konteksto ng aplikasyon. Kung hindi ito tinukoy, ang file ay ipinapalagay na isang executable
programa.

Hinahanap File
Kung walang tinukoy na kamag-anak o ganap na landas para sa isang file, hahanapin muna ng Open MPI
file sa pamamagitan ng paghahanap sa mga direktoryo na tinukoy ng --daanan opsyon. Kung wala --daanan
opsyon set o kung ang file ay hindi matatagpuan sa --daanan lokasyon, pagkatapos ay maghahanap ang Open MPI
PATH environment variable ng user gaya ng tinukoy sa source node (s).

Kung ang isang kamag-anak na direktoryo ay tinukoy, ito ay dapat na may kaugnayan sa unang gumaganang direktoryo
tinutukoy ng partikular na starter na ginamit. Halimbawa kapag gumagamit ng rsh o ssh starter,
ang unang direktoryo ay $HOME bilang default. Maaaring itakda ng ibang mga nagsisimula ang paunang direktoryo sa
ang kasalukuyang gumaganang direktoryo mula sa invocation ng mpirun.

kasalukuyan Nagtatrabaho Directory
Ang -wdir opsyon na mpirun (at ang kasingkahulugan nito, -wd) ay nagbibigay-daan sa gumagamit na magbago sa isang arbitrary
direktoryo bago i-invoke ang programa. Maaari rin itong magamit sa mga file ng konteksto ng application
upang tukuyin ang mga gumaganang direktoryo sa mga partikular na node at/o para sa mga partikular na aplikasyon.

Kung ang -wdir lilitaw ang opsyon sa isang context file at sa command line, ang context
I-override ng direktoryo ng file ang halaga ng command line.

Kung ang -wdir ang opsyon ay tinukoy, ang Open MPI ay susubukan na baguhin sa tinukoy
direktoryo sa lahat ng malalayong node. Kung ito ay mabibigo, mpirun magpapalaglag.

Kung ang -wdir Ang opsyon ay hindi tinukoy, ipapadala ng Open MPI ang pangalan ng direktoryo kung saan mpirun
ay tinawag sa bawat isa sa mga malalayong node. Susubukan ng mga malalayong node na baguhin iyon
direktoryo. Kung hindi nila magawa (hal., kung wala ang direktoryo sa node na iyon), kung gayon
Gagamitin ng Open MPI ang default na direktoryo na tinutukoy ng starter.

Ang lahat ng pagpapalit ng direktoryo ay nangyayari bago ang programa ng user ay na-invoke; hindi ito naghihintay hanggang
MPI_INIT ay tinatawag na.

pamantayan I / O
Ang Open MPI ay nagdidirekta ng karaniwang input ng UNIX sa /dev/null sa lahat ng mga proseso maliban sa
MPI_COMM_WORLD rank 0 na proseso. Ang proseso ng MPI_COMM_WORLD rank 0 ay namamana ng karaniwang input
mula mpirun. tandaan: Ang node na nag-invoke mpirun hindi kailangang kapareho ng node kung saan
nananatili ang proseso ng MPI_COMM_WORLD rank 0. Pinangangasiwaan ng Open MPI ang pag-redirect ng mpirun's
karaniwang input sa ranggo 0 na proseso.

Ang Open MPI ay nagdidirekta sa karaniwang output at error ng UNIX mula sa mga malalayong node patungo sa node na nag-invoke
mpirun at ini-print ito sa karaniwang output/error ng mpirun. Ang mga lokal na proseso ay namamana ng
karaniwang output/error ng mpirun at direktang ilipat dito.

Kaya posible na i-redirect ang karaniwang I/O para sa mga Open MPI application sa pamamagitan ng paggamit ng
karaniwang pamamaraan ng pag-redirect ng shell sa mpirun.

% mpirun -np 2 my_app < ​​my_input > my_output

Tandaan na sa halimbawang ito lamang ang MPI_COMM_WORLD rank 0 na proseso ay makakatanggap ng stream
mula my_input sa stdin. Ang stdin sa lahat ng iba pang mga node ay itatali sa /dev/null.
Gayunpaman, ang stdout mula sa lahat ng node ay kokolektahin sa my_output file.

Senyas Pagtatanim ng halaman
Kapag nakatanggap ang orterun ng SIGTERM at SIGINT, susubukan nitong patayin ang buong trabaho sa pamamagitan ng
pagpapadala ng SIGTERM sa lahat ng proseso sa trabaho, naghihintay ng kaunting bilang ng mga segundo, pagkatapos
pagpapadala ng SIGKILL sa lahat ng proseso sa trabaho.

Ang mga signal ng SIGUSR1 at SIGUSR2 na natanggap ng orterun ay pinapalaganap sa lahat ng proseso sa
trabaho.

Maaaring i-on ng isa ang pagpapasa ng SIGSTOP at SIGCONT sa programang pinaandar ng mpirun ni
ang pagtatakda ng parameter ng MCA na orte_forward_job_control sa 1. Ang signal ng SIGTSTOP sa mpirun ay
pagkatapos ay maging sanhi ng isang SIGSTOP signal na maipadala sa lahat ng mga programa na sinimulan ng mpirun at
gayundin ang isang SIGCONT signal sa mpirun ay magiging sanhi ng isang SIGCONT na ipinadala.

Ang ibang mga signal ay kasalukuyang hindi pinapalaganap ng orterun.

paraan Pagwawakas / Senyas Pag-asikaso
Sa panahon ng pagpapatakbo ng isang MPI application, kung ang anumang proseso ay namatay nang abnormal (alinman sa paglabas
bago mag-invoke MPI_FINALIZE, o namamatay bilang resulta ng isang senyales), mpirun ay magpi-print out
isang mensahe ng error at patayin ang natitirang bahagi ng MPI application.

Maaaring iwasan ng mga tagapangasiwa ng signal ng gumagamit ang pagsubok na linisin ang estado ng MPI (Ang Open MPI ay
kasalukuyang hindi async-signal-safe; tingnan mo MPI_Init_thread(3) para sa mga detalye tungkol sa
MPI_THREAD_MULTIPLE at kaligtasan ng thread). Halimbawa, kung nagkaroon ng segmentation fault sa
MPI_SEND (marahil dahil may masamang buffer na naipasa) at ang tagapangasiwa ng signal ng user ay
ini-invoke, kung ang tagapangasiwa ng user na ito ay sumusubok na mag-invoke MPI_FINALIZE, Maaaring mangyari ang masamang bagay
dahil ang Open MPI ay "nasa" na sa MPI noong nangyari ang error. Since mpirun mapapansin
na ang proseso ay namatay dahil sa isang senyales, ito ay malamang na hindi kinakailangan (at pinakaligtas) para sa
user upang linisin lamang ang hindi MPI na estado.

paraan kapaligiran
Ang mga proseso sa application ng MPI ay namamana ng kanilang kapaligiran mula sa Open RTE daemon
ang node kung saan sila tumatakbo. Ang kapaligiran ay karaniwang minana mula sa
shell ng gumagamit. Sa mga malalayong node, ang eksaktong kapaligiran ay tinutukoy ng boot MCA module
ginamit na Ang rsh ang module ng paglulunsad, halimbawa, ay gumagamit ng alinman rsh/SSH upang ilunsad ang Open RTE
daemon sa mga malalayong node, at karaniwang nagpapatupad ng isa o higit pa sa mga shell-setup na file ng user
bago ilunsad ang Open RTE daemon. Kapag nagpapatakbo ng mga dynamic na naka-link na application na
kailangan ang LD_LIBRARY_PATH variable ng kapaligiran na itatakda, kailangang mag-ingat upang matiyak
na tama itong itinakda kapag nagbo-boot ng Open MPI.

Tingnan ang seksyong "Remote Execution" para sa higit pang mga detalye.

Malayo Pagpapatupad
Ang Open MPI ay nangangailangan na ang PATH environment variable ay itakda upang mahanap ang mga executable sa remote
node (karaniwan itong kinakailangan lamang sa rsh- o SSH-based na kapaligiran --
Ang mga batch/naka-iskedyul na kapaligiran ay karaniwang kinokopya ang kasalukuyang kapaligiran sa pagpapatupad ng
malayong mga trabaho, kaya kung ang kasalukuyang kapaligiran ay may PATH at / o LD_LIBRARY_PATH itakda nang maayos,
ang mga malalayong node ay maitakda rin ito nang maayos). Kung ang Open MPI ay pinagsama-sama sa shared
suporta sa library, maaaring kailanganin ding magkaroon ng LD_LIBRARY_PATH variable ng kapaligiran
nakatakda din sa mga malalayong node (lalo na upang mahanap ang mga nakabahaging aklatan na kinakailangan upang patakbuhin ang user
mga aplikasyon ng MPI).

Gayunpaman, hindi palaging kanais-nais o posible na i-edit ang mga shell startup file upang itakda PATH
at / o LD_LIBRARY_PATH. ang --prefix ang opsyon ay ibinigay para sa ilang simpleng pagsasaayos
kung saan ito ay hindi posible.

Ang --prefix opsyon ay tumatagal ng isang argumento: ang base na direktoryo sa remote node kung saan
Naka-install ang Open MPI. Gagamitin ng Open MPI ang direktoryo na ito para itakda ang remote PATH at
LD_LIBRARY_PATH bago magsagawa ng anumang Open MPI o mga application ng user. Pinapayagan nito ang pagtakbo
Buksan ang mga trabaho sa MPI nang hindi na-pre-configure ang PATH at LD_LIBRARY_PATH sa remote
mga node.

Idinaragdag ng Open MPI ang basename ng kasalukuyang "bindir" ng node (ang direktoryo kung saan ang Open MPI's
ang mga executable ay naka-install) sa prefix at ginagamit iyon upang itakda ang PATH sa malayong node.
Katulad nito, idinaragdag ng Open MPI ang basename ng kasalukuyang "libdir" ng node (ang direktoryo kung saan
Naka-install ang mga bukas na library ng MPI) sa prefix at ginagamit iyon upang itakda ang LD_LIBRARY_PATH
sa malayong node. Halimbawa:

Lokal na bindir: /local/node/directory/bin

Lokal na libdir: /local/node/directory/lib64

Kung ang sumusunod na command line ay ginamit:

% mpirun --prefix /remote/node/directory

Ang bukas na MPI ay magdaragdag ng "/remote/node/directory/bin" sa PATH at
"/remote/node/directory/lib64" sa D_LIBRARY_PATH sa remote node bago subukan
upang maisagawa ang anumang bagay.

Ang --prefix hindi sapat ang opsyon kung ang mga path ng pag-install sa remote node ay
naiiba kaysa sa lokal na node (hal., kung "/ lib" ay ginagamit sa lokal na node, ngunit "/lib64"ay
ginamit sa malayong node), o kung ang mga path ng pag-install ay iba sa a
subdirectory sa ilalim ng isang karaniwang prefix.

Tandaan na ang pagpapatupad mpirun sa pamamagitan ng absolute pathname ay katumbas ng pagtukoy --prefix
nang walang huling subdirectory sa absolute pathname to mpirun. Halimbawa:

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

ay katumbas ng

% mpirun --prefix / usr / lokal

Na-export kapaligiran Variable
Awtomatikong ie-export ang lahat ng environment variable na pinangalanan sa form na OMPI_*
sa mga bagong proseso sa lokal at malalayong node. Ang mga parameter ng kapaligiran ay maaari ding
itinakda/ipinasa sa mga bagong proseso gamit ang parameter ng MCA mca_base_env_list. ang -x
pagpipilian sa mpirun ay hindi na ginagamit, ngunit ang syntax ng param ng MCA ay sumusunod noon
halimbawa. Habang ang syntax ng -x opsyon at MCA param ay nagbibigay-daan sa kahulugan ng bago
mga variable, tandaan na ang parser para sa mga pagpipiliang ito ay kasalukuyang hindi masyadong sopistikado -
hindi nito naiintindihan ang mga sinipi na halaga. Pinapayuhan ang mga user na magtakda ng mga variable sa
kapaligiran at gamitin ang opsyon upang i-export ang mga ito; hindi para tukuyin ang mga ito.

Pagtatakda ng MCA parameter
Ang -mca pinahihintulutan ng switch ang pagpasa ng mga parameter sa iba't ibang MCA (Modular Component
Arkitektura) mga module. Ang mga module ng MCA ay may direktang epekto sa mga programa ng MPI dahil pinapayagan nila
mahimig na mga parameter na itatakda sa oras ng pagtakbo (tulad ng kung saan ang driver ng device ng komunikasyon ng BTL
gamitin, anong mga parameter ang ipapasa sa BTL na iyon, atbp.).

Ang -mca ang switch ay tumatagal ng dalawang argumento: at . ang argumento sa pangkalahatan
tumutukoy kung aling MCA module ang makakatanggap ng halaga. Halimbawa, ang "btl" ang ginagamit
upang piliin kung aling BTL ang gagamitin para sa pagdadala ng mga mensahe ng MPI. Ang argumento ay ang
halaga na naipasa. Halimbawa:

mpirun -mca btl tcp,self -np 1 foo
Sinasabi sa Open MPI na gamitin ang "tcp" at "self" BTLs, at magpatakbo ng isang kopya ng "foo" an
inilalaan na node.

mpirun -mca btl sarili -np 1 foo
Sinasabi sa Open MPI na gamitin ang "self" BTL, at magpatakbo ng isang kopya ng "foo" na inilaan
Node.

Ang -mca switch ay maaaring gamitin ng maraming beses upang tukuyin ang iba at / o
mga argumento. Kung pareho ay tinukoy ng higit sa isang beses, ang s ay pinagsama-sama
na may kuwit (",") na naghihiwalay sa kanila.

Tandaan na ang -mca Ang switch ay isang shortcut lamang para sa pagtatakda ng mga variable ng kapaligiran. Ang
ang parehong epekto ay maaaring magawa sa pamamagitan ng pagtatakda ng kaukulang mga variable ng kapaligiran bago
tumatakbo mpirun. Ang anyo ng mga variable ng kapaligiran na itinakda ng Open MPI ay:

OMPI_MCA_ =

Kaya, ang -mca Ino-override ng switch ang anumang dating itinakda na mga variable ng kapaligiran. Ang -mca
ang mga setting ay katulad din ng override sa mga parameter ng MCA na itinakda sa $OPAL_PREFIX/etc/openmpi-mca-
params.conf o $HOME/.openmpi/mca-params.conf file.

Hindi kilala ang mga argumento ay nakatakda pa rin bilang variable ng kapaligiran -- hindi sila sinusuri (ni
mpirun) para sa kawastuhan. Ilegal o hindi tama ang mga argumento ay maaaring o hindi
iniulat -- depende ito sa partikular na module ng MCA.

Upang mahanap ang mga available na uri ng bahagi sa ilalim ng arkitektura ng MCA, o upang mahanap ang available
mga parameter para sa isang partikular na bahagi, gamitin ang ompi_info utos. Tingnan ang ompi_info(1) lalaki
pahina para sa detalyadong impormasyon sa utos.

Tumatakbo as ugat
Ang koponan ng Open MPI ay mahigpit na nagpapayo laban sa pagpapatupad mpirun bilang root user. MPI
ang mga application ay dapat na patakbuhin bilang mga regular (non-root) na gumagamit.

Sa pagsasalamin sa payong ito, tatanggi ang mpirun na tumakbo bilang root bilang default. Upang i-override ito
default, maaari mong idagdag ang --allow-run-as-root opsyon sa mpirun command line.

lumabas katayuan
Walang karaniwang kahulugan para sa kung ano mpirun dapat bumalik bilang exit status. Pagkatapos
malaking talakayan, kami ay nanirahan sa sumusunod na paraan para sa pagtatalaga ng mpirun lumabas
katayuan (tandaan: sa sumusunod na paglalarawan, ang "pangunahing" trabaho ay ang paunang aplikasyon
sinimulan ng mpirun - lahat ng mga trabahong nabuo ng trabahong iyon ay itinalagang "pangalawang"
mga trabaho):

· kung ang lahat ng mga proseso sa pangunahing trabaho ay karaniwang nagtatapos sa exit status na 0, ibabalik namin ang 0

· kung ang isa o higit pang mga proseso sa pangunahing trabaho ay karaniwang nagtatapos nang walang zero na paglabas
status, ibinabalik namin ang exit status ng proseso na may pinakamababang MPI_COMM_WORLD rank sa
magkaroon ng non-zero status

· kung ang lahat ng mga proseso sa pangunahing trabaho ay karaniwang nagtatapos sa exit status 0, at isa o
higit pang mga proseso sa isang pangalawang trabaho na karaniwang nagwawakas na may non-zero exit status, kami (a)
ibalik ang exit status ng proseso na may pinakamababang MPI_COMM_WORLD na ranggo sa pinakamababa
jobid na magkaroon ng non-zero status, at (b) maglabas ng mensahe na nagbubuod sa exit status ng
ang pangunahin at lahat ng pangalawang trabaho.

· kung ang opsyon sa linyang cmd --report-child-jobs-separately ay nakatakda, ibabalik namin -only- ang
exit status ng pangunahing trabaho. Anumang non-zero exit status sa pangalawang trabaho ay magiging
iniulat lamang sa isang summary print statement.

Bilang default, ang OMPI ay nagtatala at nagtatala na ang mga proseso ng MPI ay lumabas nang walang zero na pagwawakas
katayuan. Ito ay karaniwang hindi itinuturing na isang "abnormal na pagwawakas" - ibig sabihin, hindi gagawin ng OMPI
i-abort ang isang trabaho sa MPI kung ang isa o higit pang mga proseso ay nagbabalik ng hindi zero na katayuan. Sa halip, ang default
ang pag-uugali ay nag-uulat lamang ng bilang ng mga prosesong nagtatapos sa non-zero na status
pagkumpleto ng trabaho.

Gayunpaman, sa ilang mga kaso maaari itong maging kanais-nais na ipa-abort ang trabaho kapag may anumang proseso
nagtatapos sa hindi zero na katayuan. Halimbawa, ang isang hindi-MPI na trabaho ay maaaring makakita ng masamang resulta mula sa
isang kalkulasyon at gustong i-abort, ngunit hindi gustong bumuo ng isang pangunahing file. O isang trabaho sa MPI
maaaring magpatuloy matapos ang isang tawag sa MPI_Finalize, ngunit ipahiwatig na ang lahat ng mga proseso ay dapat i-abort
dahil sa ilang resulta ng post-MPI.

Hindi inaasahang mangyayari ang ganitong sitwasyon nang madalas. Gayunpaman, sa interes
ng paglilingkod sa mas malawak na komunidad, mayroon na ngayong paraan ang OMPI para payagan ang mga user na idirekta iyon
ang mga trabaho ay aabort sa anumang prosesong lalabas na may non-zero status. Pagtatakda ng parameter ng MCA
Ang "orte_abort_on_non_zero_status" hanggang 1 ay magiging sanhi ng OMPI na i-abort ang lahat ng mga proseso kapag mayroon
paraan
paglabas na may hindi zero na katayuan.

Ang mga pagwawakas na dulot sa ganitong paraan ay iuulat sa console bilang isang "abnormal
pagwawakas", na ang unang proseso sa paglabas ay natukoy kasama ng katayuan ng paglabas nito.

HALIMBAWA


Tiyaking tingnan din ang mga halimbawa sa buong seksyon sa itaas.

mpirun -np 4 -mca btl ib,tcp,self prog1
Magpatakbo ng 4 na kopya ng prog1 gamit ang "ib", "tcp", at "self" BTL's para sa transportasyon ng MPI
mga mensahe.

mpirun -np 4 -mca btl tcp,sm,self
--mca btl_tcp_if_include eth0 prog1
Magpatakbo ng 4 na kopya ng prog1 gamit ang "tcp", "sm" at "self" BTLs para sa transportasyon ng MPI
mga mensahe, na ang TCP ay gumagamit lamang ng eth0 na interface upang makipag-usap. Tandaan na ang iba pang mga BTL
may mga katulad na if_include na mga parameter ng MCA.

RETURN VALUE


mpirun nagbabalik ng 0 kung nagsimula ang lahat ng proseso mpirun lumabas pagkatapos tawagan ang MPI_FINALIZE. A
ibinabalik ang non-zero value kung may internal na error na naganap sa mpirun, o isa o higit pa
ang mga proseso ay lumabas bago tumawag sa MPI_FINALIZE. Kung may naganap na panloob na error sa mpirun,
ibinalik ang kaukulang error code. Kung sakaling lumabas ang isa o higit pang mga proseso
bago tawagan ang MPI_FINALIZE, ang return value ng MPI_COMM_WORLD rank ng proseso
na mpirun namatay ang mga unang abiso bago ang pagtawag sa MPI_FINALIZE ay ibabalik. Tandaan na,
sa pangkalahatan, ito ang magiging unang proseso na namatay ngunit hindi garantisadong magiging ganito.

Gumamit ng orterun online gamit ang mga serbisyo ng onworks.net


Mga Libreng Server at Workstation

Mag-download ng Windows at Linux apps

  • 1
    PostInstallerF
    PostInstallerF
    I-install ng PostInstallerF ang lahat ng
    software na Fedora Linux at iba pa
    ay hindi kasama bilang default, pagkatapos
    pagpapatakbo ng Fedora sa unang pagkakataon. Nito
    madali para sa...
    I-download ang PostInstallerF
  • 2
    bakas
    bakas
    Ang strace project ay inilipat sa
    https://strace.io. strace is a
    diagnostic, debugging at pagtuturo
    userspace tracer para sa Linux. Ito ay ginagamit
    para subaybayan ang isang...
    I-download ang strace
  • 3
    gMKVExtractGUI
    gMKVExtractGUI
    Isang GUI para sa mkvextract utility (bahagi ng
    MKVToolNix) na kinabibilangan ng karamihan (kung
    hindi lahat) pag-andar ng mkvextract at
    mkvinfo utility. Nakasulat sa C#NET 4.0,...
    I-download ang gMKVExtractGUI
  • 4
    JasperReports Library
    JasperReports Library
    Ang JasperReports Library ay ang
    pinakasikat na open source sa mundo
    katalinuhan sa negosyo at pag-uulat
    makina. Ito ay ganap na nakasulat sa Java
    at kaya nitong...
    I-download ang JasperReports Library
  • 5
    Mga Frappe Books
    Mga Frappe Books
    Ang Frappe Books ay isang libre at open source
    desktop book-keeping software na
    simple at mahusay na idinisenyo upang magamit ng
    maliliit na negosyo at mga freelancer. Ito'...
    I-download ang Frappe Books
  • 6
    Numerical Python
    Numerical Python
    BALITA: Ang NumPy 1.11.2 ang huling release
    na gagawin sa sourceforge. Mga gulong
    para sa Windows, Mac, at Linux pati na rin
    Ang mga naka-archive na pamamahagi ng pinagmulan ay maaaring maging...
    I-download ang Numerical Python
  • Marami pa »

Linux command

Ad