Professional Documents
Culture Documents
Oleh :
I Gede Wahyu Pramartha 1008605008
PROGRAM STUDI TEKNIK INFORMATIKA JURUSAN ILMU KOMPUTER FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM UNIVERSITAS UDAYANA 2013
Message Passing Interface (MPI) MPI adalah bahasa independen untuk protokol komunikasi yang digunakan program parallel pada computer (Agus Kurniawan, 2010). MPI bukan bahasa dan semua operasi MPI dinyatakan sebagai fungsi atau metode, menurut bahasa yang sesuai, untuk C dan Fortran merupakan bagian dari standar MPI. Realisasi MPI dapat banyak sekali tergantung bahasa pemrograman yang digunakan. Komunitas MPI dapat dijumpai di http://www.mpi-forum.org/.
Secara umum, pemrograman parallel menggunakan spesifikasi MPI membutuhkan tiga tahapan. Hal ini terlepas dari kebutuhan lain terkait eksekusi seperti mem-boot layanan ini. Ketiganya adalah: 1. Inisialisasi 2. Dekomposisi, distribusi dan pengambilan kembali sub pekerjaan 3. De-inisialisasi
MPI Untuk C/C++ Implementasi MPI dengan menggunakan C/C++ adalah implementasi dengan variasi yang banyak, dapat dilihat pada: LAM/MPI, http://www.lam-mpi.org/ Open MPI, http://www.open-mpi.org/ MPICH2, http://www.mcs.anl.gov/research/projects/mpich2/ Microsoft MPI, http://msdn.microsoft.com/enus/library/bb524831%28VS.85%29.aspx Intel MPI, http://software.intel.com/en-us/intel-mpi-library/
MPI Untuk Fortran Implementasi MPI dengan menggunakan Fortran dapat dilihat pada: Open MPI, http://www.open-mpi.org/ MPICH2, http://www.mcs.anl.gov/research/projects/mpich2/ Microsoft MPI, http://msdn.microsoft.com/enus/library/bb524831%28VS.85%29.aspx
Point-to-point communication, Datatypes, Collective operations, Process groups, Communication contexts, Process topologies, Environmental management and inquiry, The Info object, Process creation and management, One-sided communication, External interfaces, Parallelle I/O, Language bindings for Fortran and C, Tool support.
Tidak include standar dari MPI, yaitu: Operasi yang membutuhkan lebih banyak dukungan sistem operasi Program construction tools Fasilitas Debugging.
Distributed Memory Multiprosesor Menggunakan beragam topologi jaringan (koneksi) Crossbar, ring, mesh dan torus 2-D dan 3-D, hypercube, tree, butterfly
Menciptakan ilusi bahwa semua node saling terhubung satu dengan yang lainnya Parameter performansi utama: Latency (): delay antara waktu pengiriman dan penerimaan Bandwidth (1/): Bandwidth efektif Bandwidth link = #jalur/waktu-per-bit
Bisection Bandwidth adalah bandwitdh di titik perpotongan yang membagi jaringan menjadi dua yang sama persis. Diperlukan oleh algoritma dimana semua prosesor ingin berkomunikasi dengan yang lain.
Konsep Message Passing Semua operasi dilakukan dengan panggilan fungsi pustaka Definisi fungsi: mpi.h (C), mpif.h (Fortran)
Routing Message di MPI Routing message antar komputer dilakukan oleh proses daemon yang dijalankan di komputer, membentuk virtual machine.
Program yang sama dieksekusi oleh tiap prosesor Statemen kontrol memilih bagian berbeda untuk eksekusi di tiap prosesor
Kontrol Proses Di MPI, proses-proses yang terdefinisi dalam grup komunikasi diberi rank. rank dimulai dari 0 dan seterusnya. Program menggunakan statemen kontrol (misalnya if) untuk melakukan eksekusi spesifik Contoh:
if (rank == 0) ... /* do this */; if (rank == 1) ... /* do this */;
Model master-slave Satu proses (master), melakukan satu set action dan semua proses lainnya (slaves) melakukan action identik, namun dengan data berbeda
if (rank == 0) ... /* master do this */; else ... /* all slaves do this */;
Mencari Environtment MPI Berapa proses yang berpartisipasi dalam komputasi? MPI_Comm_size() memberikan jumlah proses
#include <mpi.h> #include <stdio.h> int main( int argc, char *argv[] ) { int rank, size; MPI_Init( &argc, &argv ); /*Begin MPI*/ /*Below statements execute independently in each process*/ MPI_Comm_rank( MPI_COMM_WORLD, &rank ); MPI_Comm_size( MPI_COMM_WORLD, &size ); printf( "I am %d of %d\n", rank, size ); MPI_Finalize(); /*End MPI*/ return 0; }
Komunikasi Point-to-Point Mengirimkan sebuah message antar proses menggunakan rutin/fungsi send() dan receive()
Parameter MPI_send()
Di MPI dasar, transfer disebut blocking a. Rutin menunggu sampai semua action lokal telah dilakukan (fungsi return)
Buffer message dideskripsikan dengan (buf, count, datatype) Proses targe dispesifikasikan dengan dest, yaitu rank dari proses target dalam communicator comm Saat fungsi ini return, data telah dikirimkan ke seistem dan buffer buf dapat digunakan kembali a. Message ini mungkin belum diterima oleh proses target
Parameter MPI_Recev()
Menunggu sampai message yang cocok (source dan tag) diterima dari sistem dan buffer dapat digunakan source adalah rank dalam communicator comm atau MPI_ANY_SOURCE tag adalah tag yang harus cocok dengan yang dikirim sumber atau MPI_ANY_TAG Menerima lebih sedikit datatype daripada count berarti OK, jika lebih berarti terjadi error status berisi informasi lebih lanjut (misalnya ukuranmessage)
Contoh Program
#include <mpi.h> #include <stdio.h> int main( int argc, char **argv ) { int rank, buf; MPI_Status status; MPI_Init(&argc, &argv); MPI_Comm_rank( MPI_COMM_WORLD, &rank ); /* Process 0 sends and Process 1 receives */ if (rank == 0) { buf = 123456; MPI_Send(&buf,1,MPI_INT,1,0,MPI_COMM_WORLD); } else if (rank == 1) { MPI_Recv(&buf,1,MPI_INT,0,0,MPI_COMM_WORLD,&status ); printf("Received %d\n", buf ); } MPI_Finalize(); return 0; }
Komunikasi antar proses adalah cara atau mekanisme pertukaran data antara satu proses dengan proses lainnya, baik itu proses yang berada di dalam komputer
yang sama, atau komputer jarak jauh yang terhubung melalui jaringan. IPC terdiri atas protokol yang menjamin sebuah respons dari sebuah permintaan.
DAFTAR PUSTAKA
MPI: A Message-Passing Interface Standard Version 3.0. http://www.mpiforum.org/docs/mpi-3.0/mpi30-report.pdf. Diakses pada tanggal 29 April 2013. Pukul 17.00 WITA Didik Widianto, Eko. Pemrograman MPI(1). http://didik.blog.undip.ac.id/files/2012/02/TSK617-Kuliah8-PemrogramanMPI.pdf. Diakses pada tanggal 29 April 2013. Pukul 17.00 WITA Kurniawan, Agus. Bab 2 Message-Passing Interface (MPI).
http://id.scribd.com/document_downloads/direct/39074685?extension=pdf&ft=13 67235085<=1367238695&user_id=28030828&uahk=YZPHwy6nXVyqxPbjzsf/ i+kxN4A. Diakses pada tanggal 29 April 2013. Pukul 17.00 WITA