Amazon Best VPN GoSearch

OnWorks favicon'u

mpirun.openmpi

Mpirun.openmpi'yi Ubuntu Online, Fedora Online, Windows çevrimiçi emülatörü veya MAC OS çevrimiçi emülatörü üzerinden OnWorks ücretsiz barındırma sağlayıcısında çalıştırın

Bu, Ubuntu Online, Fedora Online, Windows çevrimiçi emülatörü veya MAC OS çevrimiçi emülatörü gibi birden fazla ücretsiz çevrimiçi iş istasyonumuzdan birini kullanarak OnWorks ücretsiz barındırma sağlayıcısında çalıştırılabilen mpirun.openmpi komutudur.

Program:

ADI


orterun, mpirun, mpiexec - Open MPI'de seri ve paralel işleri yürütün. oshrun, shmemrun
- Open SHMEM'de seri ve paralel işleri yürütün.

Not: mpirun, mpiexec, ve orterun hepsi birbirinin eş anlamlısı ve aynı zamanda oşrun,
Şmemrun Açık SHMEM kurulu olması durumunda. İsimlerden herhangi birinin kullanılması aynı sonucu verecektir.
davranışı.

SİNOPSİS


Tek İşlemli Çoklu Veri (SPMD) Modeli:

mpirun [seçenekler] [ ]

Çoklu Komut Çoklu Veri (MIMD) Modeli:

mpirun [ global_seçenekler ]
[ yerel_seçenekler1 ] [ ] :
[ yerel_seçenekler2 ] [ ] :
...:
[ yerel_seçeneklerN ] [ ]

Her iki modelde de çağrıldığını unutmayın. mpirun mutlak bir yol adı ile eşdeğerdir
belirten --önek seçeneği ile bir bulunduğu dizine eşdeğer değer mpirun
bulunur, eksi son alt dizini. Örneğin:

% /usr/yerel/bin/mpirun ...

eşdeğerdir

% mpirun --ön ek / Yerel / usr

HIZLI ÖZET


Bir MPI uygulamasını nasıl çalıştıracağınızı arıyorsanız, muhtemelen bir
aşağıdaki formun komut satırı:

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

Bu, X kopyalarını çalıştıracak mevcut çalışma zamanı ortamınızda (eğer altında çalışıyorsa)
desteklenen bir kaynak yöneticisi, Açık MPI'ler mpirun genellikle otomatik olarak kullanır
karşılık gelen kaynak yöneticisi süreç başlatıcısı, örneğin, or ssh,
bir ana bilgisayar dosyasının kullanılmasını gerektiren veya varsayılan olarak tüm X kopyalarını
localhost), zamanlama (varsayılan olarak) CPU yuvasına göre sıralı olarak. geri kalanına bakın
daha fazla ayrıntı için bu sayfa.

Lütfen mpirun'un v1.8 serisinin başlangıcından itibaren süreçleri otomatik olarak bağladığını unutmayın.
Başka direktiflerin yokluğunda iki bağlama modeli kullanılır:

bağlamak için çekirdek: işlem sayısı <= 2 olduğunda

bağlamak için priz: işlem sayısı > 2 olduğunda

Uygulamanız iş parçacığı kullanıyorsa, muhtemelen öyle olmadığından emin olmak istersiniz.
hiç bağlı ( --bind-to none belirterek) veya bir kullanarak birden çok çekirdeğe bağlı
uygulama başına uygun bağlama düzeyi veya belirli sayıda işleme öğesi
proses.

SEÇENEKLER


mpirun yerel düğümde çağrıldığı dizinin adını her birine gönderir
uzak düğümlerin ve bu dizine geçmeyi deneyin. Bkz. "Mevcut Çalışma
Daha fazla ayrıntı için aşağıdaki Dizin" bölümüne bakın.

Program yürütülebilir. Bu, tanınmayan ilk argüman olarak tanımlanır
mpirun'a.

Bu çalışma zamanı bağımsız değişkenlerini her yeni işleme iletin. Bunlar her zaman olmalı
son argümanlar mpirun. Bir uygulama bağlam dosyası kullanılıyorsa, olacak
görmezden geldi.

-h, --yardım et
Bu komut için yardımı görüntüle

-q, --sessizlik
Uygulamanın yürütülmesi sırasında orterun'dan gelen bilgilendirici mesajları engelleyin.

-v, --ayrıntılı
ayrıntılı ol

-V, --versiyon
Sürüm numarasını yazdırın. Başka argüman verilmezse, bu da neden olur
çıkmak için orterun.

-göster-harita, --görüntüleme-harita
Başlatmadan önce her işlemin eşlenmiş konumunu gösteren bir tablo görüntüleyin.

-görüntüleme-geliştirme-haritası, --görüntüleme-geliştirme-haritası
Daha önce her işlemin haritalanmış konumunu gösteren daha ayrıntılı bir tablo görüntüleyin
başlatmak (genellikle geliştiricilerin ilgisini çeker).

-görüntüleme-tahsisi, --görüntüleme-tahsisi
Algılanan kaynak tahsisini görüntüleyin.

Kümenin hangi ana bilgisayarlarının (düğümlerinin) çalıştırılacağını belirtmek için aşağıdaki seçeneklerden birini kullanın.
v1.8 sürümünün başlangıcından itibaren, mpirun'un her ana bilgisayara bir arka plan programı başlatacağını unutmayın.
en başında tahsiste (aşağıdaki seçeneklerle değiştirildiği gibi)
uygulama süreçlerinin sonunda eşlenip eşlenmeyeceğinden bağımsız olarak yürütme
orada yürütün. Bu, donanım topolojisi bilgilerinin bilgisayardan toplanmasına izin vermek için yapılır.
uzak düğümler, böylece süreçleri bilinen topolojiye göre eşlememize izin verir. Ancak, bir
Daemon'ların yalnızca eşlemeden sonra başlatıldığı önceki sürümlerdeki davranıştan değişiklik
tamamlanmıştı ve bu nedenle yalnızca uygulama işlemlerinin fiilen gerçekleşeceği düğümlerde gerçekleşti.
yürütüyor olmak.

-H, -ev sahibi, --ev sahibi
İşlemlerin çağrılacağı ana bilgisayarların listesi.

-ana bilgisayar dosyası, --ana bilgisayar dosyası
Kullanılacak bir ana bilgisayar dosyası sağlayın.

-makine dosyası, --makine dosyası
eşanlamlısı -ana bilgisayar dosyası.

-cpu seti, --cpu seti
Başlatılan işlemleri her düğümde belirtilen mantıksal işlemci ile sınırlayın. Bunu not et
ciltleme seçenekleri belirtilen zarf içinde geçerli olmaya devam eder - ör.
her işlemi belirtilen işlemci seti içinde yalnızca bir işlemciye bağlamayı seçin.

Aşağıdaki seçenekler, başlatılacak işlem sayısını belirtir. Hiçbirinin
seçenekler, belirli bir bağlama politikası anlamına gelir - örneğin, her soket için N işlemi talep etmek
işlemlerin sokete bağlanacağı anlamına gelmez.

