• Tidak ada hasil yang ditemukan

can be applied in a variety of data. If the data that will be sorting in large quantities will require a long execution time if done sequentially. So

N/A
N/A
Protected

Academic year: 2021

Membagikan "can be applied in a variety of data. If the data that will be sorting in large quantities will require a long execution time if done sequentially. So"

Copied!
11
0
0

Teks penuh

(1)

ANALISIS PERBANDINGAN KOMPUTASI SEKUENSIAL DAN

KOMPUTASI PARALEL GPU MEMANFAATKAN TEKNOLOGI NVIDIA

CUDA PADA APLIKASI PENGURUTAN BILANGAN ACAK

MENGGUNAKAN ALGORITMA QUICKSORT

1

Retno Ayu Shintia Putri (50407705)

2

Dr. –Ing. Adang Suhendra, Ssi., Skom., MSc. 1

Mahasiswa Teknik Informatika, Fakultas Teknologi Industri, Universitas Gunadarma, retno.asp@gmail.com

2

Dosen Tetap Universitas Gunadarma, adang@staff.gunadarma.ac.id

ABSTRAKSI

Pengurutan merupakan suatu proses mengurutkan data sedemikian rupa sehingga menghasilkan deretan angka yang tersusun secara teratur menurut aturan tertentu. Algoritma

sorting yang cukup sederhana dan dapat diterapkan dalam berbagai data adalah algoritma

quicksort. Jika data yang akan disorting dalam jumlah banyak akan membutuhkan waktu eksekusi cukup lama jika dikerjakan secara sekuensial. Sehingga dengan perkembangan teknologi yang semakin tinggi, maka digunakanlah teknologi paralel yaitu suatu program tidak hanya dikerjakan oleh satu perangkat yaitu CPU saja tetapi juga memanfaatkan perangkat lain berupa graphic card atau dengan kata lainnya adalah GPU. Teknologi yang dapat digunakan untuk melakukan proses komputasi secara paralel pada GPU dari Nvidia adalah menggunakan teknologi CUDA. Sehingga berdasarkan waktu yang diperoleh dari hasil analisa, penulis dapat membandingkan waktu yang diperoleh antara program sekuensial dan paralel GPU apakah benar bahwa proses paralel GPU akan lebih cepat dibanding proses secara sekuensial.

Kata Kunci: Bilangan Acak,Algoritma Quicksort, Komputasi, GPU, CUDA

ABSTRACT

Sorting is a process to sort the data in such a way as to produce a series of numbers arranged on a regular basis according to certain rules. Quicksort algorithm is it quite simple and

(2)

can be applied in a variety of data. If the data that will be sorting in large quantities will require a long execution time if done sequentially. So the higher the technological developments, it is used parallel technology which is a program not only done by a device that is the CPU, but also utilize other devices in the form of graphic card or the GPU. CUDA technology can be used to perform computations in parallel on a GPU from Nvidia. So that by the time obtained from the analysis, the authors could compare the time taken between sequential and parallel programs GPU is it true that the parallel GPU will be faster than a sequential process.

Keyword: Random Numbers, Quicksort Algorithm, Computation, GPU, CUDA

1. PENDAHULUAN

Perkembangan zaman yang sangat pesat mempengaruhi perkembangan teknologi komputer diseluruh dunia. Teknologi komputer yang berkembang ditandai dengan hadirnya teknologi GPU yaitu suatu teknologi yang memanfaatkan kartu grafis (graphics card). Hal ini bertujuan agar dapat menghasilkan kinerja komputer jauh lebih cepat dibandingkan proses yang sepenuhnya hanya dilakukan oleh CPU

Proses pengurutan (sorting) adalah proses mengurutkan data sedemikian rupa sehingga menghasilkan deretan angka yang tersusun secara teratur menurut aturan tertentu (Anton, 2010). Proses pengurutan ini dapat dilakukan pada bilangan acak atau yang biasa disebut dengan bilangan random

yaitu merupakan barisan angka yang dihasilkan dari algoritma tertentu.

