InggrisPerancisSpanyol

favorit OnWorks

mpy.mpich2 - Online di Awan

Jalankan mpy.mpich2 di penyedia hosting gratis OnWorks melalui Ubuntu Online, Fedora Online, emulator online Windows atau emulator online MAC OS

Ini adalah perintah mpy.mpich2 yang dapat dijalankan di penyedia hosting gratis OnWorks menggunakan salah satu dari beberapa workstation online gratis kami seperti Ubuntu Online, Fedora Online, emulator online Windows atau emulator online MAC OS

PROGRAM:

NAMA


mpy - Melewati Pesan Yorick

RINGKASAN


mpirun -np mp_size mpy [ -J pfile1.i [ -J pfile2.i [ ... ]]] [ -Saya file1.i [ -Saya file2.i [
... ]]]
mpirun -np mp_size mpy -kelompok file.i

DESKRIPSI


yorick adalah bahasa yang ditafsirkan seperti Basic atau Lisp, tetapi jauh lebih cepat. Lihat Yorick (1) ke
pelajari lebih lanjut tentang itu.
Mpy adalah versi paralel dari yorick berbasis Message Passing Interface (MPI). NS
sintaks yang tepat untuk meluncurkan pekerjaan paralel tergantung pada lingkungan MPI Anda. Itu mungkin
diperlukan untuk meluncurkan daemon khusus sebelum memanggil mirun atau perintah yang setara.

Penjelasan
Paket mpy menghubungkan yorick ke pustaka pemrograman paralel MPI. MPI singkatan dari
Antarmuka Penyampaian Pesan; idenya adalah untuk menghubungkan beberapa contoh yorick itu
berkomunikasi di antara mereka sendiri melalui pesan. Mpy dapat melakukan yang sederhana, sangat paralel
tugas sebagai program yang ditafsirkan murni, atau dapat memulai dan mengarahkan kompilasi yang kompleks secara sewenang-wenang
paket yang gratis untuk menggunakan API MPI yang dikompilasi. API yang ditafsirkan tidak dimaksudkan
menjadi pembungkus MPI; sebaliknya itu dilucuti ke minimum.

Ini adalah versi 2 mpy (dirilis pada 2010); itu tidak kompatibel dengan versi 1 mpy
(dirilis pada pertengahan 1990-an), karena versi 1 memiliki banyak kekurangan desain sehingga sangat
sulit untuk menulis program yang bebas dari kondisi balapan, dan tidak mungkin untuk menskalakan hingga jutaan
dari prosesor. Namun, Anda dapat menjalankan sebagian besar program mpy versi 1 di bawah versi 2 dengan melakukan
mp_include,"mpy1.i" sebelum Anda mp_include file apa pun yang mendefinisikan tugas paralel mpy1 (yaitu
sebelum file apa pun yang berisi panggilan ke mp_task.)

penggunaan catatan
Lingkungan MPI tidak benar-benar ditentukan oleh standar; lingkungan yang ada adalah
sangat kasar, dan sangat menyukai pekerjaan batch non-interaktif. Banyaknya proses adalah
diperbaiki sebelum MPI dimulai; setiap proses memiliki peringkat, angka dari 0 hingga satu kurang dari
jumlah proses. Anda menggunakan peringkat sebagai alamat untuk mengirim pesan, dan prosesnya
menerima pesan dapat menyelidiki untuk melihat peringkat mana yang telah mengirim pesan ke sana, dan tentu saja
menerima pesan-pesan itu.

Masalah utama dalam menulis program penyampaian pesan adalah menangani peristiwa atau pesan
tiba dalam urutan yang tidak direncanakan. MPI hanya menjamin bahwa urutan pesan yang dikirim oleh
rank A sampai rank B akan sampai sesuai urutan yang dikirim. Tidak ada jaminan tentang pesanan
kedatangan pesan tersebut relatif terhadap pesan yang dikirim ke B dari peringkat ketiga C. In
tertentu, misalkan A mengirim pesan ke B, maka A mengirim pesan ke C (atau bahkan bertukar
beberapa pesan dengan C) yang mengakibatkan C mengirim pesan ke B. Pesan dari C
mungkin tiba di B sebelum pesan dari A. Program MPI yang tidak memungkinkan untuk ini
kemungkinan memiliki bug yang disebut "kondisi balapan". Kondisi ras mungkin sangat halus,
terutama ketika jumlah proses besar.