-c, -n, -N, -Örneğin <#>
Programın bu kadar çok kopyasını verilen düğümlerde çalıştırın. Bu seçenek şunu gösterir:
belirtilen dosya, bir uygulama bağlamı değil, yürütülebilir bir programdır. Eğer hayırsa
yürütülecek kopya sayısı için bir değer sağlanır (yani, ne "-np" ne de
eşanlamlıları komut satırında sağlanır), Open MPI otomatik olarak yürütülür
her işlem yuvasındaki programın bir kopyası ("işlem" açıklaması için aşağıya bakın
yuvası"). Ancak bu özellik yalnızca SPMD modelinde kullanılabilir ve geri dönecektir.
aksi takdirde bir hata (uygulamanın yürütülmesine başlamadan).

-harita kişi:N:
Her düğümde belirtilen türdeki nesne sayısının N katı kadar başlatın.

-nsocket, --npersonel <#personel>
Her düğümde, işlemci soketlerinin sayısının bu kadar çok işlemini başlatın.
düğüm. NS -nsocket seçeneği de açılır -sokete bağlama seçeneği.
(--map-by ppr:n:socket lehine kullanımdan kaldırıldı)

-npernode, --npernode <#pernode>
Her düğümde, bu kadar çok işlemi başlatın. ( --map-by lehine kullanımdan kaldırıldı
ppr:n:düğüm)

-pernode, --pernode
Her düğümde, bir işlem başlatın -- şuna eşdeğer: -npernode 1. (kullanımdan kaldırıldı
--map-by ppr:1:node)

İşlemleri haritalamak için:

--harita-by
Belirtilen nesneye eşle, varsayılan olarak soket. Desteklenen seçenekler arasında yuva,
hwthread, çekirdek, L1cache, L2cache, L3cache, soket, numa, tahta, düğüm, sıralı,
mesafe ve ppr. Herhangi bir nesne, bir : ve herhangi birini ekleyerek değiştiriciler içerebilir.
PE=n (her işleme n işleme elemanını bağla), SPAN (yük dengesi) kombinasyonu
tahsisattaki süreçler), AŞIRI ABONELİK (bir düğümde daha fazla işleme izin verir)
işleme öğelerinden daha fazla) ve KESİNLİKLE ABONE OLMAYIN. Bu, PPR'yi içerir, burada
desen, onu değiştiricilerden ayırmak için başka bir iki nokta üst üste ile sonlandırılır.

-bycore, --bycore
İşlemleri çekirdeğe göre eşleyin (--map-by core lehine kullanımdan kaldırıldı)

-bysoket, --bysocket
İşlemleri sokete göre eşleyin (--map-by soket lehine kullanımdan kaldırıldı)

-yerel olmayan, --nolokal
Başlatılan uygulamanın hiçbir kopyasını orterun ile aynı düğümde çalıştırmayın.
koşma. Bu seçenek, localhost ile listelemeyi geçersiz kılar --ev sahibi veya herhangi bir başkası
ana bilgisayar belirleme mekanizması.

-nooverabone, --nooverabone ol
Herhangi bir düğüme fazla abone olmayın; hatası (herhangi bir işlem başlatmadan)
istenen sayıda işlem fazla aboneliğe neden olur. Bu seçenek dolaylı olarak
"max_slots"u, her düğüm için "slots" değerine eşit olarak ayarlar.

-bynode, --bynode
Başlatma işlemleri, her düğüm için bir kez, döngüsel olarak döngüsel olarak döngüye alınır. Bu
süreçleri düğümler arasında eşit olarak yayar ve bir turda MPI_COMM_WORLD sıraları atar.
robin, "düğüme göre" şekilde.

MPI_COMM_WORLD'de süreçlerin sıralarını sıralamak için:

--sıralama bazında
Belirtilen nesneye göre sıralı olarak sıralayın, varsayılan olarak yarık.
Desteklenen seçenekler arasında slot, hwthread, core, L1cache, L2cache, L3cache, socket,
numa, tahta ve düğüm.

İşlem bağlama için:

--bağlanan
İşlemleri belirtilen nesneye bağla, varsayılan olarak çekirdek. Desteklenen seçenekler şunları içerir:
slot, hwthread, core, l1cache, l2cache, l3cache, socket, numa, board ve hiçbiri.

-proc başına işlemci, --proc başına cpus <#perproc>
Her işlemi belirtilen sayıda cpus'a bağlayın. ( --map- lehine kullanımdan kaldırıldı
tarafından :PE=n)

-rank başına işlemci, --cpus-sıralama başına <#perrank>
için takma ad -proc başına işlemci. ( --map-by lehine kullanımdan kaldırıldı :PE=n)

-çekirdeğe bağlanma, --çekirdeğe bağla
İşlemleri çekirdeklere bağlama (--bind-to core lehine kullanımdan kaldırıldı)

-sokete bağlama, --sokete bağla
İşlemleri işlemci soketlerine bağlama (--bind-to soket lehine kullanımdan kaldırıldı)

-hiçbirine bağlanma, --hiçbirine bağlama
İşlemleri bağlama (--bind-to none lehine kullanımdan kaldırıldı)

-rapor-bağlamalar, --rapor-bağlamalar
Başlatılan işlemler için tüm bağlamaları bildirin.

-slot listesi, --slot-listesi
MPI işlemlerini bağlamak için kullanılacak işlemci kimliklerinin listesi. Belirtilen bağlamalar
tüm MPI süreçlerine uygulanacaktır. Sözdizimi için aşağıdaki açıklamaya bakın.

Sıra dosyaları için:

-R F, --rank dosyası
Bir rankfile dosyası sağlayın.

Standart G/Ç'yi yönetmek için:

-çıktı-dosya adı, --çıktı-dosya adı
Tüm süreçlerin stdout, stderr ve stddiag'ini benzersiz bir sürece yönlendirin
belirtilen dosya adının sürümü. Dosya adındaki herhangi bir dizin
otomatik olarak oluşturulur. Her çıktı dosyası filename.id'den oluşacaktır, burada
id, MPI_COMM_WORLD'deki süreçlerin sıralaması olacak, için sıfırlarla sola dolu
listelerde doğru sıralama.

-stdin, --stdin
Stdin'i alacak işlemin MPI_COMM_WORLD sıralaması. Varsayılan
stdin'i MPI_COMM_WORLD sıra 0'a ilet, ancak bu seçenek iletmek için kullanılabilir
herhangi bir işleme stdin. belirtmek de kabul edilebilir. Yokolmadığını belirten
işlemler stdin almak içindir.

-etiket-çıktı, --etiket-çıktı
Her çıktı satırını stdout, stderr ve stddiag olarak etiketleyin [iş kimliği,
MCW_rank] süreç iş kimliğini ve MPI_COMM_WORLD derecesini gösteren
çıktıyı oluşturan süreç ve onu oluşturan kanal.

-zaman damgası-çıktı, --zaman damgası-çıktı
Her çıktı satırını stdout, stderr ve stddiag'a zaman damgası olarak ekleyin.

-xml, --xml
Tüm çıktıları stdout, stderr ve stddiag'a xml formatında sağlayın.

-xterm, --xterm
MPI_COMM_WORLD sıraları tarafından tanımlanan süreçlerin çıktısını şurada görüntüleyin:
ayrı xterm pencereleri. Sıralar, virgülle ayrılmış bir liste olarak belirtilir.
-1 ile tümünü gösterir. Her biri için ayrı bir pencere oluşturulacaktır.
belirtilen süreç. Not: xterm normalde sonlandırma üzerine pencereyi sonlandıracaktır
içinde çalışan sürecin. Ancak, bir "!" ekleyerek listenin sonuna
belirtilen sıralarda, xterm'in korunmasını sağlamak için uygun seçenekler sağlanacaktır.
pencere açık sonra süreç sona erer, böylece süreci görmenizi sağlar'
çıktı. Her xterm penceresinin daha sonra manuel olarak kapatılması gerekecektir. Not: In
bazı ortamlarda, xterm yürütülebilir dosyanın kullanıcının yolunda olmasını gerektirebilir veya
mutlak veya göreli terimlerle belirtilmelidir. Bu nedenle, bir belirtmek gerekebilir
yerel yürütülebilir dosya yalnızca "foo" yerine "./foo" olarak. xterm öğesini bulamazsa
yürütülebilir, mpirun askıda kalır, ancak yine de bir ctrl-c'ye doğru yanıt verir. Eğer bu
olursa, lütfen yürütülebilir dosyanın doğru şekilde belirtildiğini kontrol edin ve deneyin.
tekrar.

Dosyaları ve çalışma zamanı ortamını yönetmek için:

-Path, --yol
istenen yürütülebilir dosyaları bulmaya çalışırken kullanılacaktır. Bu
yerel PATH ayarını kullanmadan önce kullanılır.

--önek
ayarlamak için kullanılacak önek dizini PATH ve LD_LIBRARY_PATH üzerinde
Open MPI'yi veya hedef süreci çağırmadan önce uzak düğüm. Bkz. "Uzaktan
Yürütme" bölümü, aşağıda.

--önyükleme-ikili
Uzaktan kumandayı başlatmadan önce belirtilen yürütülebilir dosyaları uzak makinelere kopyalayın
süreçler. Yürütülebilir dosyalar Open MPI oturum dizinine kopyalanacak ve
iş bitince silinecektir.

