You are on page 1of 4

LAPORAN PEMROSESAN PARALEL ( Implementasi Pemrograman Paralel dengan MPI_Barrier )

Mustika Hidayat A Nito Irwan Kusuma Andre Achmad Bagus P Yoga Ardhian Pravisita Fajar Prio Nugroho Tommy Yoga Pratama

08523421 09523002 09523028 09523242 09523258 09523435

JURUSAN TEKNIK INFORMATIKA FAKULTAS TEKNOLOGI INDUSTRI UNIVERSITAS ISLAM INDONESIA YOGYAKARTA 2012

Implementasi MPI_Barrier pada bahasa C++ :

Hasil printscreen program setelah dieksekusi:

Implementasi Barrier Barrier diimplementasikan dengan sebuah counter yang memiliki waktu kompleksitas 0(p) beserta sejumlah p prosesor (baik kompleksitas komputasional dari proses master maupun kompleksitas komunikasi, contohnya jumlah pesan). Barrier yang lebih efisien dapat diimplementasikan menggunakan konstruksi tree terdesentralisasi. Misalnya terdapat 8 proses (P0, P1, P2, P3, P4, P5, P6, dan P7). Pada dasarnya, algoritmanya terlihat sebagai berikut: Tahap I: P1 mengirimkan pesan ke P0 (ketika P1 mencapai barriernya). P3 mengirimkan pesan ke P2 (ketika P3 mencapai barriernya). P5 mengirimkan pesan ke P4 (ketika P5 mencapai barriernya). P7 mengirimkan pesan ke P6 (ketika P7 mencapai barriernya). Tahap II: P2 mengirimkan pesan ke P0 (ketika P2 dan P3 mencapai barriernya). P6 mengirimkan pesan ke P4 (ketika P6 dan P7 mencapai barriernya). Tahap III: P4 mengirimkan pesan ke P0 (ketika P4, P5, P6, P7 mencapai barriernya). P0 mengakhiri fase kedatangan (ketika P0 mencapai barrier dan telah menerima pesan dari P4). Sekarang, proses-proses tersebut harus dilepaskan dari barriernya, yang dapat dikerjakan dengan suatu konstruksi reverse tree (pohon terbalik). Pada kasus ini, algoritma hanya mencakup pengiriman dan penerimaan pesan tanpa komputasi yang ekplisit. Sebuah algoritma 8 proses dengan fase kedatangan dan fase keberangkatan diimplementasikan dengan tree yang membutuhkan 2 log 8 langkah, atau secara umum, 2 log p langkah, sebuah kompleksitas waktu komunikasi 0 (log p). Konsep MPI_barrier digunakan untuk menggabungkan proses dalam satu waktu pemrosesan. Dalam kasus Master_Slave variabel recv yang dipakai bersifat blocking, yaitu ketika ada Master dengan 20 slave maka master akan menunggu sebanyak 20 recv. Padahal Slave sudah dalam kondisi barrier menunggu proses pengiriman atau Send.

Pada kode matriks 3x3 diatas bahwa

nilai awal lalu digunakan sebagai tempat

menampung perulangan dari hasil komputasi yang terbaru dari nilai-nilai yang lama. Perulangan kemudian di-update dengan nilai-nilai yang baru yang disimpan sebelumnya.

Dengan urutan komputasi secara runtut, nilai yang digunakan untuk menghitung dimana merupakan penghitungan dari
a[i-1] [p-1]

b [i] [p]

pada iterasi tersebut dan dihitung dari

iterasi sebelumnya, hal itu ditujukan untuk menghasilkan konvergensi yang cepat untuk di implementasikan dalam banyak data atau biasa dikenal dengan teori iterasi dari Gauss-seidel. Pada bagian akhir kode tersebut, terdapat fungsi cek
()

dari looping dimana dalam kasus

data yang sangat besar perulangan membutuhkan waktu yang cukup lama, proses tersebut di simpan dalam variabel
c[i-1][p-1] = hasil.

Proses message-passing dari nilai atau data yang

diperoleh berasal dari prosesproses iterasi terakhir data-data tersebut berkomunikasi, nilai-nilai data yang dipakai dalam proses pengomputasian dari iterasi sebelumnya bergantung dari banyakurutan dimana datanya dikomputasi secara berturut-turut atau proses looping.

You might also like