Ini ialah arahan pegasus-mpi-cluster yang boleh dijalankan dalam penyedia pengehosan percuma OnWorks menggunakan salah satu daripada berbilang stesen kerja dalam talian percuma kami seperti Ubuntu Online, Fedora Online, emulator dalam talian Windows atau emulator dalam talian MAC OS.
JADUAL:
NAMA
pegasus-mpi-cluster - alat untuk menjalankan aliran kerja pengiraan yang dinyatakan sebagai DAG
(Graf Acyclic Terarah) pada kelompok pengiraan menggunakan MPI.
SINOPSIS
pegasus-mpi-cluster [pilihan] aliran kerja.dag
DESCRIPTION
pegasus-mpi-cluster ialah alat yang digunakan untuk menjalankan HTC (High Throughput Computing) saintifik
aliran kerja pada sistem yang direka untuk HPC (High Performance Computing). Banyak sistem HPC mempunyai
seni bina tersuai yang dioptimumkan untuk aplikasi selari yang diganding rapat. Ini
sistem biasanya mempunyai rangkaian eksotik, kependaman rendah yang direka bentuk untuk lulus pendek
mesej dengan sangat cepat antara nod pengiraan. Banyak rangkaian ini sangat tinggi
dioptimumkan bahawa nod pengiraan tidak menyokong timbunan TCP/IP. Ini menjadikannya
mustahil untuk menjalankan aplikasi HTC menggunakan perisian yang direka untuk komoditi
kelompok, seperti Condor.
pegasus-mpi-cluster dibangunkan untuk membolehkan aplikasi HTC yang digandingkan secara longgar seperti
aliran kerja saintifik untuk memanfaatkan sistem HPC. Untuk mengelilingi rangkaian
isu yang digariskan di atas, pegasus-mpi-cluster menggunakan MPI (Message Passing Interface), a
API yang biasa digunakan untuk menulis aplikasi selari SPMD (Proses Tunggal, Berbilang Data).
Kebanyakan sistem HPC mempunyai pelaksanaan MPI yang berfungsi pada apa jua rangkaian eksotik
seni bina yang digunakan oleh sistem.
An pegasus-mpi-cluster kerja terdiri daripada satu proses induk (proses ini adalah peringkat 0 dalam
MPI parlance) dan beberapa proses pekerja. Proses induk menguruskan aliran kerja dan
memberikan tugas aliran kerja kepada pekerja untuk dilaksanakan. Pekerja melaksanakan tugas dan kembali
keputusan kepada tuan. Sebarang output yang ditulis kepada stdout atau stderr oleh tugasan ditangkap
(Lihat TASK STDIUM).
pegasus-mpi-cluster aplikasi dinyatakan sebagai DAGs (Graf Acyclic Terarah) (lihat DAG
FILES). Setiap nod dalam graf mewakili tugas, dan tepi mewakili kebergantungan
antara tugas yang mengekang susunan tugasan itu dilaksanakan. Setiap tugasan ialah a
program dan satu set parameter yang perlu dijalankan (iaitu arahan dan beberapa pilihan
hujah). Kebergantungan biasanya mewakili kebergantungan aliran data dalam
aplikasi, di mana fail output yang dihasilkan oleh satu tugasan diperlukan sebagai input untuk yang lain.
Jika ralat berlaku semasa melaksanakan DAG yang menyebabkan aliran kerja berhenti, ia boleh
dimulakan semula menggunakan fail penyelamat, yang merekodkan kemajuan aliran kerja (lihat Simpan semula
FILES). Ini membolehkan pegasus-mpi-cluster untuk meneruskan aliran kerja di tempat ia berhenti.
pegasus-mpi-cluster direka bentuk untuk berfungsi sama ada sebagai alat kendiri atau sebagai pelengkap kepada
Sistem Pengurusan Aliran Kerja Pegasus (WMS). Untuk maklumat lanjut tentang menggunakan PMC dengan
Pegasus lihat bahagian di PMC DAN pegasus.
pegasus-mpi-cluster membenarkan aplikasi yang dinyatakan sebagai DAG dilaksanakan secara selari pada a
bilangan nod pengiraan yang besar. Ia direka bentuk untuk menjadi ringkas, ringan dan teguh.
PILIHAN
-h, - membantu
Cetak mesej bantuan
-V, --versi
Maklumat versi cetakan
-v, --verbose
Tingkatkan verbositi pembalakan. Menambah berbilang -v meningkatkan tahap lebih. lalai
tahap log ialah INFO. (lihat MASUK)
-q, --senyap
Kurangkan verbositi pembalakan. Menambah berbilang -q menurunkan tahap lebih. lalai
tahap log ialah INFO. (lihat MASUK)
-s, --langkau-menyelamat
Abaikan fail penyelamat untuk aliran kerja.dag jika ia wujud. Perhatikan bahawa pegasus-mpi-cluster
masih akan membuat fail penyelamat baharu untuk larian semasa. Tingkah laku lalai ialah
gunakan fail penyelamat jika ada yang ditemui. (lihat Simpan semula FILES)
-o jalan, --stdout jalan
Laluan ke fail untuk tugasan stdout. (lihat TASK STDIUM and --per-task-stdio)
-e jalan, --stderr jalan
Laluan ke fail untuk tugasan stderr. (lihat TASK STDIUM and --per-task-stdio)
-m M, --maksimum-kegagalan M
Berhenti menghantar tugasan baharu selepas itu M tugas telah gagal. sekali M telah dicapai,
pegasus-mpi-cluster akan menyelesaikan menjalankan apa-apa tugas yang telah dimulakan, tetapi tidak
mulakan sebarang tugasan lagi. Pilihan ini digunakan untuk mencegah pegasus-mpi-cluster dari
meneruskan aliran kerja yang mengalami ralat sistematik, seperti a
binari hilang atau laluan tidak sah. Lalai untuk M ialah 0, yang bermaksud tidak terhad
kegagalan dibenarkan.
-t T, --mencuba T
Cuba untuk menjalankan setiap tugas T kali sebelum menandakan tugas sebagai gagal. Perhatikan bahawa T
percubaan tidak dikira sebagai kegagalan untuk tujuan -m pilihan. Tugas hanya
dianggap gagal jika dicuba T masa dan semua T percubaan menghasilkan bukan sifar
kod keluar. Nilai T mestilah sekurang-kurangnya 1. Lalai ialah 1.
-n, --nolock
Jangan kunci DAGFILE. Secara lalai, pegasus-mpi-cluster akan cuba memperoleh
kunci eksklusif pada DAGFILE untuk menghalang berbilang kerja MPI daripada menjalankan DAG yang sama di
pada masa yang sama. Jika pilihan ini ditentukan, maka kunci tidak akan diperoleh.
-r, --menyelamatkan jalan
Laluan untuk menyelamat log. Jika fail itu wujud, dan -s tidak dinyatakan, maka log akan menjadi
digunakan untuk memulihkan keadaan aliran kerja. Fail dipotong selepas ia dibaca dan
log penyelamat baharu dicipta sebagai gantinya. Lalai adalah untuk menambah .menyelamat kepada DAG
nama fail. (lihat Simpan semula FILES)
--host-skrip jalan
Laluan ke skrip atau boleh laku untuk dilancarkan pada setiap hos unik itu pegasus-mpi-cluster
sedang berjalan. Laluan ini juga boleh ditetapkan menggunakan persekitaran PMC_HOST_SCRIPT
pembolehubah. (lihat HOST SKRIP)
--hos-memori saiz
Jumlah memori yang tersedia pada setiap hos dalam MB. Lalai adalah untuk menentukan jumlah
RAM fizikal secara automatik. Nilai ini juga boleh ditetapkan menggunakan PMC_HOST_MEMORY
pembolehubah persekitaran. (lihat BERASASKAN SUMBER JADUAL)
--host-cpus cpus
Bilangan CPU yang tersedia pada setiap hos. Lalai adalah untuk menentukan bilangan CPU
teras secara automatik. Nilai ini juga boleh ditetapkan menggunakan persekitaran PMC_HOST_CPUS
pembolehubah. (lihat BERASASKAN SUMBER JADUAL)
--had-ketat
Ini membolehkan had penggunaan memori yang ketat untuk tugasan. Apabila pilihan ini ditentukan, dan
tugas cuba memperuntukkan lebih banyak memori daripada yang diminta dalam DAG, memori
operasi peruntukan akan gagal.
--masa-dinding-maks minit
Ini ialah bilangan maksimum minit itu pegasus-mpi-cluster akan membenarkan aliran kerja
untuk berlari. Apabila masa ini tamat pegasus-mpi-cluster akan membatalkan aliran kerja dan bergabung
semua fail stdout/stderr pekerja. Nilai adalah dalam minit, dan
lalai ialah masa dinding tanpa had. Pilihan ini telah ditambah supaya output aliran kerja
akan direkodkan walaupun aliran kerja melebihi masa dinding maksimum kerja kelompoknya. ini
nilai juga boleh ditetapkan menggunakan pembolehubah persekitaran PMC_MAX_WALL_TIME.
--per-task-stdio
Ini menyebabkan PMC menghasilkan fail .out.XXX dan .err.XXX untuk setiap tugasan dan bukannya
menulis tugasan stdout/stderr kepada --stdout and --stderr. Nama fail ialah
"TASKNAME.out.XXX" dan "TASKNAME.err.XXX", dengan "TASKNAME" ialah nama tugasan
daripada DAG dan "XXX" ialah nombor urutan yang dinaikkan setiap kali tugas itu
mencuba. Pilihan ini mengatasi nilai untuk --stdout and --stderr. Hujah ini adalah
digunakan oleh Pegasus apabila aliran kerja dirancang dalam mod PMC sahaja untuk memudahkan penyahpepijatan
dan pemantauan.
--jobstate-log
Pilihan ini menyebabkan PMC menjana fail jobstate.log untuk aliran kerja. Failnya ialah
dinamakan "jobstate.log" dan diletakkan dalam direktori yang sama di mana fail DAG berada
terletak. Jika fail sudah wujud, maka PMC menambahkan baris baharu pada fail sedia ada.
Pilihan ini digunakan oleh Pegasus apabila aliran kerja dirancang dalam mod PMC sahaja untuk
memudahkan pemantauan.
--monitord-godam
Pilihan ini menyebabkan PMC menjana fail .dagman.out untuk aliran kerja. Fail ini
meniru kandungan fail .dagman.out yang dijana oleh Condor DAGMan. Intinya
pilihan ini adalah untuk menipu monitor untuk berfikir bahawa ia berurusan dengan DAGMan supaya
ia akan menjana peristiwa yang sesuai untuk mengisi pangkalan data STAMPEDE
tujuan pemantauan. Fail itu dinamakan "DAG.dagman.out" dengan "DAG" ialah laluan ke
fail PMC DAG.
--no-resource-log
Jangan menjana a workflow.dag.resource fail untuk aliran kerja.
--tiada-tidur-di-recv
Jangan gunakan tinjauan pendapat dengan sleep() untuk melaksanakan penerimaan mesej. (lihat Diketahui Isu-isu: CPU
Penggunaan)
--maxfds
Tetapkan bilangan maksimum deskriptor fail yang boleh dibiarkan terbuka oleh induk untuk I/O
pemajuan. Secara lalai nilai ini ditetapkan secara automatik berdasarkan nilai
getrlimit(RLIMIT_NOFILE). Nilai mestilah sekurang-kurangnya 1 dan tidak boleh lebih daripada
RLIMIT_NOFILE.
--kekalkan-pertalian
Secara lalai PMC cuba untuk menetapkan semula CPU dan pertalian memori. Ini bagi memastikan
semua CPU dan memori yang tersedia boleh digunakan oleh tugas PMC pada sistem yang tidak
dikonfigurasikan dengan betul. Bendera ini memberitahu PMC untuk mengekalkan tetapan perkaitan yang diwarisi
induknya. Ambil perhatian bahawa dasar ingatan hanya boleh dikosongkan jika PMC telah disusun dengan
libnuma. Perkaitan CPU dikosongkan menggunakan sched_setaffinity(), dan dasar ingatan ialah
dibersihkan dengan set_mempolicy().
DAG FILES
pegasus-mpi-cluster aliran kerja dinyatakan menggunakan format berasaskan teks ringkas yang serupa dengan
yang digunakan oleh Condor DAGMan. Terdapat hanya dua jenis rekod yang dibenarkan dalam fail DAG: TASK
and EDGE. Sebarang baris kosong dalam DAG (baris dengan semua aksara ruang putih) diabaikan,
seperti mana-mana baris yang bermula dengan # (perhatikan bahawa # hanya boleh muncul pada permulaan baris,
bukan di tengah).
Format a TASK rekod ialah:
id "TUGASAN" [pilihan...] boleh laku [argumen...]
Lokasi id ialah ID tugas, pilihan ialah senarai pilihan tugas, boleh dilaksanakan adalah jalan
kepada boleh laku atau skrip untuk dijalankan, dan hujah... ialah senarai yang diasingkan ruang bagi
hujah untuk diserahkan kepada tugas. Contohnya ialah:
TUGASAN t01 -m 10 -c 2 /bin/program -a -b
Contoh ini menentukan tugas t01 yang memerlukan memori 10 MB dan 2 CPU untuk dijalankan
/bin/program dengan hujah-hujah -a and -b. Pilihan tugas yang tersedia ialah:
-m M, --permintaan-ingatan M
Jumlah memori yang diperlukan oleh tugasan dalam MB. Lalai ialah 0, yang bermaksud ingatan
tidak dipertimbangkan untuk tugas ini. Pilihan ini boleh ditetapkan untuk kerja dalam DAX oleh
menyatakan profil pegasus::pmc_request_memory. (lihat BERASASKAN SUMBER JADUAL)
-c N, --permintaan-cpus N
Bilangan CPU yang diperlukan oleh tugas. Lalai ialah 1, yang membayangkan bahawa
bilangan slot pada hos hendaklah kurang daripada atau sama dengan bilangan CPU fizikal
agar semua slot dapat digunakan. Pilihan ini boleh ditetapkan untuk kerja dalam DAX oleh
menyatakan profil pegasus::pmc_request_cpus. (lihat BERASASKAN SUMBER JADUAL)
-t T, --mencuba T
Bilangan kali cuba melaksanakan tugas sebelum gagal secara kekal. Ini adalah
peringkat tugasan setara dengan --mencuba pilihan baris arahan.
-p P, --keutamaan P
Keutamaan tugas. P hendaklah integer. Nilai yang lebih besar mempunyai keutamaan yang lebih tinggi.
Lalai ialah 0. Keutamaan hanyalah petunjuk dan tidak ketat—jika tugas tidak boleh
dipadankan dengan slot yang tersedia (cth kerana ketersediaan sumber), tetapi keutamaan yang lebih rendah
tugas boleh, maka tugas itu akan ditangguhkan dan tugas keutamaan yang lebih rendah akan dilaksanakan.
Pilihan ini boleh ditetapkan untuk kerja dalam DAX dengan menyatakan pegasus::pmc_priority
profil.
-f VAR=FAIL, --paip-hadapan VAR=FAIL
Majukan I/O ke fail FAIL menggunakan paip untuk berkomunikasi dengan tugas. Alam sekitar
berubah-ubah VAR akan ditetapkan kepada nilai deskriptor fail untuk paip yang
tugas boleh menulis untuk mendapatkan data ke dalam FAIL. Sebagai contoh, jika tugas menentukan: -f
FOO=/tmp/foo maka pembolehubah persekitaran FOO untuk tugasan akan ditetapkan kepada nombor
(cth 3) yang mewakili fail /tmp/foo. Untuk menentukan hujah ini dalam a
Pegasus DAX anda perlu menetapkan profil pegasus::pmc_arguments (perhatikan bahawa nilai
pmc_arguments mesti mengandungi bahagian "-f" argumen, jadi nilai yang sah ialah:
-f A=/tmp/a ). (lihat I / O
HADAPAN)
-F SRC=DEST, --fail-ke hadapan SRC=DEST
Majukan I/O ke fail TANGAN daripada fail SRC. Apabila tugas selesai, pekerja
akan membaca data daripada SRC dan hantar kepada tuan di mana ia akan ditulis kepada
fail TANGAN. Selepas SRC dibaca ia dipadamkan. Untuk menentukan hujah ini dalam a
Pegasus DAX anda perlu menetapkan profil pegasus::pmc_arguments. (lihat I / O HADAPAN)
Format sebuah EDGE rekod ialah:
"EDGE" anak ibu bapa
Lokasi ibu bapa ialah ID tugas induk, dan kanak-kanak ialah ID tugas kanak-kanak. An
contoh EDGE rekod ialah:
TEPI t01 t02
Aliran kerja berbentuk berlian yang ringkas akan kelihatan seperti ini:
# berlian.dag
TUGASAN A /bin/echo "Saya adalah"
TUGASAN B /bin/echo "Saya B"
TUGAS C /bin/echo "Saya C"
TUGASAN D /bin/echo "Saya D"
TEPI AB
AC TEPI
EDGE BD
CD EDGE
Simpan semula FILES
Pelbagai jenis ralat boleh berlaku semasa menjalankan DAG. Satu atau lebih daripada tugasan mungkin
gagal, kerja MPI mungkin kehabisan masa dinding, pegasus-mpi-cluster mungkin segfault (kami berharap
tidak), sistem mungkin ranap, dsb. Untuk memastikan bahawa DAG tidak perlu
dimulakan semula dari awal selepas ralat, pegasus-mpi-cluster menghasilkan fail penyelamat
untuk setiap aliran kerja.
Fail penyelamat ialah fail teks ringkas yang menyenaraikan semua tugas dalam aliran kerja itu
telah selesai dengan jayanya. Fail ini dikemas kini setiap kali tugasan selesai, dan disiram
secara berkala supaya jika aliran kerja gagal dan pengguna memulakannya semula, pegasus-mpi-cluster
boleh menentukan tugasan yang masih perlu dilaksanakan. Oleh itu, fail penyelamat adalah sejenis
log transaksi untuk aliran kerja.
Fail penyelamat mengandungi sifar atau lebih rekod SELESAI. Format rekod ini ialah:
"SELESAI" *taskid*
Lokasi taskid ialah ID tugasan yang berjaya diselesaikan.
Secara lalai, fail penyelamat dinamakan DAGNAME.rescue di mana DAGNAME adalah laluan ke input
fail DAG. Nama fail boleh ditukar dengan menentukan -r hujah.
PMC DAN pegasus
Menggunakan PMC khususnya Pegasus Petugas Clustering
PMC boleh digunakan sebagai pembungkus untuk melaksanakan kerja berkelompok di Pegasus. Dalam mod ini
Pegasus mengumpulkan beberapa tugasan bersama-sama dan menyerahkannya sebagai kerja berkelompok tunggal kepada a
sistem jauh. PMC kemudian melaksanakan tugas individu dalam kelompok dan mengembalikan
keputusan.
PMC boleh ditentukan sebagai pengurus tugas untuk pekerjaan berkelompok di Pegasus dalam tiga cara:
1. Secara global dalam fail sifat
Pengguna boleh menetapkan harta dalam fail sifat yang menghasilkan semua berkelompok
kerja aliran kerja yang dilaksanakan oleh PMC. Dalam fail sifat Pegasus nyatakan:
FAIL HARTA #PEGASUS
pegasus.clusterer.job.aggregator=mpiexec
Dalam contoh di atas, semua kerja berkelompok di semua tapak terpencil akan dilancarkan melalui
PMC selagi nilai hartanah tidak ditindih dalam katalog tapak.
2. Dengan menetapkan kunci profil "job.aggregator" dalam katalog tapak:
...
mpiexec
Dalam contoh di atas, semua kerja berkelompok pada siteX akan dilaksanakan melalui
PMC selagi nilai tidak ditindih dalam katalog transformasi.
3. Dengan menetapkan kunci profil "job.aggregator" dalam katalog transformasi:
tr B {
tapak siteX {
pfn "/path/to/mytask"
gerbang "x86"
os "linux"
taip "DIPASANG"
profil pegasus "clusters.size" "3"
profil pegasus "job.aggregator" "mpiexec"
}
}
Dalam contoh di atas, semua kerja berkelompok untuk transformasi B di siteX adalah
dilaksanakan melalui PMC.
Ia biasanya perlu mempunyai entri pegasus::mpiexec dalam katalog transformasi anda
yang menentukan a) laluan ke PMC di tapak terpencil dan b) profil globus yang berkaitan
seperti xcount, host_xcount dan maxwalltime untuk mengawal saiz tugas MPI. entri itu
kelihatan seperti ini:
tr pegasus::mpiexec {
tapak siteX {
pfn "/path/to/pegasus-mpi-cluster"
gerbang "x86"
os "linux"
taip "DIPASANG"
profil globus "maxwalltime" "240"
profil globus "host_xcount" "1"
profil globus "xcount" "32"
}
}
Jika entri katalog transformasi ini tidak dinyatakan, Pegasus akan cuba mencipta a
laluan lalai berdasarkan profil persekitaran PEGASUS_HOME yang ditentukan dalam tapak
katalog untuk tapak terpencil.
PMC boleh digunakan dengan pengelompokan mendatar dan berasaskan label dalam Pegasus, tetapi kami
mengesyorkan menggunakan pengelompokan berasaskan label supaya keseluruhan subgraf bagi Pegasus DAX boleh
dikelompokkan ke dalam satu kerja PMC, bukannya hanya satu tahap aliran kerja.
Pegasus Profil khususnya PMC
Terdapat beberapa profil Pegasus yang memetakan kepada pilihan tugas PMC:
pmc_request_memory
Profil ini digunakan untuk menetapkan pilihan --request-memory task dan biasanya ditentukan
dalam DAX atau katalog transformasi.
pmc_request_cpus
Kunci ini digunakan untuk menetapkan pilihan tugas --request-cpus dan biasanya dinyatakan dalam
DAX atau katalog transformasi.
pmc_priority
Kunci ini digunakan untuk menetapkan pilihan --priority task dan biasanya dinyatakan dalam
DAX.
Profil ini digunakan oleh Pegasus apabila menjana input DAG PMC apabila PMC digunakan sebagai
pengurus tugas untuk pekerjaan berkelompok di Pegasus.
Profil boleh ditentukan dalam DAX seperti ini:
-a 1 -b 2 -c 3
...
1024
4
10
Contoh ini menentukan tugas PMC yang memerlukan 1GB memori dan 4 teras, dan mempunyai a
keutamaan 10. Ia menghasilkan tugasan dalam PMC DAG yang kelihatan seperti ini:
TASK mytask_ID00000001 -m 1024 -c 4 -p 10 /path/to/mytask -a 1 -b 2 -c 3
Menggunakan PMC khususnya yang Keseluruhan Pegasus DAX
Pegasus juga boleh dikonfigurasikan untuk menjalankan keseluruhan aliran kerja sebagai satu kerja PMC. Di dalam ini
mod Pegasus akan menjana satu PMC DAG untuk keseluruhan aliran kerja serta PBS
skrip yang boleh digunakan untuk menyerahkan aliran kerja.
Berbeza dengan menggunakan PMC sebagai alat pengelompokan tugas, dalam mod ini tiada pekerjaan dalam
aliran kerja dilaksanakan tanpa PMC. Keseluruhan aliran kerja, termasuk kerja tambahan seperti
penciptaan direktori dan pemindahan fail, diuruskan oleh PMC. Jika Pegasus dikonfigurasikan dalam ini
mod, maka DAGMan dan Condor tidak diperlukan.
Untuk berjalan dalam mod PMC sahaja, tetapkan sifat "pegasus.code.generator" kepada "PMC" dalam Pegasus
fail sifat:
pegasus.code.generator=PMC
Untuk menyerahkan kerja PBS yang terhasil, anda mungkin perlu membuat perubahan pada fail .pbs
dijana oleh Pegasus untuk membolehkannya berfungsi dengan kluster anda. Mod ini adalah percubaan dan
belum digunakan secara meluas.
MASUK
Secara lalai, semua mesej pengelogan dicetak ke stderr. Jika anda menghidupkan pembalakan menggunakan
-v maka anda mungkin berakhir dengan banyak stderr yang dimajukan daripada pekerja ke
tuan.
Tahap log mengikut urutan keterukan ialah: MAUT, RALAT, AMARAN, INFO, NYAHPAP dan TRACE.
Tahap pengelogan lalai ialah INFO. Tahap pembalakan boleh ditingkatkan dengan -v and
menurun dengan -q.
TASK STDIUM
Secara lalai stdout dan stderr tugasan akan diubah hala ke stdout induk dan
stderr. Anda boleh menukar laluan fail ini dengan -o and -e hujah. Anda juga boleh
dayakan fail stdio setiap tugas menggunakan --per-task-stdio hujah. Perhatikan bahawa jika setiap tugas
fail stdio tidak digunakan maka stdio semua pekerja akan digabungkan menjadi satu keluar dan satu
fail err oleh tuan pada penghujungnya, jadi I/O daripada pekerja yang berbeza tidak akan disilang,
tetapi I/O daripada setiap pekerja akan muncul dalam susunan yang ia dijana. Juga ambil perhatian bahawa,
jika kerja gagal untuk sebarang sebab, output tidak akan digabungkan, sebaliknya akan ada
satu fail untuk setiap pekerja bernama DAGFILE.out.X dan DAGFILE.err.X, dengan DAGFILE ialah laluan
kepada input DAG, dan X ialah pangkat pekerja.
HOST SKRIP
Skrip hos ialah skrip shell atau boleh laksana itu pegasus-mpi-cluster dilancarkan pada setiap
hos unik di mana ia berjalan. Ia boleh digunakan untuk memulakan perkhidmatan tambahan, seperti
memcached, yang diperlukan oleh tugas dalam aliran kerja.
Skrip hos ditentukan menggunakan sama ada --host-skrip hujah atau PMC_HOST_SCRIPT
pembolehubah persekitaran.
Skrip hos dimulakan apabila pegasus-mpi-cluster bermula dan mesti keluar dengan kod keluar
daripada 0 sebelum sebarang tugas boleh dilaksanakan. Jika skrip hos mengembalikan kod keluar bukan sifar,
maka aliran kerja dibatalkan. Skrip hos diberi 60 saat untuk melakukan sebarang persediaan
diperlukan. Jika ia tidak keluar dalam 60 saat maka isyarat SIGALRM dihantar ke
proses, yang, jika tidak dikendalikan, akan menyebabkan proses itu ditamatkan.
Apabila aliran kerja selesai, pegasus-mpi-cluster akan menyampaikan isyarat SIGTERM kepada hos
kumpulan proses skrip. Sebarang proses anak yang dibiarkan dijalankan oleh skrip hos akan menerima
isyarat ini melainkan mereka mencipta kumpulan proses mereka sendiri. Jika terdapat sebarang proses yang tinggal
untuk menerima isyarat ini, maka mereka akan diberikan beberapa saat untuk keluar, maka mereka akan
menghantar SIGKILL. Inilah mekanisme yang boleh digunakan oleh proses yang dimulakan oleh skrip hos
dimaklumkan tentang penamatan aliran kerja.
BERASASKAN SUMBER JADUAL
Sumber pengkomputeran berprestasi tinggi selalunya mempunyai nisbah memori yang rendah kepada CPU. Pada masa yang sama
masa, tugas aliran kerja selalunya mempunyai keperluan memori yang tinggi. Selalunya, keperluan ingatan
tugas aliran kerja melebihi jumlah memori yang tersedia untuk setiap CPU pada hos tertentu. Sebagai
Hasilnya, mungkin perlu untuk melumpuhkan beberapa CPU untuk mengosongkan memori yang mencukupi untuk dijalankan
tugasan. Begitu juga, banyak kod mempunyai sokongan untuk hos berbilang teras. Dalam kes itu ia adalah
diperlukan untuk kecekapan untuk memastikan bahawa bilangan teras yang diperlukan oleh tugas-tugas berjalan
pada hos tidak melebihi bilangan teras yang tersedia pada hos tersebut.
Untuk menjadikan proses ini lebih cekap, pegasus-mpi-cluster menyokong berasaskan sumber
penjadualan. Dalam penjadualan berasaskan sumber, tugas dalam aliran kerja boleh menentukan berapa banyak
memori dan berapa banyak CPU yang mereka perlukan, dan pegasus-mpi-cluster akan menjadualkannya supaya
tugas yang dijalankan pada hos tertentu tidak melebihi jumlah memori fizikal dan CPU
tersedia. Ini membolehkan pegasus-mpi-cluster untuk memanfaatkan semua CPU yang ada
apabila keperluan memori tugasan rendah, tetapi juga melumpuhkan beberapa CPU apabila tugasan
keperluan ingatan adalah lebih tinggi. Ia juga membolehkan aliran kerja dengan campuran teras tunggal dan
tugas berbilang teras untuk dilaksanakan pada kumpulan heterogen.
Jika tiada hos tersedia yang mempunyai memori dan CPU yang mencukupi untuk melaksanakan salah satu daripada
tugasan dalam aliran kerja, maka aliran kerja itu dibatalkan.
Memori
Pengguna boleh menentukan kedua-dua jumlah memori yang diperlukan setiap tugas, dan jumlah memori
tersedia setiap hos. Jika jumlah memori yang diperlukan oleh mana-mana tugas melebihi yang tersedia
ingatan semua hos, maka aliran kerja akan dibatalkan. Secara lalai, memori hos ialah
ditentukan secara automatik, walau bagaimanapun pengguna boleh menentukan --hos-memori untuk "berbohong" kepada
pegasus-mpi-cluster. Jumlah memori yang diperlukan untuk setiap tugasan dinyatakan dalam DAG
menggunakan -m/--permintaan-ingatan hujah (lihat DAG Fail).
CPU
Pengguna boleh menentukan bilangan CPU yang diperlukan setiap tugas, dan jumlah bilangan CPU
tersedia pada setiap hos. Jika bilangan CPU yang diperlukan oleh sesuatu tugas melebihi yang tersedia
CPU pada semua hos, maka aliran kerja akan dibatalkan. Secara lalai, bilangan CPU pada a
hos ditentukan secara automatik, tetapi pengguna boleh menentukan --host-cpus kepada lebih- atau
kurang melanggan hos. Bilangan CPU yang diperlukan untuk setiap tugasan dinyatakan dalam
DAG menggunakan -c/--permintaan-cpus hujah (lihat DAG Fail).
I / O HADAPAN
Dalam aliran kerja yang mempunyai banyak tugas kecil adalah perkara biasa bagi I/O yang ditulis oleh tugasan tersebut
menjadi sangat kecil. Sebagai contoh, aliran kerja mungkin mempunyai 10,000 tugasan yang setiap satu menulis beberapa KB
daripada data. Biasanya setiap tugasan menulis ke failnya sendiri, menghasilkan 10,000 fail. I/O ini
corak sangat tidak cekap pada banyak sistem fail selari kerana ia memerlukan fail
sistem untuk mengendalikan sejumlah besar operasi metadata, yang merupakan hambatan dalam banyak
sistem fail selari.
Salah satu cara untuk menangani masalah ini ialah dengan membuat semua 10,000 tugasan menulis ke satu fail. The
masalah dengan pendekatan ini ialah ia memerlukan tugas tersebut untuk menyegerakkan akses mereka kepada
fail menggunakan kunci POSIX atau beberapa mekanisme pengecualian bersama yang lain. Jika tidak, yang menulis
daripada tugasan yang berbeza boleh disilang dalam susunan sewenang-wenangnya, mengakibatkan data tidak boleh digunakan.
Untuk menangani kes penggunaan ini, PMC melaksanakan ciri yang kami panggil "Pemajuan I/O".
Pemajuan I/O membolehkan setiap tugasan dalam tugas PMC menulis data kepada nombor sewenang-wenangnya
berkongsi fail dengan cara yang selamat. Ia melakukan ini dengan meminta pekerja PMC memproses mengumpul data
ditulis oleh tugas dan menghantarnya melalui rangkaian berkelajuan tinggi menggunakan pemesejan MPI ke
proses induk PMC, di mana ia ditulis pada fail output. Dengan mempunyai satu proses (the
proses induk PMC) tulis ke fail semua I/O daripada banyak tugas selari boleh
disegerakkan dan ditulis ke fail dengan selamat.
Terdapat dua cara berbeza untuk menggunakan pemajuan I/O dalam PMC: paip dan fail. Paip lebih banyak
cekap, tetapi fail lebih mudah digunakan.
I / O penghantaran menggunakan paip
Pemajuan I/O dengan paip berfungsi dengan meminta pekerja PMC memproses mengumpul data daripada setiap tugas
menggunakan paip UNIX. Pendekatan ini lebih cekap daripada pendekatan berasaskan fail, tetapi ia
memerlukan kod tugasan ditukar supaya tugasan menulis ke paip dan bukannya
fail biasa.
Untuk menggunakan pemajuan I/O tugas PMC hanya perlu menentukan -f/--paip-ke hadapan
argumen untuk menentukan nama fail untuk memajukan data, dan nama fail
pembolehubah persekitaran yang melaluinya proses pekerja PMC boleh memaklumkan fail tersebut
deskriptor untuk paip.
Sebagai contoh, jika terdapat tugas "mytask" yang perlu memajukan data ke dua fail:
"myfile.a" dan "myfile.b", ia akan kelihatan seperti ini:
TASK mytask -f A=/tmp/myfile.a -f B=/tmp/myfile.b /bin/mytask
Apabila proses /bin/mytask bermula, ia akan mempunyai dua pembolehubah dalam persekitarannya: "A=3"
dan "B=4", sebagai contoh. Nilai pembolehubah ini ialah nombor deskriptor fail bagi
fail yang sepadan. Dalam kes ini, jika tugas itu mahu menulis kepada "/tmp/myfile.a", tugas itu akan diterima
nilai pembolehubah persekitaran "A", dan panggilan write() pada nombor deskriptor itu. Dalam C
kod untuk itu kelihatan seperti ini:
char *A = getenv("A");
int fd = atoi(A);
char *message = "Helo, Dunia\n";
tulis(fd, mesej, strlen(mesej));
Dalam sesetengah bahasa pengaturcaraan adalah tidak mungkin untuk menulis kepada deskriptor fail secara langsung.
Fortran, sebagai contoh, merujuk kepada fail mengikut nombor unit dan bukannya menggunakan deskriptor fail. Dalam
bahasa ini anda boleh memautkan fungsi CI/O ke dalam binari anda dan memanggilnya daripada
rutin yang ditulis dalam bahasa lain, atau anda boleh membuka fail khas dalam Linux / proc
sistem fail untuk mendapatkan pemegang lain ke paip yang anda ingin akses. Untuk yang terakhir, fail
anda harus membuka "/proc/self/fd/NUMBER" di mana NUMBER ialah nombor deskriptor fail anda
diperoleh daripada pembolehubah persekitaran. Untuk contoh di atas, paip untuk myfile.a
(pembolehubah persekitaran A) ialah "/proc/self/fd/3".
Jika anda menggunakan pegasus-kickstart, yang mungkin berlaku jika anda menggunakan PMC untuk a
Aliran kerja Pegasus, maka terdapat helah yang boleh anda lakukan untuk mengelakkan pengubahsuaian kod anda. awak guna
yang / proc sistem fail, seperti yang diterangkan di atas, tetapi anda membiarkan pegasus-kickstart mengendalikan laluan
pembinaan. Sebagai contoh, jika aplikasi anda mempunyai hujah, -o, yang membolehkan anda
tentukan fail output maka anda boleh menulis tugas anda seperti ini:
TASK mytask -f A=/tmp/myfile.a /bin/pegasus-kickstart /bin/mytask -o /proc/self/fd/$A
Dalam kes ini, pegasus-kickstart akan menggantikan $A dalam argumen aplikasi anda dengan
nombor deskriptor fail yang anda mahukan. Kod anda boleh membuka laluan itu seperti biasa, menulis kepadanya dan
kemudian tutupnya seolah-olah ia adalah fail biasa.
I / O penghantaran menggunakan fail
Pemajuan I/O dengan fail berfungsi dengan meminta tugas menulis data dalam fail pada cakera setempat.
Proses pekerja PMC membaca fail ini dan memajukan data kepada induk di mana ia boleh
ditulis ke fail output yang dikehendaki. Pendekatan ini mungkin kurang cekap daripada menggunakan
paip kerana ia melibatkan sistem fail, yang mempunyai lebih banyak overhed daripada paip.
Pemajuan fail boleh didayakan dengan memberikan -F/--fail-ke hadapan hujah kepada tugas.
Berikut adalah contoh:
TASK mytask -F /tmp/foo.0=/scratch/foo /bin/mytask -o /tmp/foo.0
Dalam kes ini, proses pekerja akan menjangkakan untuk mencari fail /tmp/foo.0 apabila mytask keluar
dengan jayanya. Ia membaca data daripada fail itu dan menghantarnya kepada induk untuk ditulis
penghujung /gores/foo. Selepas /tmp/foo.0 dibaca ia akan dipadamkan oleh pekerja
proses.
Pendekatan ini berfungsi paling baik pada sistem di mana cakera tempatan adalah sistem fail RAM seperti Cray
mesin XT. Sebagai alternatif, tugas itu boleh digunakan /dev/shm pada gugusan Linux biasa. Ia mungkin
juga berfungsi dengan cekap pada cakera tempatan jika cache sistem fail dapat
menyerap semua bacaan dan tulis.
I / O penghantaran peringatan
Apabila menggunakan pemajuan I/O adalah penting untuk mempertimbangkan beberapa kaveat.
Pertama, jika kerja PMC gagal atas apa-apa sebab (termasuk apabila aliran kerja dibatalkan untuk
melanggar --masa-dinding-maks), maka fail yang mengandungi I/O yang dimajukan mungkin rosak. mereka
boleh termasuk separa rekod, bermakna hanya sebahagian daripada I/O daripada satu atau lebih tugasan adalah
bertulis, dan mereka boleh memasukkan salinan rekod, bermakna bahawa I/O telah ditulis, tetapi
Kerja PMC gagal sebelum tugasan itu boleh ditandakan sebagai berjaya, dan aliran kerja telah berjaya
dimulakan semula kemudian. Kami tidak membuat jaminan tentang kandungan fail data dalam kes ini.
Terpulang kepada kod yang membaca fail untuk a) mengesan dan b) pulih daripada masalah tersebut.
Untuk menghapuskan pendua, rekod harus termasuk pengecam unik, dan untuk menghapuskan
separa rekod hendaklah mengandungi jumlah semak.
Kedua, anda tidak seharusnya menggunakan pemajuan I/O jika tugas anda akan menulis banyak data
fail. Kerana pekerja PMC sedang membaca data dari paip/fail ke dalam memori dan menghantar
dalam mesej MPI, jika anda menulis terlalu banyak, maka proses pekerja akan menjalankan sistem
Lupa. Selain itu, semua data perlu dimuatkan dalam satu mesej MPI. Dalam penghantaran paip
tiada had keras pada saiz, tetapi dalam penghantaran fail hadnya ialah 1MB. Kami belum
menanda aras prestasi pada I/O besar, tetapi sesuatu yang lebih besar daripada kira-kira 1 MB mungkin
terlalu banyak. Walau apa pun, jika data anda lebih besar daripada 1MB, maka pemajuan I/O mungkin tidak akan berlaku
mempunyai banyak manfaat prestasi.
Ketiga, I/O tidak ditulis pada fail jika tugas itu mengembalikan kod keluar bukan sifar. Kami
anggap bahawa jika tugas itu gagal bahawa anda tidak mahu data yang dihasilkannya.
Keempat, data daripada tugasan yang berbeza tidak disilang. Semua data yang ditulis oleh a
tugasan yang diberikan akan muncul secara berurutan dalam fail output. Ambil perhatian bahawa anda masih boleh mendapatkan
rekod separa, walau bagaimanapun, jika mana-mana data daripada tugasan muncul, ia tidak akan dipecahkan antara
julat bukan bersebelahan dalam fail output. Jika anda mempunyai 3 tugasan yang menulis: "Saya adalah tugas" anda
boleh dapat:
Saya adalah tugasSaya adalah tugasSaya adalah tugas
dan:
Saya adalah tugasSaya adalah tugas
tetapi tidak:
Saya adalah tugasSaya adalah tugas tugas
Kelima, data daripada tugas yang berbeza muncul dalam susunan sewenang-wenangnya dalam fail output. Ia bergantung
atas perintah apakah tugas-tugas itu dilaksanakan oleh PMC, yang mungkin sewenang-wenangnya jika tidak ada
pergantungan antara tugas. Data yang ditulis hendaklah mengandungi maklumat yang mencukupi
bahawa anda boleh menentukan tugas yang menghasilkannya jika anda memerlukannya. PMC tidak
tambahkan sebarang pengepala atau treler pada data.
Keenam, tugas hanya akan ditandakan sebagai berjaya jika semua I/Onya berjaya
bertulis. Jika aliran kerja berjaya diselesaikan, maka I/O dijamin telah
bertulis.
Ketujuh, jika tuan tidak dapat menulis ke fail output atas sebarang sebab (cth
master cuba menulis I/O ke fail destinasi, tetapi panggilan write() mengembalikan a
ralat) maka tugas itu ditandakan sebagai gagal walaupun tugas itu menghasilkan kod keluar bukan sifar. Dalam
dengan kata lain, anda mungkin mendapat rekod permulaan bukan sifar walaupun PMC menandakan tugas itu gagal.
Kelapan, paip adalah tulis sahaja. Jika anda perlu membaca dan menulis data daripada fail yang anda
harus menggunakan penghantaran fail dan bukan penghantaran paip.
Kesembilan, semua fail dibuka oleh induk dalam mod tambah. Ini supaya, jika aliran kerja
gagal dan perlu dimulakan semula, atau jika tugasan gagal dan dicuba semula, data yang telah
ditulis sebelum ini tidak hilang. PMC tidak pernah memotong fail. Ini adalah salah satu sebabnya
mengapa anda boleh mempunyai rekod separa dan rekod pendua dalam fail output.
Akhir sekali, dalam pemajuan fail, fail output dialih keluar apabila tugas keluar. Kamu tidak boleh
bergantung pada fail untuk berada di sana apabila tugas seterusnya berjalan walaupun anda menulisnya ke fail kongsi
sistem.
MISC
Sumber Penggunaan
Pada akhir larian aliran kerja, tuan akan melaporkan penggunaan sumber
pekerjaan. Ini dilakukan dengan menambah jumlah masa jalan semua tugas yang dilaksanakan (termasuk
tugas yang gagal) dan membahagikan dengan jumlah masa dinding bagi masa kerja N, di mana N ialah kedua-duanya
jumlah bilangan proses termasuk tuan, dan jumlah pekerja. dua ini
nilai penggunaan sumber disediakan supaya pengguna boleh mendapatkan idea tentang bagaimana
cekap mereka menggunakan sumber yang mereka peruntukkan. Penggunaan sumber yang rendah
nilai mencadangkan bahawa pengguna harus menggunakan lebih sedikit teras, dan masa dinding yang lebih lama, pada masa hadapan,
manakala nilai penggunaan sumber yang tinggi mencadangkan bahawa pengguna boleh menggunakan lebih banyak teras untuk
masa hadapan dan dapatkan masa dinding yang lebih singkat.
DIKENALI ISU
garpu () and exec ()
Agar pekerja memproses untuk memulakan tugas pada nod pengiraan, nod pengiraan
mesti menyokong garpu () and exec () panggilan sistem. Jika mesin sasaran anda berjalan a
OS yang dilucutkan pada nod pengiraan yang tidak menyokong panggilan sistem ini, kemudian
pegasus-mpi-cluster tidak akan berjaya.
CPU Penggunaan
Banyak pelaksanaan MPI dioptimumkan supaya mesej yang dihantar dan diterima sibuk menunggu
(iaitu mereka berputar/meninjau pada mesej yang dihantar atau diterima dan bukannya tidur). Alasannya ialah
tidur itu menambah overhed dan, kerana banyak sistem HPC menggunakan perkongsian ruang pada khusus
perkakasan, tidak ada proses lain yang bersaing, jadi berputar dan bukannya tidur boleh
menghasilkan prestasi yang lebih baik. Pada pelaksanaan tersebut, proses MPI akan berjalan pada 100% CPU
penggunaan walaupun mereka hanya menunggu mesej. Ini adalah masalah besar untuk multicore
tugasan dalam pegasus-mpi-cluster kerana slot terbiar menggunakan sumber CPU. Untuk menyelesaikan
masalah ini pegasus-mpi-cluster proses tidur untuk tempoh yang singkat antara pemeriksaan untuk
mesej menunggu. Ini mengurangkan beban dengan ketara, tetapi menyebabkan kelewatan yang singkat
menerima mesej. Jika anda menggunakan pelaksanaan MPI yang tidur pada hantar mesej dan
terima daripada sibuk menunggu, maka anda boleh melumpuhkan tidur dengan menyatakan
--tiada-tidur-di-recv pilihan. Perhatikan bahawa tuan akan sentiasa tidur jika --masa-dinding-maks is
ditentukan kerana tiada cara untuk mengganggu atau menamatkan panggilan menyekat dalam MPI
(cth SIGALRM tidak menyebabkan MPI_Recv mengembalikan EINTR).
PERSEKITARAN PELBAGAI
Pembolehubah persekitaran di bawah adalah alias untuk pilihan baris arahan. Jika persekitaran
pembolehubah hadir, maka ia digunakan sebagai lalai untuk pilihan yang berkaitan. Jika kedua-duanya
hadir, maka pilihan baris arahan digunakan.
PMC_HOST_SCRIPT
Alias untuk --host-skrip pilihan.
PMC_HOST_MEMORY
Alias untuk --hos-memori pilihan.
PMC_HOST_CPUS
Alias untuk --host-cpus pilihan.
PMC_MAX_WALL_TIME
Alias untuk --masa-dinding-maks pilihan.
Gunakan pegasus-mpi-cluster dalam talian menggunakan perkhidmatan onworks.net