--önyükleme dosyaları
Dosyaların virgülle ayrılmış listesini mevcut çalışma dizinine önceden yükleyin.
Bu işlemlere başlamadan önce işlemlerin başlatılacağı uzak makineler.

--preload-files-hedef-dir
Geçerli dizin dışındaysa, ön yükleme dosyaları için kullanılacak hedef dizin
çalışma dizini. Varsayılan olarak, tarafından sağlanan mutlak ve göreli yollar
--preload-files kullanılır.

--tmpdir
Yalnızca mpirun için oturum dizini ağacının kökünü ayarlayın.

-wd
eşanlamlısı -wdir.

-wdir
Dizine değiştir kullanıcının programı yürütülmeden önce. Bkz. "Mevcut
Göreli yollarla ilgili notlar için Çalışma Dizini" bölümü. Not: Eğer -wdir seçenek
hem komut satırında hem de uygulama bağlamında görünürse, bağlam
komut satırına göre önceliklidir. Böylece, istenen wdir'ye giden yol
arka uç düğümlerinde farklıysa, mutlak bir yol olarak belirtilmelidir.
arka uç düğümü için doğrudur.

-x
Çalıştırmadan önce belirtilen ortam değişkenlerini uzak düğümlere aktarın.
programı. başına yalnızca bir ortam değişkeni belirtilebilir. -x seçenek. Var olan
ortam değişkenleri belirtilebilir veya yeni değişken adları ile belirtilebilir
karşılık gelen değerler. Örneğin:
% mpirun -x EKRAN -x OFILE=/tmp/out ...

için ayrıştırıcı -x seçenek çok karmaşık değil; anlamıyor bile
alıntı değerler. Kullanıcılara ortamdaki değişkenleri ayarlamaları ve ardından
-x onları dışa aktarmak (tanımlamak değil).

MCA parametrelerinin ayarlanması:

-gmca, --gmca
Tüm bağlamlar için geçerli olan global MCA parametrelerini iletin. olduğunu
Parametre adı; parametre değeridir.

-mca, --mca
Çeşitli MCA modüllerine argümanlar gönderin. Aşağıdaki "MCA" bölümüne bakın.

Hata ayıklama için:

-hata ayıklama, - hata ayıklama
tarafından belirtilen kullanıcı düzeyi hata ayıklayıcısını çağırın. orte_base_user_debugger MCA
parametre.

-hata ayıklayıcı, --hata ayıklayıcı
Ne zaman aranacak hata ayıklayıcı dizisi - hata ayıklama kullanılır (yani
orte_base_user_debugger MCA parametresi).

-televizyon, --televizyon
İşlemleri TotalView hata ayıklayıcısı altında başlatın. Kullanımdan kaldırılmış geriye dönük uyumluluk
bayrak. eşanlamlısı - hata ayıklama.

Başka seçenekler de var:

--root olarak çalıştırılmasına izin ver
izin vermek mpirun kök kullanıcı tarafından yürütüldüğünde çalıştırmak için (mpirun iptal etme varsayılanları
kök kullanıcı olarak başlatıldığında).

- iptal edildi, -- iptal edildi <#>
Görüntülenecek maksimum iptal edilen işlem sayısını ayarlayın.

--uygulama
Diğer tüm komut satırı seçeneklerini göz ardı ederek bir uygulama dosyası sağlayın.

-cf, --kart dosyası
Bir haritacılık dosyası sağlayın.

--hetero
32/64-bit karışımı olan birden çok app_context'in sağlandığını gösterir
ikili dosyalar.

-oturumdan ayrıl-bağlı, --oturuma bağlı
Bu uygulama tarafından kullanılan OmpiRTE arka plan programlarını ayırmayın. Bu, hata mesajlarına izin verir
altta yatan ortamın yanı sıra arka plan programlarından (örneğin, başarısız olduğunda)
çıktı almak için bir arka plan programı başlatın.