Antarmuka dasar mpy yang ditafsirkan terdiri dari dua variabel:
mp_size = jumlah proses
mp_rank = peringkat proses ini dan empat fungsi:
mp_send, ke, pesan; // kirim pesan ke peringkat "ke"
pesan = mp_recv(dari); // menerima pesan dari peringkat "dari"
peringkat = mp_probe(blok); // menanyakan pengirim pesan yang tertunda
mp_exec, string; // mengurai dan mengeksekusi string pada setiap peringkat

Anda memanggil mp_exec pada peringkat 0 untuk memulai tugas paralel. Ketika program utama dibuat
selesai, semua peringkat selain peringkat 0 kembali ke putaran idle, menunggu yang berikutnya
mp_exec. Peringkat 0 mengambil jalur input berikutnya dari stdin (yaitu, menunggu input pada
prompt dalam sesi interaktif), atau menghentikan semua proses jika tidak ada lagi input
tersedia dalam sesi batch.

Paket mpy memodifikasi cara yorick menangani #include parser directive, dan include
dan membutuhkan fungsi. Yaitu, jika tugas paralel sedang berjalan (yaitu, fungsi dimulai
oleh mp_exec), ini semua menjadi operasi kolektif. Artinya, peringkat 0 membaca keseluruhan
isi file, dan mengirimkan konten ke proses lain sebagai pesan MPI (seperti
mp_exec dari isi file). Setiap proses selain peringkat 0 hanya berjalan selama
tugas paralel; di luar tugas paralel ketika hanya peringkat 0 yang berjalan (dan semua peringkat lainnya
sedang menunggu mp_exec berikutnya), #include direktif dan sertakan dan butuhkan
fungsi kembali ke operasi serial biasanya, hanya mempengaruhi peringkat 0.

Saat mpy dimulai, itu dalam mode paralel, sehingga semua file yorick termasuk saat itu
dimulai (file di Y_SITE/i0) disertakan sebagai operasi kolektif. Tanpa ini
fitur, setiap proses yorick akan mencoba membuka dan membaca startup termasuk file,
membebani sistem file sebelum mpy dimulai. Melewati konten ini
file sebagai pesan MPI adalah satu-satunya cara untuk memastikan ada cukup bandwidth untuk setiap
proses untuk membaca isi dari satu file.

File terakhir yang disertakan saat startup adalah file yang ditentukan dalam opsi -batch, atau
file custom.i. Untuk menghindari masalah dengan kode di custom.i yang mungkin tidak aman untuk
eksekusi paralel, mpy tidak mencari custom.i, tetapi untuk custommp.i sebagai gantinya. NS
instruksi dalam file -batch atau di custommp.i dieksekusi dalam mode serial pada peringkat 0
hanya. Demikian pula, mpy menimpa fungsi process_argv biasa, sehingga -i dan lainnya
opsi baris perintah diproses hanya pada peringkat 0 dalam mode serial. Niat dalam semua ini
case adalah membuat -batch atau custommp.i atau -i include file hanya dieksekusi pada peringkat 0, as
jika Anda telah mengetiknya di sana secara interaktif. Anda bebas menelepon mp_exec dari semua ini
file untuk memulai tugas paralel, tetapi file itu sendiri adalah serial.

Opsi baris perintah tambahan ditambahkan ke set biasa:
mpy -j file.i
menyertakan somefile.i dalam mode paralel di semua peringkat (sekali lagi, -i other.i hanya menyertakan other.i
pada peringkat 0 dalam mode serial). Jika ada beberapa opsi -j, paralelnya termasuk terjadi
dalam urutan baris perintah. Jika opsi -j dan -i dicampur, bagaimanapun, semua -j termasuk terjadi
sebelum -i termasuk.

Sebagai efek samping dari kerumitan fungsi include dalam mpy, fitur autoload adalah
dengan disabilitas; jika kode Anda benar-benar memicu penyertaan dengan memanggil fungsi yang dimuat secara otomatis, mpy
akan berhenti dengan kesalahan. Anda harus secara eksplisit memuat fungsi apa pun yang diperlukan untuk paralel
tugas yang menggunakan fungsi require memanggil diri mereka sendiri di dalam tugas paralel.

