Message Passing Interface
Message Passing Interface
Interface
Message-Passing Programming
menggunakan User-level
Message-Passing Libraries
Diperlukan dua mekanisme utama:
Source Source
file file
Executable
Source
file
Basic MPI way
Compile untuk menyesuaikan
dengan prosesor
Executables
Mulai eksekusi
spawn(); proses 2 Proses 2
Waktu
Basic “point-to-point”
Send and Receive Routines
Passing message antar proseses dengan
menggunakan send() and recv() library calls:
Proses 1 Proses 2
x y
Pergerakan
send(&x, 2); data
recv(&y, 1);
Waktu recv();
send();
Request to send Proses
Kedua proses Message dihentikan
berlanjut Acknowledgement
Proses 1 Proses 2
Proses 1 Proses 2
x y
Perpindahan
send(&x,2,5;) data
recv(&y,1,5)
Action
buf
MPI form
Scatter
Mengirim setiap elemen arry di proses
root ke proses yang terpisah. Isi lokasi
ke-i dikirim ke proses ke-i.
Action
buf
MPI form
Gather
Action
buf
MPI form
Reduce
Operasi Gather dikombinasikan dengan
operasi aritmetik/logika.
Action
buf
+
MPI form
PVM
(Parallel Virtual Machine)
Mungkin merupakan usaha pertama yang diadopsi secara luas
dalam menggunakan workstation cluster sebagai multicomputer
platform, dikembangkan oleh Oak Ridge National Laboratories.
Tersedia gratis.
Wor kstation
PVM
Bisa lebih dari satu proses daemon
berjalan pada tiap komputer . Program
aplikasi
r
(ex ecutab le)
Messages
sent through
Wor kstation network
Wor kstation
PVM
daemon
Program
aplikasi PVM
(executab le) daemon
Program
aplikasi
r
(ex ecutab le)
Implementasi MPI yang digunakan hampir sama .
MPI
(Message Passing Interface)
if (myrank == 0)
master();
else
slave();
.
.
MPI_Finalize();
}
Proses 0 Proses 1
send(…,1,…);
lib() send(…,1,…);
(b) Yang bisa terjadi recv(…,0,…); lib()
recv(…,0,…);
Solusi MPI
“Communicator”
• Mendefinisikan domain komunikasi – satu set
proses yang boleh berkomunikasi antar mereka
sendiri.
if (myrank == 0) {
int x;
MPI_Send(&x, 1, MPI_INT, 1, msgtag, MPI_COMM_WORLD);
} else if (myrank == 1) {
int x;
MPI_Recv(&x, 1, MPI_INT, 0,msgtag,MPI_COMM_WORLD,status);
}
MPI Nonblocking Routines
MPI_Isend(buf,count,datatype,dest,tag,comm,request)
MPI_Irecv(buf,count,datatype,source,tag,comm, request)
tp = tcomp + tcomm
Waktu Komputasi
Hitung jumlah langkah komputasi.
Jika ada lebih dari satu proses yang dieksekusi secara simultan,
hitung jumlah langkah komputasi proses yang paling kompleks.
Umumnya, merupakan fungsi dari n dan p, yaitu
tcomp = f (n, p)
Waktu Startup
Proses 1
Proses 2
Proses 3
Computing Waktu
W aiting
Message-passing system routine
Message
Implementasi visualization tools tersedia untuk MPI.
http://www.cs.uncc.edu/par_prog
• Set up paths
• Buat struktur direktori yang dibutuhkan
• Buat file (hostfile) listing machines untuk
digunakan (required)
Contoh hostfile
ws404
#is-sm1 //Currently not executing, commented
pvm1 //Active processors, UNCC sun cluster called pvm1 - pvm8
pvm2
pvm3
pvm4
pvm5
pvm6
pvm7
pvm8
Kompilasi/eksekusi program MPI (SPMD)
Untuk LAM MPI versi 6.5.2. Pada command line:
Contoh
1 master dan 2 slave, “appfile” berisi
n0 master
n0-1 slave
Untuk eksekusi:
mpirun -v appfile
Sample output
3292 master running on n0 (o)
3296 slave running on n0 (o)
412 slave running on n1