-ompi-sunucusu, --ompi-sunucusu <uri or dosya>
Open MPI sunucusunun (veya sunucu olarak kullanılacak mpirun'un) URI'sini belirtin,
bu bilgiyi içeren dosyanın adı (dosya:dosyaadı olarak belirtilir) veya
olarak kullanılacak mpirun'un PID'si (pid:# olarak belirtilir)
sunucu. Open MPI sunucusu, çoklu uygulama verilerini desteklemek için kullanılır
MPI-2 MPI_Publish_name ve MPI_Lookup_name işlevleri aracılığıyla değiş tokuş yapın.

-rapor-pid, --rapor-pid
Başlatma sırasında mpirun'un PID'sini yazdırın. Kanal, indi için bir '-' olmalıdır
pid'in stdout'a çıkarılacağını, pid'in çıkarılacağını belirtmek için bir '+'
stderr'e veya pid'in yazılacağı bir dosya adına çıkılmalıdır.

-rapor-uri, --rapor-uri
Başlatma sırasında mpirun'un URI'sini yazdırın. Kanal, indi için bir '-' olmalıdır
URI'nin stdout'a çıkarılacağını, URI'nin çıkarılacağını belirtmek için bir '+'
stderr'e veya URI'nin yazılacağı bir dosya adına çıkılmalıdır.

-sunucu için bekle, --sunucu için bekle
Ompi-sunucusu algılanana kadar işi başlatmadan önce mpirun'u duraklatın. Bu kullanışlı
ompi-server'ın arka planda başlatılabileceği komut dosyalarında, hemen ardından
tarafından mpirun ona bağlanmak isteyen komut. Mpirun ya kadar duraklayacak
belirtilen ompi-sunucu ile bağlantı kuruldu veya sunucu-bekleme süresi aşıldı.

-sunucu-bekleme süresi, --sunucu-bekleme zamanı
Maksimum süre (saniye cinsinden) mpirun, ompi sunucusunun
Başlat. Varsayılan 10 saniyedir.

Aşağıdaki seçenekler geliştiriciler için yararlıdır; çoğu için genellikle yararlı değildirler
ORTE ve/veya MPI kullanıcıları:

-d, --debug-devel
OmpiRTE'nin (Open MPI'deki çalışma zamanı katmanı) hata ayıklamasını etkinleştirin. Bu değil
genellikle çoğu kullanıcı için yararlıdır.

--debug-cinleri
Bu uygulama tarafından kullanılan tüm OmpiRTE arka plan programlarında hata ayıklamayı etkinleştirin.

--debug-daemons-dosyası
Bu uygulama tarafından kullanılan herhangi bir OmpiRTE arka plan programının hata ayıklamasını etkinleştirin, çıktıyı
dosyaları.

-lansman aracısı, --lansman aracısı
Uzak düğümlerde işlemleri başlatmak için kullanılacak yürütülebilir dosyanın adı.
Varsayılan "orted" dir. Bu seçenek, yeni arka plan programı kavramlarını test etmek veya
seçenekleri, mpirun'un kendisini görmeden cinlere geri iletin. İçin
örneğin, orted -mca odls_base_verbose 5 başlatma aracısının belirtilmesi,
geliştiricinin, mpirun'un kendisinden karışıklık olmadan çıktı hata ayıklamasını istemesi.

--noprefix
Otomatik --prefix davranışını devre dışı bırakın

Listelenen başka seçenekler olabilir mpirun --yardım et.

çevre Değişkenler
MPIEXEC_TIMEOUT
Maksimum saniye sayısı mpirun (mpiexec) koşacak. bunca şeyden sonra
saniye mpirun başlatılan işi iptal eder ve çıkar.

AÇIKLAMA


bir çağrı mpirun Open MPI altında çalışan bir MPI uygulamasını başlatır. Eğer
uygulama tek işlemli çoklu veridir (SPMD), uygulama üzerinde belirtilebilir
the mpirun Komut satırı.

Uygulama, birden çok komuttan oluşan çoklu veri (MIMD) ise
programlar, program kümesi ve argüman iki yoldan biriyle belirtilebilir: Genişletilmiş
Komut Satırı Bağımsız Değişkenleri ve Uygulama Bağlamı.

Bir uygulama bağlamı, bir dizindeki tüm argümanları içeren MIMD program setini tanımlar.
ayrı dosya Bu dosya esasen birden çok mpirun komut satırları, daha az
komut adının kendisi. Farklı seçenekler için farklı seçenekler belirleme yeteneği
bir programın örneklenmesi, bir uygulama bağlamı kullanmanın başka bir nedenidir.

Genişletilmiş komut satırı argümanları, uygulama düzeninin açıklamasına izin verir.
iki nokta üst üste kullanarak komut satırı (:) programların ve argümanların özelliklerini ayırmak için.
Bazı seçenekler, belirtilen tüm programlarda genel olarak ayarlanır (örneğin --hostfile), oysa
diğerleri tek bir programa özgüdür (örneğin -np).

Belirtme Ev Sahibi Nodes
Ana bilgisayar düğümleri üzerinde tanımlanabilir mpirun ile komut satırı -ev sahibi seçenek veya bir
ana bilgisayar dosyası.

Örneğin,

mpirun -H aa,aa,bb ./a.out
aa düğümünde ve bir bb düğümünde iki işlem başlatır.

Veya ana bilgisayar dosyasını düşünün

% kedi myhostfile
aa yuvaları=2
bb yuvaları=2
cc yuvaları=2

Burada hem ana bilgisayar adlarını (aa, bb ve cc) hem de bunun için kaç tane "yuva" olduğunu listeliyoruz.
her biri. Yuvalar, bir düğümde potansiyel olarak kaç işlemin yürütülebileceğini gösterir. En iyisi için
performans, yuva sayısı, düğümdeki çekirdek sayısı olarak seçilebilir veya
işlemci soketlerinin sayısı. Ana bilgisayar dosyası yuva bilgisi sağlamıyorsa, bir
1 varsayılan kabul edilir. Kaynak yöneticileri altında çalışırken (örn. SLURM, Tork,
vb.), Open MPI, hem ana bilgisayar adlarını hem de yuva sayısını doğrudan
kaynak yöneticisi.

mpirun -hostfile myhostfile ./a.out
üç düğümün her birinde iki işlem başlatacak.

mpirun -hostfile myhostfile -host aa ./a.out
her ikisi de aa düğümünde olmak üzere iki işlem başlatacak.

mpirun -hostfile myhostfile -host dd ./a.out
çalıştırılacak ve bir hatayla iptal edilecek hiçbir ana bilgisayar bulamaz. Yani, belirtilen ana bilgisayar dd
belirtilen ana bilgisayar dosyasında değil.

Belirtme Numara of süreçler
Az önce gördüğümüz gibi, çalıştırılacak işlemlerin sayısı hostfile kullanılarak ayarlanabilir. Başka
mekanizmalar mevcuttur.

Başlatılan işlemlerin sayısı, düğüm sayısının katları olarak belirtilebilir veya
işlemci soketleri mevcuttur. Örneğin,

mpirun -H aa,bb -npersocket 2 ./a.out
aa düğümünde 0-3 işlemlerini ve bb düğümünde 4-7 işlemlerini başlatır, burada aa ve bb'nin her ikisi de
çift ​​yuvalı düğümler. NS -nsocket seçeneği de açılır -sokete bağlama seçeneği
ki bu daha sonraki bir bölümde tartışılacaktır.

mpirun -H aa,bb -npernode 2 ./a.out
aa düğümünde 0-1 işlemlerini ve bb düğümünde 2-3 işlemlerini başlatır.

mpirun -H aa,bb -npernode 1 ./a.out
ana bilgisayar düğümü başına bir işlem başlatır.

mpirun -H aa,bb -pernode ./a.out
aynıdır -npernode 1.

Diğer bir alternatif ise süreç sayısını belirtmektir. -Örneğin seçenek. Düşünmek
şimdi ana bilgisayar dosyası

% kedi myhostfile
aa yuvaları=4
bb yuvaları=4
cc yuvaları=4

Şimdi,

mpirun -hostfile myhostfile -np 6 ./a.out
aa düğümünde 0-3 arasındaki işlemleri ve bb düğümünde 4-5 arasındaki işlemleri başlatır. Kalan
ana bilgisayar dosyasındaki yuvalar kullanılmayacaktır. -Örneğin seçenek sadece 6 olduğunu belirtti
süreçler başlatılmalıdır.

Haritalama süreçler için düğümler: kullanma Politikaları
Yukarıdaki örnekler, süreç süreçlerinin düğümlere varsayılan eşlenmesini göstermektedir. Bu
haritalama da çeşitli ile kontrol edilebilir mpirun eşleme ilkelerini açıklayan seçenekler.

Yine yukarıdakiyle aynı ana bilgisayar dosyasını düşünün -Örneğin 6:

düğüm aa düğümü bb düğümü cc

0 1 2 3 4 5

mpirun --map-node tarafından 0 3 1 4 2 5

mpirun - yerel değil 0 1 2 3 4 5

The --harita-by düğüm seçenek, mevcut düğümler arasındaki süreçleri dengeleyecek,
her işlemi sıralı bir şekilde numaralandırma.

The -yerel olmayan seçeneği, herhangi bir işlemin yerel ana bilgisayara eşlenmesini engeller (bunda
durum düğümü aa). Süre mpirun genellikle birkaç sistem kaynağı tüketir, -yerel olmayan olabilir
çok büyük işleri başlatmak için yararlı mpirun aslında fark edilebilir kullanmanız gerekebilir
bellek miktarı ve/veya işlem süresi.

Tıpkı -Örneğin Slot sayısından daha az işlem belirtebilir, ayrıca aşırı abone olabilir
yuvalar. Örneğin, aynı ana bilgisayar dosyasıyla:

mpirun -hostfile myhostfile -np 14 ./a.out
aa düğümünde 0-3, bb'de 4-7 ve cc'de 8-11 süreçlerini başlatacak. Daha sonra ekleyecektir
kalan iki işlemi hangi düğüme seçerse seçsin.

Ayrıca, fazla aboneliğin sınırları da belirlenebilir. Örneğin, aynı ana bilgisayar dosyasıyla:

mpirun -hostfile myhostfile -np 14 -nooversubscribe ./a.out
beri bir hata üretecek -nooverabone fazla aboneliği önler.

Aşırı aboneliğin sınırları, ana bilgisayar dosyasının kendisinde de belirtilebilir:
% kedi myhostfile
aa yuvaları=4 max_slots=4
bb max_slots=4
cc yuvaları=4

The max_slots alan böyle bir limit belirtir. Bunu yaptığında, yuvaları değer varsayılan olarak
sınır. Şimdi:

mpirun -hostfile myhostfile -np 14 ./a.out
ilk 12 işlemin daha önce olduğu gibi başlatılmasına neden olur, ancak geri kalan ikisi
işlemler düğüm cc'ye zorlanacak. Diğer iki düğüm tarafından korunmaktadır.
hostfile bu iş tarafından aşırı aboneliğe karşı.

Kullanma --nooverabone ol Seçenek, Open MPI şu anda almadığından yardımcı olabilir
Kaynak yöneticisinden "max_slots" değerleri.

Tabii ki, -Örneğin ile de kullanılabilir -H or -ev sahibi seçenek. Örneğin,

mpirun -H aa,bb -np 8 ./a.out
8 süreç başlatır. Yalnızca iki ana bilgisayar belirtildiğinden, ilk ikisinden sonra
süreçler, biri aa'ya ve diğeri bb'ye eşlenir, kalan süreçler fazla abone olur
belirtilen ana bilgisayarlar.

Ve işte bir MIMD örneği:

mpirun -H aa -np 1 ana bilgisayar adı: -H bb,cc -np 2 çalışma süresi
0 çalışan işlemi başlatacak hostname aa düğümünde ve her biri çalışan 1 ve 2'yi işler
uptime sırasıyla bb ve cc düğümlerinde.

haritalama, Sıralama, ve bağlama: Oh Benim!
Open MPI, süreç konumlarını ve sıralarını atamak için üç aşamalı bir prosedür kullanır:

haritalama Her işleme varsayılan bir konum atar

sıralama Her işleme bir MPI_COMM_WORLD sıra değeri atar

bağlayıcı Her işlemi belirli işlemcilerde çalışacak şekilde kısıtlar

The haritalama adım, eşleştiriciye dayalı olarak her işleme varsayılan bir konum atamak için kullanılır
Istihdam edilmektedir. Yuvaya, düğüme ve sıralı olarak eşleme,
düğüm düzeyindeki işlemler. Buna karşılık, nesneye göre eşleme, eşleyicinin
işlemi her düğümdeki gerçek bir nesneye.

Not: sürece atanan konum, nereye bağlanacağından bağımsızdır -
atama yalnızca bağlama algoritmasına girdi olarak kullanılır.

Süreç süreçlerinin düğümlere eşlenmesi sadece genel politikalarla tanımlanamaz.
aynı zamanda, gerekirse, basit bir tanımla tanımlanamayan keyfi eşlemeler kullanmak.
politika. Ana bilgisayar dosyasını satır satır okuyan "sıralı eşleyici" kullanılabilir.
ana bilgisayar dosyasının belirttiği sırayla düğümlere işlemler atama. Kullan -mca haritalar
seq seçenek. Örneğin, öncekiyle aynı ana bilgisayar dosyasını kullanarak:

mpirun -hostfile myhostfile -mca rmaps sıra ./a.out

sırasıyla aa, bb ve cc düğümlerinin her birinde bir tane olmak üzere üç işlem başlatacaktır. Yuva
sayıların önemi yok; üzerinde listelenen herhangi bir düğümde satır başına bir işlem başlatılır.
hattı.

Rastgele eşlemeleri belirlemenin başka bir yolu, size ayrıntılı bilgi veren bir sıralama dosyasıdır.
süreç bağlama üzerinde de kontrol. Rankfiles aşağıda tartışılmaktadır.

İkinci aşama, şunlara odaklanır: sıralama işin MPI_COMM_WORLD içindeki sürecin.
Açık MPI, daha fazla esneklik sağlamak için bunu haritalama prosedüründen ayırır.
MPI süreçlerinin göreceli yerleşimi. Bu en iyi aşağıdakiler dikkate alınarak gösterilmektedir.
—map-by ppr:2:socket seçeneğini kullandığımız iki durum:

düğüm aa düğüm bb

çekirdek sıralama 0 1 ! 2 3 4 5 ! 6 7

sıralı soket 0 2 ! 1 3 4 6 ! 5 7

sıralı soket:span 0 4 ! 1 5 2 6 ! 3 7

Çekirdeğe ve yuvaya göre sıralama aynı sonucu sağlar - basit bir ilerleme
MPI_COMM_WORLD, her düğümde sıralanır. Sokete göre sıralama, içinde sıralı bir sıralama yapar
tüm işlemlere bir MCW sıralaması atanana kadar her düğüm ve ardından
sonraki düğüm. ekleme karış sıralama yönergesine değiştirici, sıralama algoritmasına neden olur
tüm tahsisi tek bir varlık olarak ele almak için - bu nedenle, MCW sıraları atanır
Başa dönmeden önce tüm soketler boyunca.

The bağlayıcı aşama aslında her işlemi belirli bir işlemci grubuna bağlar. Bu
işletim sistemi süreçleri yetersiz yerleştiriyorsa performansı iyileştirin. İçin
örneğin, bazı çok çekirdekli işlemci soketlerine fazla abone olabilir ve diğer soketleri terk edebilir.
Boşta; bu, süreçlerin ortak kaynaklar için gereksiz yere rekabet etmesine yol açabilir. veya, o
süreçleri çok geniş bir alana yayabilir; bu, uygulama performansında yetersiz olabilir
süreçler arası iletişim maliyetlerine duyarlıdır. Bağlama ayrıca çalışmayı sürdürebilir
Bu süreçlerin ne kadar optimal olduğuna bakılmaksızın, sistem süreçlerinden aşırı derecede geçişten
başlamak üzere yerleştirildi.

Bağlama için kullanılacak işlemciler topolojik gruplamalar açısından tanımlanabilir.
- örneğin, bir l3cache'ye bağlanmak, her bir işlemi aşağıdaki kapsamdaki tüm işlemcilere bağlayacaktır.
kendilerine atanan konum içinde tek bir L3 önbelleği. Bu nedenle, eğer bir süreç atanmışsa
belirli bir sokete eşleyici, ardından bir -bağlanan l3 önbellek direktif, sürecin devam etmesine neden olacaktır.
bu soket içinde tek bir L3 önbelleğini paylaşan işlemcilere bağlıdır.

Yükleri dengelemeye yardımcı olmak için bağlama yönergesi,
eşleyicide kullanılandan daha düşük seviyeler. Örneğin, bir işin eşlendiği durumu düşünün
soket seviyesine ve ardından çekirdeğe bağlanır. Her soketin birden fazla çekirdeği olacaktır, bu nedenle
birden çok işlem belirli bir sokete eşlenir, bağlama algoritması her birini atayacaktır.
bir sokete, benzersiz bir çekirdeğe, sıralı bir şekilde yerleştirildi.

Alternatif olarak, l2cache tarafından eşlenen ve ardından sokete bağlanan işlemler basitçe bağlanacaktır.
bulundukları yuvadaki tüm işlemcilere. Bu şekilde kullanıcılar,
göreli MCW sıralaması konumu ve bağlama üzerinde ayrıntılı kontrol uygulayın.

En sonunda, --rapor-bağlamalar bağlamaları bildirmek için kullanılabilir.

Örnek olarak, her biri dört çekirdek içeren iki işlemci soketine sahip bir düğüm düşünün. Biz
koşmak mpirun ile -Örneğin 4 --rapor-bağlamalar ve aşağıdaki ek seçenekler:

% mpirun ... --harita-çekirdek --bağlama-çekirdeğe
[...] ... çocuğu [...,0] cpus 0001'e bağlama
[...] ... çocuğu [...,1] cpus 0002'e bağlama
[...] ... çocuğu [...,2] cpus 0004'e bağlama
[...] ... çocuğu [...,3] cpus 0008'e bağlama

% mpirun ... --map-by soket --bind-to socket
[...] ... çocuğu [...,0] soket 0 cpus 000f'ye bağlama
[...] ... çocuğu [...,1] soket 1 cpus 00f0'a bağlama
[...] ... çocuğu [...,2] soket 0 cpus 000f'ye bağlama
[...] ... çocuğu [...,3] soket 1 cpus 00f0'a bağlama

% mpirun ... --haritaya göre çekirdek:PE=2 --çekirdeğe bağla
[...] ... çocuğu [...,0] cpus 0003'e bağlama
[...] ... çocuğu [...,1] cpus 000c'ye bağlama
[...] ... çocuğu [...,2] cpus 0030'e bağlama
[...] ... çocuğu [...,3] cpus 00c0'a bağlama

% mpirun ... --bind-hiçbirine

Burada, --rapor-bağlamalar her işlemin bağlanmasını maske olarak gösterir. İlk durumda,
işlemler, 0001, 0002, 0004 maskeleriyle gösterildiği gibi ardışık çekirdeklere bağlanır ve
0008. İkinci durumda, işlemler belirtildiği gibi ardışık soketlerdeki tüm çekirdeklere bağlanır
000f ve 00f0 maskeleriyle. İşlemler, işlemci soketleri arasında yuvarlak bir döngüde
robin modası gerektiği kadar. Üçüncü durumda, maskeler bize şunu gösteriyor 2
çekirdekler işlem başına bağlanmıştır. Dördüncü durumda, bağlama kapatılır ve hayır
bağlamalar bildirilir.

Açık MPI'nin işlem bağlama desteği, temel alınan işletim sistemine bağlıdır.
Bu nedenle, belirli işlem bağlama seçenekleri her sistemde mevcut olmayabilir.

Proses bağlama, MCA parametreleriyle de ayarlanabilir. Kullanımları daha az uygundur
bu mpirun seçenekler. Öte yandan, MCA parametreleri yalnızca
mpirun komut satırında, ancak alternatif olarak bir sistem veya kullanıcı mca-params.conf dosyasında veya
aşağıdaki MCA bölümünde açıklandığı gibi ortam değişkenleri. Bazı örnekler şunları içerir:

mpirun seçeneği MCA parametresi anahtar değeri

--map-çekirdeğe göre rmaps_base_mapping_policy çekirdeği
--map-by soketi rmaps_base_mapping_policy soketi
--sıralamaya göre çekirdek rmaps_base_ranking_policy çekirdeği
--çekirdeğe bağla hwloc_base_binding_policy çekirdeği
--bağlama soketi hwloc_base_binding_policy soketi
--bind-to none hwloc_base_binding_policy hiçbiri

Sıra dosyaları
Rankfiles, bireysel işlemlerin nasıl yapılacağı hakkında ayrıntılı bilgi belirten metin dosyalarıdır.
düğümlere ve bunların hangi işlemciye/işlemcilere bağlı olması gerektiğine eşlenmelidir. Her satırın bir
rankfile, bir işlemin konumunu belirtir (MPI işleri için, işlemin "sıralaması"
MPI_COMM_WORLD sıralamasında). Sıralama dosyasındaki her satırın genel biçimi şöyledir:

rütbe = yuva=

Örneğin:

$ kedi myrankfile
sıra 0=aa yuvası=1:0-2
sıra 1=bb yuvası=0:0,1
sıra 2=cc yuvası=1-2
$ mpirun -H aa,bb,cc,dd -rf sıralama dosyam ./a.out

Anlamına gelir

Sıra 0, mantıksal yuva 1'e bağlı, 0-2 çekirdekli aa düğümünde çalışır.
Sıra 1, 0 mantıksal soketine, 0 ve 1 çekirdeklerine bağlı bb düğümünde çalışır.
Sıra 2, mantıksal çekirdek 1 ve 2'ye bağlı cc düğümünde çalışır.

Sıra dosyaları alternatif olarak belirtmek için kullanılabilir fiziksel işlemci konumları Bu durumda,
sözdizimi biraz farklıdır. Yuvalar artık tanınmaz ve yuva numarası
Çoğu işletim sistemi benzersiz bir fiziksel atama yapmadığından, verilen fiziksel PU'nun numarası olmalıdır.
düğümdeki her bir çekirdeğe tanımlayıcı. Böylece, uygun bir fiziksel sıralama dosyası şuna benzer:
şu:

$ cat benim fiziksel sıralama dosyam
sıra 0=aa yuvası=1
sıra 1=bb yuvası=8
sıra 2=cc yuvası=6

Bu demektir ki,

Sıra 0, fiziksel PU 1'i içeren çekirdeğe bağlı aa düğümünde çalışır
Rank 1, fiziksel PU 8'i içeren çekirdeğe bağlı bb düğümünde çalışacaktır.
Rank 2, fiziksel PU 6'yı içeren çekirdeğe bağlı cc düğümünde çalışacaktır.

Rankfiles olarak kabul edilir mantıksal varsayılan olarak ve MCA parametresi
rmaps_rank_file_physical, sıralama dosyasının olacağını belirtmek için 1 olarak ayarlanmalıdır.
düşünüldüğü gibi fiziksel.

Yukarıda listelenen ana bilgisayar adları "mutlak"tır, yani gerçek çözülebilir ana bilgisayar adları
belirtildi. Ancak, ana bilgisayar adları "göreli" olarak da belirtilebilir, yani bunlar
harici olarak belirlenmiş bir ana bilgisayar adları listesiyle ilişkili olarak belirtilir (örneğin, mpirun'un
--host bağımsız değişkeni, bir ana bilgisayar dosyası veya bir iş zamanlayıcı).

"Göreceli" belirtim "+n" biçimindedir. ", burada X, aşağıdakileri belirten bir tamsayıdır.
Kullanılabilir tüm ana bilgisayar adları kümesindeki X. ana bilgisayar adı, 0'dan dizine alınır. Örneğin:

$ kedi myrankfile
rank 0=+n0 slot=1:0-2
sıra 1=+n1 slot=0:0,1
sıra 2=+n2 slot=1-2
$ mpirun -H aa,bb,cc,dd -rf sıralama dosyam ./a.out

Open MPI v1.7 ile başlayarak, tüm soket/çekirdek yuva konumları şu şekilde belirtilir: mantıksal
dizinler (kullanılan Open MPI v1.6 serisi fiziksel indeksler). gibi araçları kullanabilirsiniz.
Soket ve çekirdeklerin mantıksal dizinlerini bulmak için HWLOC'un "lstopo"su.

Uygulama bağlam or çalıştırılabilir Program?
İki farklı formu ayırt etmek için, mpirun için komut satırında görünüyor --uygulama seçeneği.
Belirtilirse, komut satırında belirtilen dosyanın bir dosya olduğu varsayılır.
uygulama bağlamı. Belirtilmezse, dosyanın yürütülebilir bir dosya olduğu varsayılır.
programı.

Bulma dosyalar
Bir dosya için göreli veya mutlak bir yol belirtilmemişse, Open MPI önce
tarafından belirtilen dizinleri arayarak dosyalar --yol seçenek. yoksa --yol
seçenek kümesi veya dosya şurada bulunamazsa --yol konum, ardından Açık MPI arayacaktır
kaynak düğüm(ler)de tanımlandığı gibi kullanıcının PATH ortam değişkeni.

Göreceli bir dizin belirtilmişse, ilk çalışma dizinine göre olmalıdır.
kullanılan özel başlatıcı tarafından belirlenir. Örneğin, rsh veya ssh başlatıcıları kullanırken,
başlangıç ​​dizini varsayılan olarak $HOME'dur. Diğer başlatıcılar ilk dizini şu şekilde ayarlayabilir:
çağrılmasından itibaren geçerli çalışma dizini mpirun.

akım Çalışma rehber
The -wdir mpirun seçeneği (ve eş anlamlısı, -wd) kullanıcının keyfi olarak değiştirmesine izin verir
Program çağrılmadan önce dizin. Uygulama bağlam dosyalarında da kullanılabilir
belirli düğümlerde ve/veya belirli uygulamalar için çalışma dizinlerini belirtmek için.

Eğer -wdir seçeneği hem bir bağlam dosyasında hem de komut satırında görünür, bağlam
dosya dizini komut satırı değerini geçersiz kılar.

Eğer -wdir seçeneği belirtilirse, Open MPI belirtilene geçmeyi dener.
tüm uzak düğümlerdeki dizin. Bu başarısız olursa, mpirun iptal edecek.

Eğer -wdir seçenektir değil belirtilen, Open MPI dizin adını gönderecektir. mpirun
uzak düğümlerin her birine çağrıldı. Uzak düğümler bunu değiştirmeye çalışacak
dizin. Yapamıyorlarsa (örneğin, dizin o düğümde yoksa), o zaman
Open MPI, başlatıcı tarafından belirlenen varsayılan dizini kullanacaktır.

Tüm dizin değişiklikleri, kullanıcının programı çağrılmadan önce gerçekleşir; kadar beklemez
MPI_INIT denir.

Standart I / O
Open MPI, UNIX standart girdisini, aşağıdakiler dışındaki tüm işlemlerde /dev/null öğesine yönlendirir.
MPI_COMM_WORLD sıra 0 işlemi. MPI_COMM_WORLD sıra 0 işlemi standart girdiyi devralır
itibaren mpirun. Not: Çağrılan düğüm mpirun düğümle aynı olması gerekmez
MPI_COMM_WORLD sıra 0 işlemi bulunur. Open MPI, yeniden yönlendirmeyi yönetir. mpirun's
0 aşamasına standart girdi.

Open MPI, UNIX standart çıktısını ve hatasını uzak düğümlerden çağrılan düğüme yönlendirir
mpirun ve standart çıktı/hata üzerine yazdırır mpirun. Yerel süreçler,
standart çıktı/hata mpirun ve doğrudan ona aktarın.

Böylece, Open MPI uygulamaları için standart I/O'yu aşağıdakileri kullanarak yeniden yönlendirmek mümkündür.
tipik kabuk yeniden yönlendirme prosedürü mpirun.

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

Bu örnekte bir tek MPI_COMM_WORLD sıra 0 süreci akışı alacak
itibaren benim_girişim stdin'de. Diğer tüm düğümlerdeki stdin, /dev/null'a bağlanacaktır.
Ancak, tüm düğümlerden gelen stdout, benim_çıktım dosyası.

işaret Yayılma
Orterun bir SIGTERM ve SIGINT aldığında, tüm işi şu şekilde öldürmeye çalışacak:
işteki tüm süreçleri bir SIGTERM göndererek, az sayıda saniye bekleyerek, ardından
işteki tüm süreçleri bir SIGKILL göndererek.

Orterun tarafından alınan SIGUSR1 ve SIGUSR2 sinyalleri, sistemdeki tüm süreçlere yayılır.
iş.

SIGSTOP ve SIGCONT'un mpirun tarafından yürütülen programa iletilmesi açılabilir.
orte_forward_job_control MCA parametresinin 1 olarak ayarlanması. mpirun'a bir SIGTSTOP sinyali
ardından mpirun tarafından başlatılan tüm programlara bir SIGSTOP sinyali gönderilmesine neden olur ve
aynı şekilde, mpirun'a bir SIGCONT sinyali, bir SIGCONT'un gönderilmesine neden olacaktır.

Diğer sinyaller şu anda orterun tarafından yayılmamaktadır.

Süreç İptal / işaret kullanma
Bir MPI uygulamasının çalıştırılması sırasında, herhangi bir işlem anormal şekilde ölürse (ya
çağırmadan önce MPI_FINALİZEveya bir sinyal sonucu ölmek), mpirun yazdıracak
bir hata mesajı ve MPI uygulamasının geri kalanını sonlandırın.

Kullanıcı sinyali işleyicileri muhtemelen MPI durumunu temizlemeye çalışmaktan kaçınmalıdır (Açık MPI
şu anda zaman uyumsuz sinyal için güvenli değil; görmek MPI_Init_thread(3) hakkında ayrıntılar için
MPI_THREAD_MULTIPLE ve iplik güvenliği). Örneğin, bir segmentasyon hatası meydana gelirse
MPI_GÖNDER (belki hatalı bir arabellek geçirildiği için) ve bir kullanıcı sinyali işleyicisi
çağrılır, eğer bu kullanıcı işleyici çağırmaya çalışırsa MPI_FINALİZE, Kötü Şeyler Olabilir
Hata oluştuğunda Open MPI zaten MPI "içinde" olduğundan. Dan beri mpirun fark edecek
işlemin bir sinyal nedeniyle öldüğü, muhtemelen gerekli değildir (ve en güvenlisi).
kullanıcı yalnızca MPI olmayan durumu temizlemelidir.

Süreç çevre
MPI uygulamasındaki işlemler, ortamlarını açık RTE arka plan programından devralır.
üzerinde çalıştıkları düğüm. Çevre, tipik olarak
kullanıcının kabuğu. Uzak düğümlerde, tam ortam önyükleme MCA modülü tarafından belirlenir
kullanılmış. NS başlatma modülü, örneğin, her ikisini de kullanır /ssh Açık RTE'yi başlatmak için
uzak düğümlerde daemon ve genellikle kullanıcının bir veya daha fazla kabuk kurulum dosyasını yürütür
Açık RTE arka plan programını başlatmadan önce. Dinamik olarak bağlantılı uygulamaları çalıştırırken
gerektirir LD_LIBRARY_PATH ayarlanacak ortam değişkeni, sağlamak için özen gösterilmelidir
Open MPI'yi başlatırken doğru şekilde ayarlandığını.

Daha fazla ayrıntı için "Uzaktan Yürütme" bölümüne bakın.

uzak infaz
Açık MPI şunları gerektirir: PATH ortam değişkeni, uzaktan çalıştırılabilir dosyaları bulmak için ayarlanabilir
düğümler (bu genellikle yalnızca - veya sshtabanlı ortamlar --
toplu iş/zamanlanmış ortamlar tipik olarak mevcut ortamı aşağıdakilerin yürütülmesine kopyalar.
uzak işler, yani mevcut ortamda PATH ve / veya LD_LIBRARY_PATH uygun şekilde ayarlayın,
uzak düğümler de uygun şekilde ayarlayacaktır). Açık MPI, paylaşılan ile derlenmişse
kütüphane desteğine sahip olmak da gerekli olabilir. LD_LIBRARY_PATH Çevre değişkeni
uzak düğümlerde de ayarlayın (özellikle kullanıcıyı çalıştırmak için gereken paylaşılan kitaplıkları bulmak için
MPI uygulamaları).

Ancak, kabuk başlangıç ​​dosyalarını ayarlamak için düzenlemek her zaman istenmez veya mümkün değildir. PATH
ve / veya LD_LIBRARY_PATH. --önek bazı basit yapılandırmalar için seçenek sunulur
bunun mümkün olmadığı yerde.

The --önek seçenek tek bir argüman alır: uzak düğümdeki temel dizin
Açık MPI yüklenir. Open MPI, uzaktan kumandayı ayarlamak için bu dizini kullanacaktır. PATH ve
LD_LIBRARY_PATH Herhangi bir Open MPI veya kullanıcı uygulamasını çalıştırmadan önce. Bu koşmaya izin verir
MPI işlerini önceden yapılandırmadan açın. PATH ve LD_LIBRARY_PATH uzaktan kumandada
düğümleri.

Open MPI, geçerli düğümün "bindir"inin (Açık MPI'lerin bulunduğu dizin) taban adını ekler.
yürütülebilir dosyalar ön eke yüklenir ve bunu PATH uzak düğümde.
Benzer şekilde, Open MPI, geçerli düğümün "libdir"inin (dizinin bulunduğu dizin) taban adını ekler.
Açık MPI'nin kitaplıkları kurulur) önek olarak ve bunu ayarlamak için kullanır. LD_LIBRARY_PATH
uzak düğümde. Örneğin:

Yerel bindir: /local/düğüm/dizin/bin

Yerel libdir: /local/node/directory/lib64

Aşağıdaki komut satırı kullanılıyorsa:

% mpirun --prefix /uzak/düğüm/dizin

Open MPI, "/remote/node/directory/bin" dosyasını ekleyecektir. PATH ve
denemeden önce uzak düğümdeki D_LIBRARY_PATH'e "/remote/node/directory/lib64"
herhangi bir şeyi yürütmek için.

The --önek uzak düğümdeki kurulum yolları uygunsa seçenek yeterli değildir.
yerel düğümden farklı (örneğin, if "/ lib" yerel düğümde kullanılır, ancak "/lib64"dir
uzak düğümde kullanılıyorsa) veya yükleme yolları bir
ortak bir önek altındaki alt dizin.

yürütüldüğünü unutmayın mpirun mutlak bir yol adı aracılığıyla belirtmekle eşdeğerdir --önek
mutlak yol adındaki son alt dizin olmadan mpirun. Örneğin:

% /usr/yerel/bin/mpirun ...

eşdeğerdir

% mpirun --ön ek / Yerel / usr

Dışa çevre Değişkenler
OMPI_* biçiminde adlandırılan tüm ortam değişkenleri otomatik olarak dışa aktarılacaktır.
yerel ve uzak düğümlerdeki yeni işlemlere. Çevresel parametreler de olabilir
MCA parametresi kullanılarak yeni süreçlere ayarlanır/ iletilir mca_base_env_list. -x
için seçenek mpirun kullanımdan kaldırıldı, ancak MCA paragrafının sözdizimi, önceki
örnek. sözdizimi iken -x seçeneği ve MCA parametresi yeni tanımlamaya izin verir
değişkenler, bu seçenekler için ayrıştırıcının şu anda çok karmaşık olmadığını unutmayın -
alıntılanan değerleri bile anlamıyor. Kullanıcılara değişkenleri ayarlamaları tavsiye edilir.
ortamı ve bunları dışa aktarma seçeneğini kullanın; onları tanımlamak için değil.

ayar MCA parametreler
The -mca anahtarı, parametrelerin çeşitli MCA'lara (Modüler Bileşen
Mimari) modülleri. MCA modülleri, izin verdikleri için MPI programları üzerinde doğrudan etkiye sahiptir.
çalışma zamanında ayarlanacak ayarlanabilir parametreler (hangi BTL iletişim aygıtı sürücüsünün
kullanımı, bu BTL'ye hangi parametrelerin iletileceği vb.).

The -mca switch iki argüman alır: ve . genel olarak argüman
değeri hangi MCA modülünün alacağını belirtir. Örneğin, "btl" kullanılır
MPI mesajlarını taşımak için hangi BTL'nin kullanılacağını seçmek için. NS argüman şudur
geçirilen değerdir. Örneğin:

mpirun -mca btl tcp,self -np 1 foo
Open MPI'ye "tcp" ve "self" BTL'leri kullanmasını ve "foo" an'ın tek bir kopyasını çalıştırmasını söyler.
ayrılmış düğüm

mpirun -mca btl öz -np 1 foo
Open MPI'ye "self" BTL'yi kullanmasını ve tahsis edilmiş bir "foo"nun tek bir kopyasını çalıştırmasını söyler.
düğümü.

The -mca anahtarı farklı belirtmek için birden çok kez kullanılabilir ve / veya
argümanlar. eğer aynı birden fazla belirtilirse, s birleştirilmiş
onları ayıran bir virgül (",") ile.

Unutmayın -mca switch, ortam değişkenlerini ayarlamak için basit bir kısayoldur. NS
önce ilgili ortam değişkenlerini ayarlayarak aynı etki elde edilebilir.
koşu mpirun. Open MPI'nin ayarladığı ortam değişkenlerinin biçimi şöyledir:

OMPI_MCA_ =

Böylece, -mca switch, önceden ayarlanmış tüm ortam değişkenlerini geçersiz kılar. NS -mca
ayarlar benzer şekilde $OPAL_PREFIX/etc/openmpi-mca- içinde ayarlanan MCA parametrelerini geçersiz kılar.
params.conf veya $HOME/.openmpi/mca-params.conf dosyası.

Bilinmiyor argümanlar hala ortam değişkeni olarak ayarlanmıştır - kontrol edilmezler (tarafından
mpirun) doğruluk için. Yasadışı veya yanlış argümanlar olabilir veya olmayabilir
bildirildi -- belirli MCA modülüne bağlıdır.

MCA mimarisi altında mevcut bileşen türlerini bulmak veya mevcut bileşenleri bulmak için
belirli bir bileşen için parametreler, ompi_info emretmek. Bkz. ompi_info(1) adam
komutla ilgili ayrıntılı bilgi için sayfa.

Koşu as kök
Open MPI ekibi, yürütmeye karşı şiddetle tavsiyede bulunur. mpirun kök kullanıcı olarak. MPI
uygulamalar normal (root olmayan) kullanıcılar olarak çalıştırılmalıdır.

Bu tavsiyeyi yansıtan mpirun, varsayılan olarak root olarak çalışmayı reddedecektir. Bunu geçersiz kılmak için
varsayılan olarak ekleyebilirsiniz --root olarak çalıştırılmasına izin ver seçeneği mpirun Komut satırı.

Çıkış durum
Ne için standart bir tanım yok mpirun çıkış durumu olarak geri dönmelidir. Sonrasında
önemli bir tartışma, atamak için aşağıdaki yönteme karar verdik. mpirun çıkış
durumu (not: aşağıdaki açıklamada, "birincil" iş ilk başvurudur
mpirun tarafından başlatılır - o iş tarafından oluşturulan tüm işler "ikincil" olarak belirlenir
Meslekler):

· Birincil işteki tüm işlemler normalde 0 çıkış durumu ile sonlanırsa, 0 döndürürüz

· birincil işteki bir veya daha fazla işlem normalde sıfırdan farklı bir çıkışla sona ererse
durumu, en düşük MPI_COMM_WORLD sıralamasına sahip sürecin çıkış durumunu
sıfır olmayan bir duruma sahip olmak

· birincil işteki tüm işlemler normal olarak 0 çıkış durumuyla sona ererse ve bir veya
ikincil bir işte daha fazla süreç normalde sıfır olmayan çıkış durumuyla sona erer, biz (a)
en düşük MPI_COMM_WORLD sıralamasına sahip sürecin çıkış durumunu döndür
Jobid'in sıfır olmayan bir duruma sahip olması ve (b) çıkış durumunu özetleyen bir mesaj çıktısı
birincil ve tüm ikincil işler.

· cmd satırı seçeneği --report-child-jobs-separately olarak ayarlanmışsa, -yalnızca-
birincil işin çıkış durumu. İkincil işlerde sıfır olmayan herhangi bir çıkış durumu
yalnızca özet baskı bildiriminde rapor edilir.

Varsayılan olarak, OMPI, MPI işlemlerinin sıfır olmayan bir sonlandırma ile çıktığını kaydeder ve not eder
durum. Bu genellikle "anormal bir sonlandırma" olarak kabul edilmez - yani, OMPI
bir veya daha fazla işlem sıfır olmayan bir durum döndürürse bir MPI işini iptal edin. Bunun yerine, varsayılan
davranış basitçe, sıfır olmayan bir durumla sona eren işlemlerin sayısını bildirir.
işin tamamlanması.

Bununla birlikte, bazı durumlarda, herhangi bir işlem yapıldığında işin iptal edilmesi istenebilir.
sıfır olmayan durumla sona erer. Örneğin, MPI olmayan bir iş, aşağıdakilerden kötü bir sonuç algılayabilir:
bir hesaplama ve iptal etmek istiyor, ancak bir çekirdek dosya oluşturmak istemiyor. Veya bir MPI işi
MPI_Finalize çağrısını geçtikten sonra devam edebilir, ancak tüm işlemlerin iptal edilmesi gerektiğini belirtir
bazı MPI sonrası sonuçlar nedeniyle.

Bu durumun sık sık yaşanması beklenmemektedir. Ancak, faizde
Daha geniş topluluğa hizmet eden OMPI, artık kullanıcıların bunu yönlendirmesine izin veren bir araca sahip.
sıfır olmayan bir durumla çıkan herhangi bir işlemde işler iptal edilebilir. MCA parametresini ayarlama
"orte_abort_on_non_zero_status" - 1, OMPI'nin herhangi bir zamanda tüm işlemleri iptal etmesine neden olur
süreç
sıfır olmayan durumla çıkar.

Bu şekilde yapılan sonlandırmalar konsolda "anormal" olarak rapor edilecektir.
sonlandırma", çıkış durumu ile birlikte tanımlanan ilk çıkış süreci ile.

ÖRNEKLER


Yukarıdaki bölümlerdeki örnekleri de gördüğünüzden emin olun.

mpirun -np 4 -mca btl ib,tcp,kendi prog1
MPI'nin taşınması için "ib", "tcp" ve "self" BTL'leri kullanarak prog4'in 1 kopyasını çalıştırın
mesajları.

mpirun -np 4 -mca btl tcp,sm,self
--mca btl_tcp_if_include eth0 prog1
MPI'nin taşınması için "tcp", "sm" ve "self" BTL'leri kullanarak prog4'in 1 kopyasını çalıştırın
iletiler, TCP ile iletişim kurmak için yalnızca eth0 arabirimini kullanır. Diğer BTL'lerin
benzer if_include MCA parametrelerine sahiptir.

DÖNÜŞ DEĞER


mpirun tarafından başlatılan tüm işlemler 0 döndürürse mpirun MPI_FINALIZE'ı aradıktan sonra çıkın. A
mpirun'da dahili bir hata meydana gelirse veya bir veya daha fazlasında sıfır olmayan bir değer döndürülür.
MPI_FINALIZE çağrılmadan önce işlemlerden çıkıldı. mpirun'da dahili bir hata oluştuysa,
ilgili hata kodu döndürülür. Bir veya daha fazla işlemin çıkması durumunda
MPI_FINALIZE çağrılmadan önce, sürecin MPI_COMM_WORLD sıralamasının dönüş değeri
o mpirun MPI_FINALIZE aranmadan önce ölen ilk bildirimler iade edilecektir. Bunu not et,
genel olarak, bu ölen ilk süreç olacak, ancak böyle olması garanti değil.

onworks.net hizmetlerini kullanarak mpirun.openmpi'yi çevrimiçi kullanın


Ad




×
reklâm
❤️Buradan alışveriş yapın, rezervasyon yapın veya satın alın; ücretsizdir, hizmetlerin ücretsiz kalmasına yardımcı olur.