Berdasarkan latar belakang diatas, maka dibuatlah program sorting dengan menggunakan suatu algoritma yang diterapkan pada bilangan acak agar dapat bekerja secara sekuensial dan paralel GPU. Algoritma yang digunakan untuk melakukan

sorting adalah algoritma quicksort.

Maka, dapat disimpulkan tujuan dari penelitian ini adalah mengimplementasikan algoritma quicksort secara sekuensial dengan menggunakan bahasa C++ serta secara paralel menggunakan teknologi CUDA yang dikeluarkan oleh Nvidia. Sehingga dengan kedua program ini diharapkan dapat mencapai satu kesimpulan dari sebuah analisa bahwa proses manakah yang akan lebih cepat selesai yaitu secara

(3)

sekuensial atau parallel GPU dan bagaimana speedup dan efisiensi yang

dihasilkan dari percobaan tersebut.

2. LANDASAN TEORI Proses Komputasi

Komputasi adalah suatu teknik yang digunakan untuk menyelesaikan masalah yang berkaitan dengan algoritma, numerik, perhitungan dan lainnya yang dipecahkan dengan menganalisispemecah dari masalah yang ada. Proses komputasi terdiri dari 2 jenis, yaitu komputasi sekuensial dan komputasi paralel. Komputasi sekuensial adalah suatu proses komputasi yang dilakukan oleh komputer dengan bekerja untuk memproses pekerjaannya secara sendiri-sendiri tanpa adanya komunikasi

satu sama lain. Sehingga untuk pekerjaan yang kompleks, kurang baik jika dikerjakan dengan menggunakan komputasi sekuensial karena relatif cukup sulit dan membutuhkan waktu yang cukup lama. Sedangkan komputasi paralel adalah suatu proses komputasi dimana instruksi-instruksi dijalankan secara berkesinambungan. Sehingga masalah yang besar dapat dibagi menjadi beberapa masalah yang lebih kecil (submasalah), untuk kemudian diselesaikan secara serempak.

Sistem Kerja Graphic Processing

Driver grafis akan mendengarkan

instruksi, baik dari OS atau dari aplikasi, kemudian mengambil data digital yang diperlukan dan mengkonversikannya menjadi sebuah format yang dimengerti oleh kartu grafis tersebut. Setelah itu, driver

menyalurkan data digital yang baru diformat tersebut kepada kartu grafis untuk melakukan rendering. Data tersebut berjalan menuju kartu VGA melalui slot pada motherboard (AGP/PCI-E). Setelah disalurkan ke kartu grafis, data akan

dikirimkan ke memori kartu grafis sebagai tempat penyimpanan sementara. Kemudian GPU akan mengambil data digital tersebut lalu mengubahnya menjadi pixel. Pixel tersebut akan dikirim kembali ke Video RAM untuk disimpan. VRAM terhubung langsung pada digital to analog converter

(DAC). Converter ini juga biasa disebut RAMDAC yang bertugas menerjemahkan

image ke signal analog agar bisa digunakan oleh monitor. Selanjutnya, RAMDAC

(4)

mengirimkan gambar final kepada monitor melalui kabel.

CUDA

CUDA merupakan kependekan dari

Compute Unified Device Architecture yaitu sebuah teknologi yang dikembangkan oleh NVIDIA untuk mempermudah utilisasi GPU untuk keperluan umum (non-grafis). Arsitektur CUDA ini memungkinkan pengembang perangkat lunak untuk membuat program yang berjalan pada GPU buatan NVIDIA dengan syntax yang mirip dengan syntax C yang sudah banyak dikenal. CUDA memiliki beberapa keunggulan, diantaranya adalah:

 CUDA menggunakan bahasa “C” standar, dengan beberapa ekstensi yang simpel.

 Adanya Shared Memory

Support penuh terhadap operasi integer dan bitwise.

 Proses download dan readbacks yang lebih cepat dari dan ke GPU.

 CUDA dapat mempercepat kerja suatu proses.

 Selain dengan bahasa C, CUDA juga

support dengan standar bahasa dan API lainnya.

Algoritma Quicksort

Beberapa hal yang membuat quicksort

