Kinerja Paralel Pengurutan Data

download Kinerja Paralel Pengurutan Data

of 10

description

free

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.