You are on page 1of 11

KOMPUTASI PARALEL MESSAGE PASSING INTERFACE (MPI)

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

Include standar dari MPI, yaitu:

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.

Perintah dasar MPI : Memulai dan mengakhiri MPI MPI_Init MPI_Finalize

Mengenali dan identifikasi proses MPI_Comm_Rank MPI_Comm_Size MPI_Get_processor_name

Kirim dan Terima data MPI_Send MPI_Recv

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.

Model Pembuatan Proses MPMD dan SPMD

Multiple Program Multiple Data (MPMD)

Program berbeda dieksekusi oleh tiap prosesor

Single Program Multiple Data (SPMD)

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

Proses manakah aku? MPI_Comm_rank() memberikan rank sbg identitas 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; }

Kompiler/Linker: mpicc.openmpi Run: mpiexec.openmpi -np 4 mpi_hello

Komunikasi Point-to-Point Mengirimkan sebuah message antar proses menggunakan rutin/fungsi send() dan receive()

MPI menggunakan MPI_send() dan MPI_receive()

Tipe Data MPI

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; }

Penggunaan MPI MPI digunakan pada Inter-Process Communication (IPC) atau

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.

Struktur Dasar MPI


Struktur dasar dari MPI, sebagai berikut untuk menjalankan program: if(processor A)then hitung bilangan prima else if(processor B)then hitung nilai x pangkat 2 end

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&lt=1367238695&user_id=28030828&uahk=YZPHwy6nXVyqxPbjzsf/ i+kxN4A. Diakses pada tanggal 29 April 2013. Pukul 17.00 WITA

You might also like