lebih baik daripada proses sorting lainnya :

 Secara umum memiliki kompleksitas O(n log n).

 Algoritmanya sederhana dan mudah diterapkan pada berbagai bahasa pemrograman dan arsitektur mesin secara efisien.

 Dalam prakteknya adalah yang tercepat dari berbagai algoritma pengurutan dengan perbandingan, seperti merge sort

dan heap sort.

 Melakukan proses langsung pada input (in-place) dengan sedikit tambahan memori.

 Bekerja dengan baik pada berbagai jenis input data (seperti angka dan karakter). Algoritma quicksort juga memiliki beberapa kekurangan, seperti :

 Sedikit kesalahan dalam penulisan program membuatnya bekerja tidak beraturan (hasilnya tidak benar atau tidak pernah selesai).

(5)

 Memiliki ketergantungan terhadap data yang dimasukkan, yang dalam kasus terburuk memiliki kompleksitas O(n2).

 Secara umum bersifat tidak stable, yaitu mengubah urutan input dalam hasil akhirnya (dalam hal inputnya bernilai sama).

 Pada penerapan secara rekursif (memanggil dirinya sendiri) bila terjadi kasus terburuk dapat menghabiskan

stack dan memacetkan program.

3. METODE DAN PERANCANGAN

Rancangan Algoritma Quicksort Secara Sekuensial

Quicksort yang bekerja secara

sekuensial, algoritma yang digunakan adalah:

 Pada deretan bilangan acak, pilihlah salah satu angka yang akan dijadikan pivot.

 Bagi deretan kedalam dua sub bagian yang terdiri dari “Deretan Rendah” yang berisi deretan angka yang nilainya lebih kecil dari pivot dan “Deretan Tinggi”

yang berisi deretan angka yang nilainya lebih besar dari pivot.

 Deretan rendah dan deretan tinggi tersebut akan memanggil dirinya sendiri secara berulang dengan menggunakan sebuah procedure hingga datanya terurut.

 Hasil akhir dari proses sorting tersebut akan digabungkan dengan urutan deretan rendah, pivot dan deretan tinggi.

Rancangan Algoritma Quicksort Secara Paralel Quicksort yang bekerja secara paralel, algoritma yang digunakan adalah:

 Awalnya setiap proses dimulai menggunakan algoritma quicksort secara sekuensial

 Kemudian kita akan mengganti nilai pivot dengan nilai yang mendekati nilai tengah. Hal ini dapat dilakukan oleh proses yang bertanggung jawab untuk

memilih pivot, sehingga proses tersebut juga dapat mengambil nilai tengah

 Langkah selanjutnya terdiri dari beberapa tahapan, yaitu :

 Broadcast

Pada bagian ini, pivot yang telah dipilih di broadcast atau disebarkan kedalam proses-proses lainnya.

(6)

 Membagi deretan menjadi dua sub bagian

Setiap proses akan membagi deretan bilangan acak tersebut kedalam dua sub bagian yaitu deretan angka dengan nilai yang lebih kecil dari pivot dan nilai yang lebih besar dari pivot. Kemudian, proses akan membagi bilangan-bilangan tersebut kedalam dua kelompok dan akan menjalankan algoritma rekursi.

 Menukar proses yang berdampingan

Setelah rekursi log P, setiap proses memiliki daftar bilangan acak yang nilainya sepenuhnya disjoint (peristiwa tidak saling lepas) dari nilai-nilai yang terjadi pada proses lainnya.

 Berikutnya adalah pada tiap proses akan dilakukan penggabungan deretan angka yang telah diurutkan

Persiapan Software Yang digunakan

Agar dapat menjalankan program CUDA, harus dipersiapkan terlebih dahulu beberapa software yang digunakan. Proses installasi software yang digunakan untuk

mejalankan teknologi CUDA adalah install Nvidia Graphics Driver 285.62, install Nvidia CUDA Toolkit v3.2 dan Install GPU Computing SDK 3.2

4. UJI COBA DAN ANALISA

Sebelum melakukan uji coba, terdapat spesifikasi khusus dari hardware dan

software yang digunakan agar dapat

