Kinerja Paralel Pengurutan Data
-
Upload
iswan-puji-rahmanto -
Category
Documents
-
view
11 -
download
0
description
Transcript of Kinerja Paralel Pengurutan Data
-
PENGURUTAN DATA MENGGUNAKAN METODE SHELLSORT DAN QUICKSORT
ISWAN PUJI 11030091 EKI FAJRI P 13030012 DHEA ZAFARINA EP 13030053 ISNI PUTRI 13030031 TAUFIK HIDAYAT 13030043
PENDAHULUAN
Saat ini komputer sudah merupakan suatu perangkat yang sangat dibutuhkan
manusia dalam menyelesaikan berbagai masalah komputasi, karena penyelesaian
dengan komputer memberikan hasil lebih cepat dan lebih akurat dibandingkan
dengan penyelesaian secara manual. Seiring dengan hal tersebut tuntutan terhadap
proses komputasi pun semakin meningkat.
Salah satu proses yang penting dalam komputasi adalah proses pengurutan data.
Jika data yang akan diurutkan berjumlah banyak, maka waktu pengurutan akan
besar dan ini berdampak pada penurunan kinerja komputasi. Oleh karena itu
dibutuhkan suatu cara pengurutan data yang efisien, misalnya dengan
memanfaatkan komputasi paralel.
Paper ini membahas proses pengurutan data secara paralel menggunakan sejumlah
komputer yang terhubung dalam suatu jaringan melalui switch. Paralelisasi
diemulasikan dengan menggunakan suatu perangkat lunak yang disebut Parallel
Virtual Machine (PVM). Penelitian menggunakan dua tipe pengurutan data yang
mempunyai algoritma pengurutan yang berbeda, yaitu Shellsort dan Quicksort.
PENGURUTAN DATA
Proses pengurutan data adalah teknik yang meletakkan unsur dalam suatu daftar
menurut aturan tertentu, biasanya aturan tersebut berdasarkan urutan dari angka
atau huruf.. Pengurutan dapat dilakukan dari unsur yang kecil ke unsur yang lebih
besar atau sebaliknya. Jika pengurutan data dilakukan dari unsur kecil ke unsur
besar, pengurutan dinamakan pengurutan naik. Sebaliknya jika pengurutan data
dilakukan dari unsur besar ke unsur kecil, pengurutan dinamakan pengurutan
-
menurun. Metode pengurutan di sini menggunakan metode pengurutan naik. Hasil
pengurutan data diharapkan memenuhi ketentuan-ketentuan berikut [1]:
-
1. Dalam hasil pengurutan tidak ada unsur yang lebih kecil dari unsur yang ada
sebelumnya jika pengurutan dilakukan secara menaik, dan tidak ada unsur
yang lebih besar dari unsur sebelumnya jika pengurutan dilakukan secara
menurun.
2. Tidak boleh ada unsur yang dihilangkan dari kumpulan unsur yang diurutkan.
Algoritma pengurutan data dapat dikelompokkan berdasarkan beberapa
kriteria sebagai berikut :
1. Kompleksitas. Kompleksitas yang umum digunakan dalah kompleksitas yang
mengacu pada banyaknya pertukaran unsur yang dibutuhkan dalam keadaan
terburuknya..
2. Penggunaan memori tambahan. Suatu algoritma yang tidak membutuhkan
memori tambahan dalam melakukan pengurutan data disebut sebagai
algoritma in-place, sedangkan algoritma yang membutuhkan memori
tambahan disebut sebagai algoritma out-of-place.
3. Stabilitas. Suatu algoritma pengurutan data dikatakan stabil apabila
pengurutan mempertahankan letak unsur jika ada dua unsur atau lebih yang
bernilai sama.
Pada metode pengurutan data sebagian besar waktu digunakan untuk
melakukan pertukaran unsur. Oleh karena itu semakin sedikit proses pertukaran
unsur dalam suatu algoritma, semakin efisien algoritma tersebut. Jika unsur yang
akan diurutkan berjumlah n, maka kompleksitas algoritma yang ideal untuk
pengurutan adalah O(n). Ini berarti dalam kondisi terburuk algoritma tersebut akan
melakukan sebanyak n pertukaran data.
-
Algoritma Shellsort
Algoritma Quicksort
Algoritma Quicksort menerapkan teknik divide and conquer untuk membagi
jumlah unsur yang akan diurutkan menjadi dua bagian yang kurang lebih sama
banyak. Langkah pertama adalah memilih sebuah unsur dalam daftar yang disebut
pivot. Nilai pivot bisa diambil dari data yang mana saja, baik data awal maupun
data akhir. Namun pemilihan nilai pivot yang tepat akan mempersingkat waktu
eksekusi program. Seandainya setiap kali daftar dipartisi menjadi dua bagian yang
kurang lebih sama panjang, waktu yang dibutuhkan untuk pengurutan akan kecil
dan kompleksitasnya adalah O nlog n [1]. Jika partisi daftar sangat tidak
berimbang, maka waktu eksekusi
menjadi panjang, dan kompleksitasnya menjadi O n2 . Untuk mendapatkan bagian
partisi yang kira-kira sama besar, maka dipilih pivot berdasarkan metode three-
median-rule [4][5] dengan nilai pivot yang merupakan nilai rata-rata dari tiga nilai
median (data pertama, data terakhir dan data yang berada di tengah-tengah baris
unsur).
Langkah selanjutnya adalah memindahkan unsur dalam daftar yang nilainya
lebih kecil dari pivot ke sebelah kiri pivot, dan unsur yang nilainya sama atau
lebih besar dari pivot ke sebelah kanan sehingga terbentuk dua buah daftar dengan
unsur yang sudah
-
Kinerja Paralel Pengurutan terurut. Lalu pencarian pivot diulangi lagi untuk masing-masing daftar dan kemudian dilakukan pemindahan unsur sesuai dengan nilainya. KOMPUTASI PARALEL
Konsep komputasi paralel pertama kali dikemukan pada tahun 1958 oleh
ilmuwan bernama Gill [6] dan diiukuti oleh sejumlah ilmuwan lain seperti yang
dikemukan oleh Wilkinson [7]. Kemudian pada tahun 1966 Michael J. Flynn [8]
memperkenalkan konsep paralel berdasarkan aliran instruksi sebagai berikut:
1. Single Instruction, Single Data stream (SISD), merupakan suatu tipe komputer
yang mengolah sebuah aliran data secara serial.
2. Multiple Instruction, Single Data stream (MISD), suatu tipe komputer yang
belum dapat dikembangkan sampai saat ini.
3. Single Instruction, Multiple Data streams (SIMD), merupakan sebuah tipe
komputer yang menggunakan sebuah perintah untuk mengolah sejumlah aliran
data dalam suatu satuan waktu.
4. Multiple Instructions, Multiple Data streams (MIMD). Tipe ini menggunakan
sejumlah komputer dengan perintah-perintah yang berbeda untuk mengerjakan
beberapa aliran data yang berbeda. Pengerjaan perintah yang terdistribusi ini
yang merupakan dasar pemikiran pengembangan komputasi paralel.
Penerapan MIMD sebagai Cluster of Workstations (COWs) atau Network of
Workstations (NOWs) pada saat ini sangat meluas, terutama penerapannya pada
PC. Hal ini sangatlah memikat berbagai kalangan pemakai komputasi dengan
kecepatan tinggi.
Terdapat beberapa model komputasi paralel, salah satu model yang umum
digunakan adalah model master-slave. Pada model ini, satu prosesor bertindak
sebagai master dan prosesor lain sebagai slave. Prosesor master bertugas untuk
membaca, mendistribusikan, dan menerima data di samping melakukan
komputasi, sedangkan prosesor slave hanya bertugas untuk melakukan komputasi.
Berdasarkan pola komunikasi antar-prosesor, komputer paralel dapat
dikelompokkan menjadi model memori bersama (shared memory model) dan
-
model pertukaran pesan (message-passing model) [9]. Model memori bersama
memiliki ruang pengalamatan bersama, sehingga komunikasi antar-prosesor
terjadi secara implisit. Model pertukaran pesan memiliki memori yang terpisah
untuk masing-masing prosesor, dan karena itu komunikasi antara prosesor
merupak suatu operasi I/O yang eksplisit.
Kinerja Komputasi Paralel
Kinerja komputasi paralel dapat diukur menggunakan berbagai metrik,
misalnya waktu eksekusi, speedup, efisiensi prosesor, efisiensi memori. Metrik
yang paling sering digunakan adalah speedup [7]. Dalam paper ini digunakan
speedup untuk mengukur kinerja sistem.
Speedup pada komputasi paralel didefinisikan sebagai perbandingan
kecepatan eksekusi suatu program pada komputer paralel dengan kecepatan
eksekusi program tersebut pada komputer sekuensial. Jika T1 adalah waktu
eksekusi program paralel pada satu prosesor dan Tp waktu eksekusi program
paralel pada p prosesor, maka secara matematis speedup dinyatakan dengan
Sp
.
T1
Tp
Speedup ini dinamakan speedup relatif [10], [11]. Jika T1 adalah waktu
eksekusi tercepat dari suatu program sekuensial, maka Persamaan (1)
merepresentasikan speedup
-
mutlak [10], [11]. Karena penelitian ini bertujuan untuk menginvestigasi seberapa
besar peningkatan kinerja yang dapat diperoleh dengan memanfaatkan komputasi
paralel, maka speedup yang digunakan adalah speedup relatif. Untuk
mempermudah pembahasan selanjutnya speedup relatif ini akan disebut sebagai
speedup. Besarnya speedup adalah 1 S p p . Speedup dikatakan ideal jika speedup
meningkat sebanding dengan bertambahnya jumlah prosesor. Jadi jika digunakan
p prosesor, speedup idealnya adalah p. Pada penggunaan satu prosesor, waktu eksekusi sama dengan waktu
komputasi, tetapi pada penggunaan p prosesor, waktu eksekusi merupakan
penjumlahan waktu komputasi, waktu komunikasi antarprosesor, dan waktu
overhead seperti yang dinyatakan pada Persamaan (2). T
p
Tcomp
Tcomm
Tov .
Overhead pada program paralel bisa ditimbulkan oleh beberapa hal, sebagai
contoh:
1. Prosesor yang tertunda kerjanya, misalnya karena data yang dibutuhkan
prosesor itu belum tersedia
2. Ada pekerjaan komputasi ekstra pada program paralel yang tidak diperlukan
pada program sekuensial.
3. Proses sinkronisasi.
Waktu yang terpakai karena overhead ini tidak bisa dijabarkan secara matematis
karena sangat bergantung pada karakteristik program. Perancangan program
paralel harus diusahakan sedemikian rupa sehingga memperkecil waktu akibat
overhead ini.
Jika waktu komputasi pada satu prosesor dinyatakan dengan t, maka waktu
komputasi pada p prosesor akan t/p, dan speedup pada Persamaan (1) dapat ditulis
sebagai
S p t
.
t
p T
comm
Tov
Jadi untuk memperoleh speedup yang tinggi harus diusahakan agar prosesor
melakukan komunikasi seminimal mungkin dan waktu yang terbuang karena
overhead sekecil mungkin, misalnya dengan melakukan tumpang tindih antara
komunikasi dan komputasi.
-
Parallel VIRTUAL MACHINE (PVM)
PVM merupakan penelitian yang dikembangkan oleh Oak Ridge National
Laboratory (ORNL) pada tahun 1989. PVM adalah suatu perangkat lunak yang
dapat digunakan untuk mengemulasikan suatu lingkup paralel. Perangkat lunak ini
dapat digunakan dalam sistem yang homogen ataupun heterogen.
Sistem PVM terdiri dari dua bagian, yaitu daemon yang terletak pada semua
komputer dan membentuk suatu lingkup kerja maya (virtual), dan kumpulan
pustaka yang dibutuhkan untuk melakukan kerja sama antara proses. Pustaka ini
disediakan dalam bahasa pemrograman C dan Fortran.
PVM memungkinkan pembentukan sekumpulan proses yang tidak
tergantung pada jumlah prosesor yang digunakan. Masing-masing proses dalam
PVM memiliki suatu identifikasi yang unik. Setiap proses akan dipetakan pada
prosesor secara otomatis kecuali jika diprogram secara eksplisit oleh pengguna.
Pemrograman dengan PVM umumnya menggunakan model master-slave,
di mana pada awalnya hanya ada satu proses yang berjalan yaitu proses master,
dan kemudian proses master ini akan menciptakan (spawn) proses slave.
Komunikasi antara
-
KESIMPULAN
Dari hasil pengujian tampak bahwa kinerja pengurutan data menggunakan
lebih dari satu prosesor dengan metode Shellsort menunjukkan suatu peningkatan
yang ditunjukkan dengan speedup S p 1. Bahkan untuk data yang berjumlah besar
tercapai
suatu speedup ideal. Sebaliknya, pengurutan data dengan metode Quicksort
paralel malah menunjukkan penurunan kinerja.
REFERENSI [1] Sorting Algorithm. 2005. Quick Sort (http://www.inf.fh-
flensburg.de/lang/algorithmen/sortieren/quick/quicken.htm), diakses 11 Juli 2007.
[2] Weiss, M.A., Data Structures and Algorithm Analysis in C, CA: Benjamin/Cummings Publishing Inc., 1993.
[3] Sorting Algorithm. ShellSort (http://www.inf.fh-flensburg.de/lang/algorithmen/sortieren/shell/shellen/htm), diakses tanggal 11 Juli 2007
[4] Celko, J., Some Tips for QuickSort, The C Users Journal, 1991. [5] Nyhoff, Larry & Sanford, Leestma, Advanced Programming in Pascal with
Data Structures, NY: MacMillan Publishing Company, 1989. [6] Gill, S., Parallel Programming, The Computer Journal 1, 1958. [7] Wilkinson, B. And Allen, M., Parallel Programming: Techniques and
Applications using Networked Workstations and Parallel Computers, NJ: Prentice-Hall, Inc., 1999.
[8] Flynn. M. J., And Rudd, K. W., Parallel architectures, ACM Computing Surveys, Vol. 28 No. 1, 1996.
[9] Culler, D.E., Singh, J.P. and Gupta, A., Parallel Computer Architecture: A
Hardware and Software Approach, CA: Morgan Kaufmann Publishers, Inc., 1999. [10] Foster, I., Designing and Building Parallel Programs: Concepts and Tools for
Parallel Software Engineering, NY: Addison-Wesley Publishing Company, 1995.
[11] Freeman, T.L. & Phillips, C., Parallel Numerical Algorithms, NJ: Prentice-Hall, Inc., 1992.