Fungsi mp_send dapat mengirim array yorick numerik apa pun (ketik char, short, int, long,
float, double, atau kompleks), atau nilai string skalar. Proses pengiriman pesan
via MPI hanya mempertahankan jumlah elemen, jadi mp_recv hanya menghasilkan nilai skalar atau
array nilai 1D, apa pun dimensi yang diteruskan ke mp_send.

Fungsi mp_recv mengharuskan Anda menentukan pengirim pesan yang Anda maksud
menerima. Itu memblokir sampai sebuah pesan benar-benar datang dari pengirim itu, mengantri apa pun
pesan dari pengirim lain yang mungkin tiba sebelumnya. Pesan antrian akan
mengambilnya pesanan yang diterima saat Anda memanggil mp_recv untuk pengirim yang cocok. NS
fitur antrian membuatnya lebih mudah untuk menghindari jenis kondisi balapan yang paling sederhana
ketika Anda menulis program paralel yang ditafsirkan.

Fungsi mp_probe mengembalikan daftar semua pengirim pesan antrian (atau nihil jika
antrian kosong). Panggilan mp_probe(0) untuk segera kembali, bahkan jika antrian kosong.
Memanggil mp_probe(1) untuk memblokir jika antrian kosong, kembali hanya ketika setidaknya satu pesan
tersedia untuk mp_recv. Panggilan mp_probe(2) untuk memblokir sampai pesan baru tiba, meskipun
beberapa pesan saat ini tersedia.

Fungsi mp_exec menggunakan fanout logaritmik - peringkat 0 dikirim ke proses F, masing-masing dari
yang mengirim ke F lebih, dan seterusnya, sampai semua proses memiliki pesan. Sekali proses
menyelesaikan semua operasi pengirimannya, ia mem-parsing dan mengeksekusi isi pesan.
Algoritme fanout mencapai N proses dalam log ke basis F dari N langkah. Proses F
rank 0 dikirim ke rank 1, 2, 3, ..., F. Secara umum, proses dengan rank r dikirim ke
peringkat r*F+1, r*F+2, ..., r*F+F (bila ini kurang dari N-1 untuk N proses). set ini
disebut "staf" peringkat r. Peringkat dengan r>0 menerima pesan dari peringkat (r-1)/F,
yang disebut "bos" dari r. Panggilan mp_exec bekerja sama dengan antrian mp_recv;
dengan kata lain, pesan dari peringkat selain bos selama fanout mp_exec akan menjadi
antri untuk pengambilan nanti oleh mp_recv. (Tanpa fitur ini, tugas paralel apa pun yang
menggunakan pola pesan selain fanout logaritmik akan rentan terhadap ras
kondisi.)

Fanout logaritmik dan ekuivalen dalamnya sangat berguna sehingga mpy menyediakan pasangan
fungsi tingkat yang lebih tinggi yang menggunakan pola fanout yang sama dengan mp_exec:
mp_handout, pesan;
total = mp_handin(nilai);
Untuk menggunakan mp_handout, peringkat 0 menghitung pesan, lalu semua peringkat memanggil mp_handout, yang mengirim pesan
(output pada semua peringkat selain 0) di mana-mana dengan fanout yang sama dengan mp_exec. Menggunakan
mp_handin, setiap proses menghitung nilai, lalu memanggil mp_handin, yang mengembalikan jumlah
nilai mereka sendiri dan semua staf mereka, sehingga pada peringkat 0 mp_handin mengembalikan jumlah
nilai dari setiap proses.

Anda dapat memanggil mp_handin sebagai fungsi tanpa argumen untuk bertindak sebagai sinkronisasi; Kapan
peringkat 0 berlanjut setelah panggilan seperti itu, Anda tahu bahwa setiap peringkat lainnya telah mencapai titik itu.
Semua tugas paralel (apa pun yang dimulai dengan mp_exec) harus diselesaikan dengan panggilan ke mp_handin,
atau jaminan yang setara bahwa semua proses telah kembali ke status siaga saat tugas
finis di peringkat 0.

Anda dapat mengambil atau mengubah parameter fanout F menggunakan fungsi mp_nfan. Standarnya
nilainya adalah 16, yang seharusnya masuk akal bahkan untuk jumlah proses yang sangat besar.