menjalankan program secara paralel GPU. Spesifikasi tersebut antara lain :

 Spesifikasi Hardware (Perangkat Keras)

 Notebook ASUS N43SL

 Prosesor Intel Core i3 2310M 2.2 GHz

 GPU Nvidia GeForce GT 540M 2 GB yang mendukung teknologi CUDA

 Memori DDR3 1333 MHz SDRAM 2 GB

 Harddisk 640 GB

 Spesifikasi Software (Perangkat Lunak)

 Sistem Operasi Microsoft Windows 7 Ultimate 32bit

 Microsoft Visual Studio 2008 sebagai IDE

(7)

 NVIDIA Graphics Driver 285.62

 NVIDIA CUDA Toolkit v3.2

 NVIDIA GPU Computing SDK 3.2

Uji Coba Program Secara Sekuensial

Rata-rata waktu yang didapat dari tiga kali percobaan pada masing-masing jumlah data secara sekuensial dapat dilihat pada tabel dibawah ini :

Tabel 1.

Tabel rata-rata waktu dari percobaan secara sekuensial

Percobaan

[ke-] Jumlah Data

Rata-Rata waktu per 3x perulangan (ms) 1 512 540 2 1024 1075.333 3 1536 1575 4 2048 2070.667 5 2560 2803.667 6 3072 2952.333 7 3584 3497.333 8 4096 4056.667 9 4608 4773 10 5120 5290.333 11 5632 5578.667 12 6144 6592.667 13 6656 7001.333 14 7168 7563 15 7680 8992.667 16 8192 9407 17 8704 9986.667 18 9216 10322.33 19 9728 11041 20 10240 11832.67

Uji Coba Program Secara Paralel GPU

Rata-rata waktu yang didapat dari tiga kali percobaan pada masing-masing jumlah data secara parallel GPU dapat dilihat pada tabel dibawah ini :

Tabel 2.

Tabel rata-rata waktu dari percobaan secara paralel GPU

Percobaan

[ke-] Jumlah Data

Rata-Rata waktu per 3x perulangan (ms) 1 512 78.248 2 1024 155.822 3 1536 239.277 4 2048 280.876 5 2560 330.023 6 3072 348.759 7 3584 414.134 8 4096 465.967 9 4608 506.016 10 5120 521.832 11 5632 568.049 12 6144 640.376 13 6656 646.23 14 7168 775.041 15 7680 830.554 16 8192 840.223 17 8704 944.05 18 9216 1120.841 19 9728 1156.468 20 10240 1305.295

(8)

Speedup

Setelah melakukan percobaan, maka dapat dihitung speedup yang dicapai pada masing-masing jumlah data, seperti :

Tabel 3.

Tabel hasil perhitungan speedup Percobaan

[ke-] Jumlah data Speedup

1 512 7.018 2 1024 7.043 3 1536 7.21 4 2048 8.921 5 2560 8.979 6 3072 9.491 7 3584 9.768 8 4096 9.896 9 4608 9.915 10 5120 9.993 11 5632 10.006 12 6144 10.237 13 6656 10.37 14 7168 10.573 15 7680 10.659 16 8192 11.089 17 8704 10.203 18 9216 9.177 19 9728 9.055 20 10240 9.05 Efisiensi

Efisiensi yang dihasilkan dari jumlah data yang dilakukan pada uji coba akan ditampilkan pada tabel dibawah ini :

Tabel 4.

Tabel hasil perhitungan efisiensi

Percobaan

[ke-] Jumlah data Efisiensi

1 512 7.31 2 1024 7.337 3 1536 7.51 4 2048 9.293 5 2560 9.353 6 3072 9.887 7 3584 10.175 8 4096 10.308 9 4608 10.328 10 5120 10.409 11 5632 10.423 12 6144 10.664 13 6656 10.802 14 7168 11.014 15 7680 11.103 16 8192 11.551 17 8704 10.628 18 9216 9.559 19 9728 9.432 20 10240 9.427 Hasil Analisa

Berdasarkan data yang dihasilkan dari uji coba secara sekuensial dan parallel GPU,

maka waktu eksekusi yang diperoleh dapat digambarkan seperti grafik dibawah ini :

(9)

Gambar 1.

