Pemrograman Paralel - Kasus Buble sort dan penjumlahan n buah bilangan
-
Upload
supriyanto -
Category
Documents
-
view
1.217 -
download
3
description
Transcript of Pemrograman Paralel - Kasus Buble sort dan penjumlahan n buah bilangan
ALGORITMA PARALEL UNTUK MENJUMLAHKAN
N BUAH BILANGAN DAN PENGURUTAN
MENGGUNAKAN ALGORITMA BUBBLESORT
OLEH :
SUPRIYANTO (G651090191)
Dosen :
Dr. Yeni Herdiyeni, S.Kom, M.Kom
MARET 2010
DEPARTEMEN ILMU KOMPUTER
SEKOLAH PASCA SARJANA
INSTITUT PERTANIAN BOGOR
BOGOR
Sesungguhnya agama (yang diridhai) disisi Allah hanyalah Islam. Tiada berselisih orang-
orang yang telah diberi Al Kitab kecuali sesudah datang pengetahuan kepada mereka,
karena kedengkian (yang ada) di antara mereka. Barangsiapa yang kafir terhadap ayat-
ayat Allah maka sesungguhnya Allah sangat cepat hisab-Nya. (QS. Ali Imran :19)
Allah lah yang menciptakan tujuh langit dan seperti itu pula bumi. Perintah Allah berlaku
padanya, agar kamu mengetahui bahwasanya Allah Maha Kuasa atas segala sesuatu, dan
sesungguhnya Allah, ILMU-Nya benar-benar meliputi segala sesuatu. (QS. 65:12)
i
KATA PENGANTAR
Puji syukur keharidat Allah SWT yang senantiasa memberikan limpahan rahmat dan
hidayah-Nya kepada kita semua. Berkat rahmat Allah pulalah tugas perdana mata kuliah
Pemrosesan Paralel ini dapat diselesaikan.
Makalah ini akan membahas tentang cara kerja Algoritma Paralel penjumlahan n buah
bilangan dan pengurutan menggunakan algoritma Bubble Sort.
Penulis menyadari bahwa dalam penulisan makalah ini masih jauh dari kesempurnaan,
namun demikian penulis berusaha maksimal untuk menyuguhkan tulisan terbaik. Akhir kata,
kami mengucapkan terima kasih atas perhatian, saran, kritik dan masukan yang diberikan
demi kemajuan di kemudian hari.
Bogor, Maret 2010
Penulis,
Supriyanto
ii
DAFTAR ISI
BAB I. PENDAHULUAN ..................................................................................................... 1
A. Latar Belakang .................................................................................................. 1
B. Tujuan ............................................................................................................... 1
BAB II. TINJAUAN PUSTAKA ........................................................................................... 2
A. Interconection Networks .................................................................................... 2
1. Shared Versus Swithed Media..................................................................... 2
2. Topologi Jaringan Switch ........................................................................... 2
B. Processor Array ................................................................................................. 6
C. Multiprocessor ................................................................................................... 6
D. Multicomputer ................................................................................................... 7
E. Klasifikasi Flyn ................................................................................................. 8
BAB III. PEMBAHASAN ..................................................................................................... 9
A. Algortima Penjumlahan n Buah Bilangan .......................................................... 9
1. Algoritma Penjumlahan Secara Sekuensial ................................................. 9
2. Algoritma Penjumlahan Secara Paralel ....................................................... 9
B. Pengurutan Dengan Menggunakan Algoritma Bublesort .................................. 10
1. Pengurutan secara sekuensial .................................................................... 10
2. Formulasi Paralel dengan Pola Transposisi Ganjil-Genap Pada Bublesort . 11
BAB IV. KESIMPULAN ..................................................................................................... 15
iii
DAFTAR GAMBAR
Gambar 2.1. (a) shared medium dan (b) switched medium (Quinn, 2004) .............................. 2
Gambar 2.2. Fully Connected Network ................................................................................. 3
Gambar 2.3. Linier dan Ring ................................................................................................. 3
Gambar 2.4. Topologi Jaringan (a) Mesh (b) Torus 2D, dan (c) Torus 3D (Quinn, 2004) ...... 3
Gambar 2.5. Jaringan Tree dan Hypertree (Quinn, 2004) ....................................................... 4
Gambar 2.6. Butterflay Network dengan 8 prosesor (Quinn, 2004) ........................................ 4
Gambar 2.7. Cube dan Hypercube ......................................................................................... 5
Gambar 2.8. Shuffle Exchange .............................................................................................. 5
Gambar 2.9. Contoh Arsitektur Prosesor Array ..................................................................... 6
Gambar 2.10. Centralized Processor(Quinn, 2004) ................................................................ 7
Gambar 2.11. Distributed Multiprocessor(Quinn, 2004) ........................................................ 7
Gambar 2.12. Symmetrical Multicomputer (Quinn, 2004) ..................................................... 7
Gambar 2.13. Asymmetrical Multicomputer (Quinn, 2004) ................................................... 8
Gambar 3.1. Gambaran Komputasi secara Paralel untuk Penjumalahan n buah bilangan ..... 10
Gambar 3.2. Ilustrasi Algoritma Bubblesort ........................................................................ 11
Gambar 3.3. Ilustrasi Algoritma Ganjil-Genap pada Bubblesort (Grama dkk, 2003) ............ 12
1
BAB I. PENDAHULUAN
A. Latar Belakang
Perancangan algoritma adalah komponen penting dalam pemecahan masalah
menggunakan komputer. Suatu algoritma sekuensial pada dasarnya adalah sebuah teknik
atau urut-urutan langkah dasar untuk memecahkan masalah dengan menggunakan satu
prosesor. Demikian pula, algoritma parallel adalah teknik pemecahan masalah dengan
menggunakan beberapa prosesor. Pemecahan masalah dilakukan dengan menggunakan
teknologi paralel,dimana beberapa komputer bekerja secara paralle untuk menyelesaikan
masalah komputasi.
Algoritma paralel memungkinkan eksekusi terhadap berbagai operasi dilakukan secara
bersamaan. Namun demikian dalam melakukan desain algoritma paralel perlu dilakukan
pekerjaan-pekerjaan.Dalam prakteknya penyusunan algoritma parallel mencakup
langkah-langkah berikut :
• Mengidentifikasi bagian dari pekerjaan yang dapat dilakukan secara bersamaan.
• Memetakan pekerjaan-pekerjaan ke beberapa proses yang berjalan secara parallel
• Mendistribusikan input, output, dan data intermediate yang terkait dengan program.
• Mengelola teknik pengaksesan secara bersama oleh beberapa prosesor.
Sementara itu tujuan utama penggunaan algoritma paralel adalah untuk mempercepat
pemrosesan suatu algoritma. Pada makalah ini akan dibahas teknik menganalisis dan
mendesain algoritma paralel untuk kasus penjumlahan n buah bilangan dan pengurutan
dengan menggunakan algoritma bublesort. Makalah ini menitikberatkan pada teknik
mendekomposisi permasalahan agar dapat dikerjakan dengan menggunakan algoritma
paralel.
B. Tujuan
Tujuan dari penulisan makalah ini adalah :
1. Mempelajari cara kerja Algoritma Paralel penjumlahan n buah bilangan dan
pengurutan dengan menggunakan algoritma Bubblesort.
2. Membuat pseudocode Algoritma diatas.
2
BAB II. TINJAUAN PUSTAKA
Sekitar tahun 1960 sampai 1990-an para peneliti dan para insinyur mencari berbagai variasi
dari arsitektur komputer paralel. Berbagai perusahaan mulai memproduksi komputer paralel
untuk digunakan dalam berbagai keperluan komputasi. Namun demikian, performansi dari
berbagai desain prosesor tidak hanya tergantung pada banyaknya prosesor. (Quinn, 2004).
Pada tulisan ini akan dibahas tentang berbagai variasi dari interconection network (koneksi
jaringan). Selain itu akan dibahas juga secara sekilas mengenai prosesor array, multiprosesor
dan multicomputers, yang merupakan tiga jenis komputer paralel yang sangat populer. Selain
itu akan diperkenalkan juga Flynn Taksonomi dari komputer parallel dan metode pipelining
yang sangat banyak digunakan dalam berbagai masalah yang diselesaikan dengan algoritma
paralel.
A. Interconection Networks
1. Shared Versus Swithed Media
Pengunaaan jaringan interkoneksi bertujuan untuk :
• Menghubungkan prosesor kepada share memori
• Menghubungkan satu prosesor dengan prosesor lainnya
Adapun media yang digunakan adalah
• Shared medium, dan
• Switch medium
Gambar 2.1. memperlihatkan bagaimana cara kerja shared memori dan switch media
Gambar 2.1. (a) shared medium dan (b) switched medium (Quinn, 2004)
2. Topologi Jaringan Switch
Pokok persoalan arsitektur parallel adalah terletak pada desain jaringan koneksi
prosesor. Idealnya di dalam jaringan, stiap prosesor didesain terhubung dengan semua
prosesor lainnya. Idealnya prosesor memiliki koneksi penuh (complete graph). Untup
p prosesor dalam suatu jaringan, jumlah edge penghubung adalah p x (p-1) edge.
3
Gambar 2.2. Fully Connected Network
Pada kenyataanya sulit sekali mewujudkan koneksi seperti pada Gambar 2.1 ini,
dikarenakan biaya investasi yang dibutuhkan sangat mahal. Adapun Arsitektur yang
umum digunakan adalah :
Linier dan Ring
Gambar 2.3. Linier dan Ring
Mesh, Torus : 2D, 3D
Gambar 2.4. Topologi Jaringan (a) Mesh (b) Torus 2D, dan (c) Torus 3D (Quinn,
2004)
4
Tree dan Hypertree
Gambar 2.5. Jaringan Tree dan Hypertree (Quinn, 2004)
Pada jaringan Tree hanya ada satu jalur untuk setiap dua simpul, semakin tinggi tree,
maka semaik beresiko akan terjadi komunikasi bottleneck pada level-level yang lebih
tinggi dari tree. Untuk menghindari hal tersebut maka pada jaringan model Tree dapat
dikembangkan menjadi hypertree, dimana node pada berbagai level dapat terhubung
satu sama lain, dengan kata lain ada pembagian jalur koneksi.
Butterflay Tipe butterflay adalah topologi tidak langsung, dimana n = 2
d prosesor terkoneksi
dengan n (log n + 1) node swith (Gambar 2.6). Node swith di bagi ke dalam log n + 1
baris, atau rangk yang berisi n node. Rank tersebut dilabelkan dengan 0 hinga log n,
dimana rank 0 dan d bisa terhubung bisa tidak, yang mengakibatkan node pada switch
terhubung ke 4 node yang lainnya.
Gambar 2.6. Butterflay Network dengan 8 prosesor (Quinn, 2004)
5
Cube dan Hypercube
Gambar 2.7. Cube dan Hypercube
Shuffle Exchange
Gambar 2.8. Shuffle Exchange
Penjelasan-penjelasan di atas menggambarkan bahwa tidak satupun network optimal
pada berbagai kondisi. Perlu ada pertimbangan-pertimbangan khusus dalam pemilihan
tipe switch yang akan digunakan. Tabel 2.1. memperlihatkan network cost untuk masing-
masing topologi jaringan.
Tabel 2.1. Network Cost untuk berbagai topologi Jaringan
6
B. Processor Array Prosesor array dapat digambarkan seperti komputer yang diimplementasikan layaknya
pada sekuensial komputer yang dihubungkan satu sama lain secara identik, yang
disinkronisasi untuk beroperasi mengolah berbagai macam data (multiple data).
Gambar 2.9. Contoh Arsitektur Prosesor Array
C. Multiprocessor Terdapat dua jenis arsitektur multiprosesor yang digunakan dalam pemrosesan paralel
yaitu centralized processor (Gambar 2.10) dan distributed multiprocessor (Gambar 2.11).
Berdasarkan ke dua gambar tersebut terdapat perbedaan mendasar antara kedua jenis
prosesor ini, yaitu pada arsitektur centralized memori yang digunakan untuk pemrosesan
adalah memori utama di server (primary memory). Sedangkan pada arsitektur distributed
pemrosesan dilakukan pada memori yang berada pada masing-masing prosesor yang
digunakan.
7
Centralized Processor
Gambar 2.10. Centralized Processor(Quinn, 2004)
Distributed Multiprocessor
Gambar 2.11. Distributed Multiprocessor(Quinn, 2004)
D. Multicomputer Terdapat setidaknya dua jenis arsitektur multicomputer, yaitu symmetrical
multicomputer (Gambar 2.12) dan assymetrical multicomputer (Gambar 2.13).
Gambar 2.12. Symmetrical Multicomputer (Quinn, 2004)
8
Gambar 2.13. Asymmetrical Multicomputer (Quinn, 2004)
E. Klasifikasi Flyn Flyn (1966) mengklasifikasikan komputer berdarkan instruction stream dan data stream
yaitu :
• Single Intruction –Single Data Stream (SISD)
• Multi Intruction –Single Data Stream (MISD)
• Single Intstruction – Multiple Data Stream (MIMD)
• Multiple Instruction Multiple Data (MIMD)
9
BAB III. PEMBAHASAN
A. Algortima Penjumlahan n Buah Bilangan
1. Algoritma Penjumlahan Secara Sekuensial
Agoritma Penjumlahan secara sekuensial (SISD) Begin
sum � a0
for i � 1 to n-1 do
sum � sum + ai endfor
end Waktu eksekusi algoritma di atas sebanding dengan banyaknya eksekusi loop for. Loop
tersebut pasti akan dieksekusi sebanyak n-1 kali. Jadi waktu eksekusinya adalah O(n).
Misalkan algoritma tersebut dijalankan dengan input : ai= {1,2,3,4,5,6,7,8}, maka
ilustrasi prosesnya dapat dilihat sebagai berikut.
Sum = a0 = 1
i = 1 sum = sum+ a1= 1 + 2 = 3
i = 2 sum = sum+ a2= 3 + 3 = 6
i = 1 sum = sum+ a3= 6 + 4 = 10
i = 1 sum = sum+ a4= 10 + 5 = 15
i = 1 sum = sum+ a5= 15 + 6 = 21
i = 1 sum = sum+ a6= 21 + 7 = 28
i = 1 sum = sum+ a7= 28 + 8 = 36
2. Algoritma Penjumlahan Secara Paralel Initial Condition :List n>= 1 elemen disimpan di A[ 0... (n-1)] Kondisi final : Hasil penjumlahan disimpan pada A[0] Variabel global : n, A[0 ... (n-1)], j
Begin untuk semua Pi dimana 0 <= i <=[n/2] -1 dp
for j � 0 to [ log n ] - 1 do if i module 2j = 0 dan 2i +sj < n maka
A[2i] � A [2i] + A [2i + 2j] endif endfor endfor end
10
Gambar 3.1. Gambaran Komputasi secara Paralel untuk Penjumalahan n buah bilangan
Ilustrasi proses komputasi penjulahan yang dilakukan pada algoritma diatas dapat
dilihat pada Gambar 3.1. Pada gambar tersebut terlihat bahwa penjumlahan bilangan
dapat dilakukan secara paralel. Pada fase satu A[0] dijumlahkan dengan A[1], dan
A[1] dijumlahkan dengan A[2], A[3] dijumlahkan dengan A[4] dan seterusnya.
Sehingga pada fase dua, dijumlahkan dua angka yang berdekatan secara bersamaan,
yang merupakan hasil penjumlahan pada fase sebelumnya. Begitupun fase-fase
selanjutnya sehingga didapatkan jawaban akhir yang diinginkan.
B. Pengurutan Dengan Menggunakan Algoritma Bublesort
1. Pengurutan secara sekuensial
Pengurutan (sorting) data merupakan operasi yang sangat umum dilakukan oleh
komputer, karena data yang terurut lebih mudah di proses daripada data yang masih
acak. pengurutan didefinisikan sebagai sebuah pekerjaan mengatur sekumpulan data
yang tersusun secara acah sehingga dihasilkan susunan terurut sesuai dengan
elemennya (dari kecil ke besar atau sebaliknya).
Algoritma bubblesort menganalogikan setiap angka sebagai sebuah gelembung.
Angka (elemen) yang lebih kecil akan naik sama seperti gelembung yang selalu
mengambang ke permukaan. Gambar 3.1. merupakan ilustrasi dari algoritma
bublesort. Berikut adalah Algoritma Buble Sort secara sekuansial :
1. procedure BUBBLE_SORT(n) 2. begin 3. for i := n - 1 downto 1 do 4. for j := 1 to i do 5. bandingkan-tukarkan(aj, aj + 1); 6. end BUBBLE_SORT
Dalam setiap loop i algoritma akan "menggelembungkan" bilangan terkecil ke-i
hingga posisi ke-i di dalam array. Penggelembungan dimulai dari elemen terakhir
array. Setiap pasang elemen yang berdekatan akan dibandingkan. Jika elemen
11
tibelakangnya lebih kecil, maka dilakukan penukaran. Dengan cara ini, bilangan
terkecil pasti akan "naik" hingga posisi yang diinginkan. Iterasi pada setiap loop
terjadi dengan waktu Θ(n) kali, sehingga total waktu yang diperlukan adalah Θ(n2).
Gambar 3.2. Ilustrasi Algoritma Bubblesort
2. Formulasi Paralel dengan Pola Transposisi Ganjil-Genap Pada Bublesort
Pola Transposisi Ganjil-Genap Pada Bublesort Pada transposisi ganjil-genap pada algoritma penguruan n elemen pada n fase (n
genap), membutuhkan n/2 operasi pembandingan. Algoritma dibagi ke dalam dua
fase, yang disebut dengan fase ganjil dan fase genap. Susun <a1, a2, ..., an> menjadi
urutan yang akan diurutkan. Selama fase ganjil, elemen-elemen dengan indeks ganjil
dibandingkan dengan tetangga kanan mereka, dan jika tidak urut maka kedua nilai
dipertukarkan, dengan demikian, pasangan-pasangan (a1, a2), (a3, a4), ..., (an - 1, an)
dibandingkan kemudian jika tidak sesuai dengan urutan maka dipertukarkan (dengan
asumsi n genap).
12
Gambar 3.3. Ilustrasi Algoritma Ganjil-Genap pada Bubblesort (Grama dkk, 2003)
Selama fase genap, semua elemen dengan indeks genap dibandingkan dengan
tetangga kanan mereka, dan jika tidak urut maka kedua nilai dipertukarkan. Pasangan-
pasangan (a2, a3), (a4, a5), ..., (an-2, an-1) dibandingkan, kemudian jika tidak sesuai
urutan maka dipertukarkan. Setelah fase n ganjil maka urutannya akan terurut. Setiap
fase dari algoritma (baik ganjil atau genap) memerlukan Θ(n) pembandinan, dan
unduk semua fase kompleksitasnya adalah Θ(n2). Algoritma dari pengurutan dengan
ide fase ganjil genap dapat dilihat dibawah ini :
1. prosedur GANJIL-GENAP(n) 2. mulai 3. for i := 1 to n do 4. begin 5. if i is GANJIL then 6. for j := 0 to n/2 - 1 do 7. bandingkan-tukarkan(a2j + 1, a2j + 2); 8. if i is GENAP then 9. for j := 1 to n/2 - 1 do 10. bandingkan-tukarkan (a2j, a2j + 1); 11. end for 12. end ODD-EVEN
Pengurutan Secara Paralel Ide untuk membuat urutan pertukaran ganjil-genap memudahkan dalam menerapkan
algoritma ke dalam pemrosesan secara paralel. Pasa setiap fase dari algoritma, operasi
13
pembandingan dan pertukaran dari masing-masing bagian dilakukan secara bersamaan
(paralel). Pada kasus ini dapat dilihat bahwa n sebagai jumlah proses (sekaligus
sebagai jumlah elemen yang akan diurutkan). Asumsikan bahwa proses-proses
tersebut diatur dalam sebuah array satu dimensi.
Elemen ai dinisiasi pada proses Pi untuk i = 1, 2, ..., n. Selama fase ganjil, setiap
proses yang memiliki label genap dibandingkan dan jika memenuhi syarat maka
dipertukarkan dengan tetangga yang ada sebelah kannnya. Demikian juga untuk fase
genap, masing-masing proses dengan label ganjil dibandingkan dan jika memenuhi
syarat dipertukarkan dengan tetangga sebelah kanannya. Maka perumusan aloritma
parlalel untuk kasus bubbelsort adalah sebagai berikut : 1. procedure ODD-EVEN_PAR (n) 2. begin 3. id := process's label 4. for i := 1 to n do 5. begin 6. if i is odd then 7. if id is odd then 8. bandingkan-tukarkan_min(id + 1); 9. else 10. bandingkan-tukarkan _max(id - 1); 11. if i is even then 12. if id is even then 13. bandingkan-tukarkan _min(id + 1); 14. else 15. bandingkan-tukarkan _max(id - 1); 16. end for 17. end ODD-EVEN_PAR
Setiap fase pekerjaan dalam algoritma tersebut, proses genap atau ganjil melakukan
langkah-langkah perbandingan dan pertukaran dengan tetangganya. Seperti kita
ketahui bahwa algoritma bubblesort membutuhkan waktu sebesar Θ(1). Untuk total n
fase pekerjaan, maka waktu pekerjaan diformulasikan dengan Θ(n). Kompleksitas
pengurutan yang dilakukan secara sekuensial untuk n elemen memiliki kompleksitas
Θ(n log n), sememtara pengurutan dengan transposisi ganjil-genap menjadikan waktu
pekerjaan menjadi meningkat yaitu Θ(n2).
Untuk mengoptimalkan kompleksitas algoritma, maka algoritma dibuat untuk
melakukan beberapa proses.
Untuk mendapatkan suatu algoritma paralel yang optimal, maka harus digunakan
proses yang lebih sedikit. Misalkan p merupakan jumlah proses, di mana p < n. Mula-
mula setiap proses dikelompokkan ke dalam blok n / p bagian, yang melakukan
pengurutan secara internal (dengan menggunakan merge sort atau quick sort) dengan
kompleksitas Θ((n/p) log(n/p)). Setelah itu dilakukan eksekusi terhadap fase p (p/2
ganjil and p/2 genap), melakukan operasi pembandingan. Diakhir fase maka list akan
terurut (Gambar 3.2). Masing-masing fase, melakukan pembandingan untuk
mengabungkan kedua blok sebanyak Θ(n/p) pembandingan. Maka dapat disimpulkan
bahwa waktu kerja yang diguankan pada algoritma paralel adalah sebagai berikut :
14
Kompleksitas pada kasus pengurutan n buah bilangan secara sekuensial adalah Θ(n
log n), dapat ditingkatkan efisiensinya dengan formulasi ini, seperti terlihat pada
persamaan berikut :
15
BAB IV. KESIMPULAN
Dari penulisan ini dapat disimpulkan bahwa untuk melakukan penjumlahan n buah bilangan
secara sekuensial diperlulkan waktu eksekusi untuk n buah data sebanyak O(n). Hal itu dapat dipepercepat dengan mendokomposisi proses menjadi proses-proses parallel. Hasil dekomposisi ini
diupayakan agar dapat dikerjakan di beberapa prosesor secara parallel.
Sementara itu pada pengurutan dengan menggunakan buble sort secara sekuensial membutuhkan
waktu eksekusi Θ(n log n). Dengan menggunakan ide indeks ganjil dan genap maka
pengurutan n buah bilangan dengan bubble sort dapat dilakukan.
Secara umum dapat disimpulkan bahwa pemrosesan secara paralel dilakukan dengan cara
mendekomposisi pekerjaan-pekerjaan pada suatu algoritma sekuensial yang dapat di proses
secara paralalel. Setelah itu, dilakukan optimalisasi terhadap algoritma paralel yang dibuat
dan menentukan banyaknya prosesor yang optimal agar waktu pengerjaannya menjadi
semakin baik dibandingkan dengan algoritma sekuensial.
16
DAFTAR PUSTAKA
Grama, A; Gupta, A; Karypis, George; dan Kumar, V. 2003. Introduction to Parallel
Computing, Second Edition - Chapter 9. Sorting. Addison Wesley. USA.
Petersan, W.P. dan Arbenz, P. 2004. Introduction to Parallel Computing, A Practical Guide
With Examples in C. Oxford University.
Quinn, Michael J. 2004. Parallel Programming in C with MPI and OpenMP. Mc Graw Hill.