Metode Sorting Bitonic Pada GPU
Total Page:16
File Type:pdf, Size:1020Kb
View metadata, citation and similar papers at core.ac.uk brought to you by CORE provided by Gunadarma University Repository Metode Sorting Bitonic Pada GPU Yulisdin Mukhlis1 Lingga Harmanto2 Universitas Gunadarma Universitas Gunadarma Jl. Margonda Raya no 100 Depok Jl. Margonda Raya no 100 Depok [email protected] [email protected] Abstrak— Perubahan arsitektur komputer menjadi GPU adalah sebuah prosessor multithread yang mampu multiprocessor memang bisa membuat lebih banyak proses mendukung jutaan pemrosessan data pada satu waktu. Metode bisa dikerjakan sekaligus, namun perubahan tersebut tidaklah pemrosesan menggunakan konsep paralelisme antar thread. mampu meningkatkan kecepatan masing-masing proses secara Gambar arsitektur secara umum dari GPU diperlihatkan signifikan. Peningkatan kecepatan setiap proses bisa dicapai seperti pada gambar dibawah : melalui peningkatan kecepatan perangkat lunak. Kecepatan perangkat lunak sangat ditentukan oleh algoritmanya. Usaha untuk mencari algoritma yang lebih cepat tidaklah mudah, namun dengan adanya komputer multiprocessor, dapatlah dirancang algoritma yang lebih cepat, yaitu dengan memparalelkan proses komputasinya. Salah satu contoh implementasi dari multiprosessor pada desain grafis adalah GPU (graphical processing unit) yang dipelopori oleh NVIDIA. GPU menerapkan algoritma dari paralel computing. Salah satu algoritma tersebut adalah sorting. Sorting adalah salah satu masalah pokok yang sering Gambar 1. Arsitektur GPU dikemukakan dalam pemrosesan paralel. Strategi pemecahannya adalah dengan algoritma Divide and Conquer GPU terdiri dari n thread prosessor dan device memory. Setiap yaitu strategi pemecahan masalah dengan cara melakukan thread prosessor, terdiri dari beberapa precision FPU pembagian masalah yang besar tersebut menjadi beberapa (Fragment Processing Unit) dan 1024 register 32 bit. Device bagian yang lebih kecil secara rekursif hingga masalah memory akan menjadi tempat pemrosesan data sementara tersebut dapat dipecahkan secara langsung. Solusi yang selama pemrosesan paralel. didapat dari setiap bagian kemudian digabungkan untuk Pada pemrosesan data, GPU menggunakan metode shared membentuk sebuah solusi yang utuh. Metode sorting seperti memory multiprosessor. Kelebihan shared memory ini dinamakan sebagai bitonic sort. multiprocessor jika dibandingkan dengan jenis Parallel Kata kunci : GPU, Bitonic, paralel computing, algoritma, Computer yang lain adalah lebih cepat dan efisien karena sort kecepatan transfer data antar unit komputasi tidak mengalami degradasi. Hal ini disebabkan karena tiap-tiap unit komputasi yang digunakan terhubung hingga tingkat bus. I. PENDAHULUAN Shared Memory Multiprocessor juga memiliki kekurangan Salah satu masalah kompleks yang hingga kini masih yang cukup signifikan, diantaranya : membutuhkan kemampuan komputasi yang besar adalah • Sulit untuk mengkoordinasikan pembagian memori yang metode sorting pada pemrosesan paralel (Parallel Computing). tersedia untuk masing-masing unit komputasi Parallel Computing merupakan teknik menjalankan program • Relatif lebih mahal dan lebih rumit untuk untuk menjalankan suatu proses dengan menggunakan lebih diimplementasikan dari satu unit komputasi[1]. Parallel Computing mempunyai • Tidak tahan lama, sistem jenis ini lebih sulit untuk prinsip yang bersesuaian dengan algoritma Divide and diupgrade. Compare, yaitu membagi-bagi proses menjadi bagian-bagian Salah satu permasalahan dalam programing GPU dengan yang cukup kecil, selanjutnya data- dan tersebut akan CUDA adalah relasional query coprocessing pada graphics dibandingkan derajatnya, sehingga dimungkinkan untuk processors.Permasalahan tersebut meliputi mapping, scatter, dikerjakan oleh sebuah unit komputasi. Terdapat 2 klasifikasi gather, reduce, prefix scan, split, filter dan sorting. Beberapa parallel computer yang penting, yaitu : permasalahn tersebut sebenarnya merupakan permasalahan • Sebuah komputer dengan banyak unit komputasi internal, yang biasanya terjadi pada parallel computing. Karena atau lebih dikenal sebagai Shared Memory Multiprocessor permasalahan tersebut menyangkut parallel computing, maka • Beberapa komputer yang terhubung melalui sebuah hal tersebut tentunya berhubungan erat dengan apa yang jaringan, atau lebih dikenal sebagai Distributed Memory terjadi dalam pemrosesan data pada GPU, mengingat hampir Multicomputer. semua pemrosesan yang terjadi pada GPU identik dengan sistem yang ada pada paralel computing [1,2]. Gambar 2. Shared Memory Multiprocessor pada GPU B. Divide and Conquer II. PENGURUTAN (SORTING) Divide and Conquer adalah metode pemecahan masalah yang bekerja dengan membagi masalah (problem) menjadi beberapa Sort menurut Kamus Komputer dan Istilah Teknologi upa-masalah (subproblem) yang lebih kecil, kemudian Informasi adalah penyortiran, biasa digunakan juga dalam arti menyelesaikan masing-masing masalah secara independen dan pengurutan. Penyortiran ini disusun berdasarkan kriteria akhirnya menggabung solusi masalah sehingga menjadi solusi tertentu. Algoritma-algoritma pengurutan (sorting) dapat masalah semula. Termasuk di dalam algoritma Divide and diklasifikasi berdasarkan teknik yang digunakan dalam Conquer adalah : algoritma tersebut. Pengklasifikasiannya adalah sebagai 1. Merge sort berikut [3,4] : Sebuah algoritma pengurutan yang membagi item yang A. Brute Force akan diurutkan menjadi dua bagian, dan secara rekursif Brute force adalah sebuah pendekatan yang lempang mengurutkan masing-masing bagian tersebut, lalu (straightforward) untuk memecahkan suatu masalah (problem menggabungkannya sampai berakhir. statement) dan definisi konsep yang dilibatkan. Algoritma 2. Insertion sort Brute force memecahkan masalah dengan sangat sederhana, Sebuah algoritma pengurutan dengan mengambil item dan langsung dan dengan cara yang jelas (obvious way). Yang memasukkannya ke dalam struktur data yang secara termasuk di dalam algoritma Brute force adalah : berulang kali dalam susunan yang tepat. 1. Bubble sort 3. Quick sort Sebuah algoritma pengurutan yang mengambil Merupakan algoritma pengurutan paling tua dengan sebuah elemen dalam larik sebagai pivot, mempartisi metode pengurutan paling sederhana. Pengurutan yang elemen sisanya menjadi elemen yang lebih besar dan dilakukan dengan membandingkan masing-masing item elemen yang lebih kecil daripada pivot, dan secara rekursif dalam suatu list secara berpasangan, menukar item jika mengurutkan hasil dari partisi tersebut. diperlukan, dan mengulaginya sampai akhir list secara 4. Selection sort berurutan, sehingga tidak ada lagi item yang dapat ditukar. Sebuah algoritma pengurutan yang secara berulang 2. Bidirectional bubble sort mencari item yang belum terurut dan mencari paling Merupakan variansi dari algoritma bubble sort, dimana sedikit satu untuk dimasukkan ke dalam lokasi akhir. item dalam suatu list dibandingkan secara berpasangan, 5. Shell sort menukarnya jika diperlukan, dan mempunyai alternatif Merupakan algoritma yang stau jenis dengan insertion sort, melalui list secara berurutan dari awal sampai akhir dimana pada setiap nilai i dalam n/i item diurutkan. Pada kemudian dari akhir sampai awal lagi hingga tidak ada setiap pergantian nilai, i dikurangi sampai 1 sebagai nilai pertukaran (swap) yang dapat dilakukan. terakhir. C. Paralel Sorting Paralel sort adalah metode sorting yang dipakai pada pemrosesan paralel. Metode ini biasanya dipakai untuk kebutuhan pemrosesan data yang besar dan cepat. Yang termasuk dalam metode sorting paralel ini adalah : a. Radix Sort Secara kompleksitas waktu, radix sort termasuk ke dalam Divide and Conquer. Namun dari segi algoritma untuk melakukan proses pengurutan, radix sort tidak termasuk dalam Divide and Conquer. Radix sort merupakan sebuah algoritma pengurutan yang mengatur pengurutan nilai tanpa melakukan beberapa perbandingan pada data yang dimasukkan. [6] b. Bitonic Sort Gambar 4. Comparasion Network Merupakan algoritma sorting Devide and Conguer. Namun aplikasi dari bitonic lebih tepat dipakai pada paralel computing. Suatu half cleaner adalah comparison network dengan kedalaman 1 di mana masukan ke i akan dibandingkan III. BITONIC SORT dengan masukan ke-( i + n /2) untuk i = 1,2,…, n /2. Jika Bitonic Sort adalah suatu algoritma pengurutan paralel masukan dari half cleaner adalah bitonic sequence berukuran n menggunakan sorting network. Komponen terkecil dari sorting , maka keluarannya adalah dua bitonic sequence yang masing- network adalah comparator , yaitu suatu perangkat dengan masing berukuran n /2 dan data pada bitonic sequence ke-2 = dua masukan, x dan y, dan dua keluaran, x ’ dan y ’, di mana data bitonic sequence ke-1. Half cleaner dapat diterjemahkan x ’ = min(x , y) dan y ’ = max( x , y ). Pada beberapa algoritma menjadi modul algoritma berikut ini, yang waktu eksekusinya berikut, titik (.) diasumsikan sebagai 1 buah Fragmen adalah O (1) : Processing [3,5]. HALF-CLEANER(a, start, n) COMPARATOR(x,y) for i start to if x > y then start+n/2-1 in parallel do temp x COMPARATOR(a[i],a[i+n/2]) x y y temp Dengan menggunakan half cleaner dapat dibentuk Bitonic Sorter. Bitonic Sorter( n ) dapat dibentuk dengan Apabila diilustrasikan algoritma diatas dalam hubungannya menghubungkan kabel keluaran dari half cleaner( n ) dengan dengan pembanding jaringan, digambarkan sebagai berikut : kabel masukan dari dua Bitonic Sorter( n /2). Gambar 3. Komparator Diasumsikan setiap comparator membutuhkan waktu O (1) untuk melakukan operasinya. Dengan menghubungkan sejumlah comparator dengan kabel, dapat dibentuk sebuah Comparasion network.