Grafik lini proses sekuensial dan paralel GPU

Dilihat dari grafik diatas, proses yang dilakukan secara sekuensial membutuhkan waktu yang jauh lebih lama dibanding proses yang dilakukan secara paralel GPU. Hal ini dikarenakan pemrosesan paralel

dapat mempercepat suatu proses dibanding jika proses tersebut dikerjakan secara sekuensial karena ketika suatu proses dikerjakan secara paralel, instruksi-intruksi yang ada dalam proses tersebut dijalankan tidak secara masing-masing melainkan secara serempak dengan terjadinya komunikasi antara satu sama lainnya. Penggunaan hardware juga akan mempengaruhi kinerja suatu proses paralel karena semakin tinggi spesifikasi hardware

maka kinerja komputer paralel akan semakin baik dan cepat. Selain itu, jumlah core pada graphic card juga mempengaruhi proses komputasi paralel.

5. Penutup Kesimpulan

Berdasarkan uji coba yang telah dilakukan pada program quicksort yang bekerja secara sekuensial dan paralel GPU maka dapat ditarik beberapa kesimpulan, yaitu :

 Waktu eksekusi program secara paralel GPU lebih cepat dibanding program yang dieksekusi secara sekuensial.

 Grafik yang dihasilkan dari dua percobaan diatas adalah grafik non linier.

 Waktu eksekusi yang diperoleh secara sekuensial dan paralel GPU selain dipengaruhi oleh jumlah data juga

dipengaruhi oleh spesifikasi hardware yang digunakan serta tugas atau task apa saja yang sedang dikerjakan oleh komputer.

 Nilai speedup dan efisiensi yang diperoleh pada dasarnya akan meningkat sesuai dengan meningkatnya jumlah data yang digunakan. Namun, peningkatan nilai speedup dan efisiensi tidak stabil dikarenakan sedikitnya jumlah data yang digunakan serta adanya preprocessing.

(10)

Saran

Penulis berharap untuk perkembangan selanjutnya dilakukan uji coba dengan

graphic card dan spesifikasi hardware

lainnya serta penggunaan data yang lebih banyak dan beragam agar dapat mengetahui

perbedaan waktu eksekusi antara komputasi sekuensial dan paralel GPU serta dapat mengetahui apakah nilai speedup dapat mencapai angka 24 sehingga tugas akhir ini dapat lebih bermanfaat.

Referensi

[1] Intoduction to CUDA. NVIDIA, http://www.sdsc.edu/us/training/assets/docs/ NVIDIA-01-Intro.pdf.

[2] NVIDIA CUDA 2.2 Installation and Verification on Microsoft Windows XP and Windows Vista. NVIDIA, http://developer.download.nvidia.com/. [3] NVIDIA CUDA C Programming Guide. NVIDIA, http://developer.download.nvidia.com/comp ute/cuda/. [4] Quicksort Algorithm. http://cprogramminglanguage.net/quicksort-algorithm-c-source-code.aspx. [5] Quicksort (Hours13). http://digishared.blogspot.com/2010/05/quic ksort-hours13.html.

[6] CUDA Basics. NVIDIA, http://developer.download.nvidia.com/CUD A/training/, April 2009.

[7] Bagus Irawan Ajinagoro. Aplikasi Sistem Paralel Menggunakan Prosesor Host

486 Berbasis Linux Debian. http://www.komputasi.lipi.go.id/data/10142 24400/data/1123986635.pdf, 2005.

[8] Mochamad Hariadi dan I Ketut Eddy Purnama Anton Siswo. Analisa Pengaruh Perubahan Parameter Dalam Proses Render Dengan General Purpose Graphical Processing Unit (GPGPU).

http://digilib.its.ac.id/public/ITS- Undergraduate-15535-2205100124-Paper.pdf.

[9] dkk Auriza Rahmad Akbar, Herbet Sianipar. Implementasi Paralel Merge Sort Dengan Menggunakan MPICH2 Dan Perbandingannya Dengan Implementasi Sekuensial.

http://auriza.site40.net/notes/docs/paralel/, 2009.

[10] Daniel Cederman and Philippas Tsigas.

volume 01.