Satu tugas paralel khusus disebut mp_connect, yang dapat Anda gunakan untuk memberi makan yang ditafsirkan
baris perintah ke peringkat non-0, sementara semua peringkat lainnya tidak digunakan. Peringkat 0 duduk di a
loop membaca keyboard dan mengirim baris ke peringkat "terhubung", yang dieksekusi
mereka, dan mengirimkan pengakuan kembali ke peringkat 0. Anda menjalankan fungsi mp_disconnect ke
selesaikan tugas paralel dan turun kembali ke peringkat 0.

Akhirnya, catatan tentang pemulihan kesalahan. Jika terjadi kesalahan selama tugas paralel,
mpy mencoba untuk keluar dari mp_exec dengan anggun, sehingga ketika peringkat 0, kembali, semua peringkat lainnya
diketahui menganggur, siap untuk mp_exec berikutnya. Prosedur ini akan hang selamanya jika ada
salah satu proses berada dalam loop tak terbatas, atau sebaliknya dalam keadaan di mana ia tidak akan pernah
panggil mp_send, mp_recv, atau mp_probe, karena MPI tidak menyediakan sarana untuk mengirim sinyal yang
menginterupsi semua proses. (Ini adalah salah satu cara di mana lingkungan MPI adalah
"mentah".) Proses peringkat 0 dibiarkan dengan peringkat proses pertama yang melaporkan
kesalahan, ditambah hitungan jumlah proses yang rusak karena alasan selain karena
mengirim pesan bahwa peringkat lain telah salah. Proses kesalahan pertama bisa masuk dbug
modus melalui mp_connect; gunakan mp_disconnect atau dbexit untuk kembali ke mode serial pada peringkat 0.

Opsi
-j file.i termasuk file sumber Yorick file.i saat mpy dimulai dalam mode paralel
di semua jajaran. Ini setara dengan fungsi mp_include setelah mpy
telah dimulai.

-i file.i termasuk file sumber Yorick file.i saat mpy dimulai, dalam mode serial.
Ini setara dengan arahan #include setelah mpy dimulai.

-kelompok file.i termasuk file sumber Yorick file.i saat mpy dimulai, dalam mode serial.
File kustomisasi Anda custommp.i, jika ada, adalah tidak baca, dan mpy adalah
ditempatkan dalam mode batch. Gunakan perintah bantuan pada fungsi batch
(bantuan, batch) untuk mengetahui lebih lanjut tentang mode batch. Dalam mode batch, semua
kesalahan fatal; biasanya, mpy akan menghentikan eksekusi dan menunggu lagi
masukan setelah kesalahan.

Gunakan mpy.mpich2 online menggunakan layanan onworks.net


Server & Workstation Gratis

Unduh aplikasi Windows & Linux

Perintah Linux

  • 1
    4g8
    4g8
    4g8 - Pengambilan Paket dan Intersepsi
    untuk Jaringan yang Dialihkan ...
    Jalankan 4g8
  • 2
    4s-adminJ
    4s-adminJ
    4s-admin � Manajemen cluster 4store
    alat ...
    Jalankan 4s-adminJ
  • 3
    percaya
    percaya
    creduce - peredam program C dan C++
    DESKRIPSI: creduce 2.5.0 (tidak diketahui) --
    program C dan C++ reducer C-Reduce
    membutuhkan "tes ketertarikan" dan
    satu atau ...
    Jalankan creduce
  • 4
    menyeramkan
    menyeramkan
    CREEPY - Informasi geolokasi
    DESKRIPSI agregator: menyeramkan adalah
    aplikasi yang memungkinkan Anda untuk berkumpul
    informasi terkait geolokasi tentang
    pengguna dari ...
    Jalankan menyeramkan
  • 5
    g.gisenvgrass
    g.gisenvgrass
    g.gisenv - Mengeluarkan dan memodifikasi
    pengaturan variabel GRASS pengguna saat ini.
    Mencetak semua variabel GRASS yang ditentukan jika tidak ada
    pilihan diberikan. KATA KUNCI: umum,
    mengatur...
    Jalankan g.gisenvgrass
  • 6
    g.guigrass
    g.guigrass
    g.gui - Meluncurkan pengguna grafis GRASS
    sesi antarmuka (GUI). Opsional
    memperbarui pengaturan antarmuka pengguna default.
    KATA KUNCI: umum, GUI, antarmuka pengguna ...
    Jalankan g.guigrass
  • Lebih banyak lagi »

Ad