http://www.cse.chalmers.se/research/group/ dcs/TechReports/gpuqsort.pdf, 2008.

(11)

[11] Yulisdin Mukhlis dan Lingga Harmanto. Metode Sorting Bitonic Pada GPU. http://openstorage.gunadarma.ac.id/ mwiryana/KOMMIT/per-artikel/02-02-007-Metode02 Februari 2007.

[12] Bambang Siswoyo dan Riffa Haviani Endang Pujiatiningsih. Analisis Perbandingan Algoritma Metode Pengurutan Quicksort, Metode Pengurutan Selection Sort dan Metode Pengurutan Heapsort. http://elib.unikom.ac.id/files/disk1/16/jbptun ikompp-gdl-s1-2004-endangpuji-769-Jurnal.pdf.

[13] Alexander Greb and Gabriel Zachmann. http://www.mimuw.edu.pl/

ps209291/kgkp/slides/ifi0611gress.pdf. [14] Abdullah Hafidh. http://abdullahhafidh.files.wordpress.com/20 11/02/, Februari 2011.

[15] Salman Ul Haq. How to Run CUDA 3.0 on Visual Studio 2008. http://www.programmerfish.com/how-to-run-cuda-3-0-on-visual-studio-2008/, 23 Juni 2010.

[16] Adityo Jiwandono. Implementasi AES-ECB 128-bit untuk Komputasi Paralel pada GPU Menggunakan Framework NVIDIA CUDA. http://informatika.stei.itb.ac.id/

rinaldi.munir/Kriptografi/2010-2011/Makalah1/.

[17] Maria A. Kartawidjaja. Analisis Kinerja Perkalian Matriks Paralel Menggunakan Metrik Isoefisiensi, volume 10. http://puslit2.petra.ac.id/ejournal/index.php/j te/article/viewFile/17788/17704, Oktober 2008.

[18] Fachrie Lantera. Kompleksitas Algoritma Quick Sort. http://informatika.stei.itb.ac.id/

rinaldi.munir/Matdis/2008-2009/Makalah2008/Makalah0809-019.pdf. [19] Richard Membarth. CUDA Parallel Programming Tutorial. Number 19. http://pdsgroup.hpclab.ceid.upatras.gr/files/, Maret 2009. Hardware-Software-Co-Design University of Erlangen-Nuremberg.

[20] Miguel Cardenas Montes. First Program Learning CUDA to Solve Scientific Problems. http://wwwae.ciemat.es/ cardenas/CUDA/T2-FirstProgram.pdf, 2010. Centro de Investigaciones Energeticas Medio-ambiantales y Technologicas, Madrid, Spain.

[21] Greg Ruetsch and Brent Oster. Getting Started With CUDA. http://www.nvidia.com/content/cudazone/do wnload/, 2008.

[22] Ayushi Sinha. Sorting on CUDA. Providence College, http://digitalcommons.providence.edu/, 2011

Referensi

Dokumen terkait

DITUNJUKAN DENGAN BERBAGAI BENTUK / SERTA MENGGUNAKAN MEDIA YANG BERMACAM MACAM // FEDERASI AEROSPORT SELURUH INDONESIA (. FASI ) PROPINSI DAERAH ISTIMEWA YOGYAKARTA / DAN

[r]

RKA - SKPD 2.1 Rincian Anggaran Belanja Tidak Langsung Satuan Kerja Perangkat Daerah. RKA - SKPD 2.2 Rekapitulasi Anggaran Belanja Langsung Menurut Program dan

Panitia Pengadaan Jasa Konsultansi Dinas Bina Marga Kota Semarang akan melaksanakan Prakualifikasi untuk paket pekerjaan jasa konsultansi dengan sumber dana DAU T.A..

Calon Penyedia diharapkan membawa berkas-berkas asli sesuai dengan dokumen yang di Persyaratkan(upload), Cap Stempel Perusahaan dan salinan dokumen penawaran sebagai

Lambang Organisa.

[r]

Oleh karena itu, peneliti memilih menggunakan metode deskriptif karena penelitian ini meneliti permasalahan yang berlangsung pada saat sekarang, sendangkan studi