Abstract—Biasanya algoritma divide and conquer masalah fibonacci sebagai dasar dari pemodelan
dilakukan dieksekusi dengan satu buah prosesor saja. multithread serta algoritma quicksort untuk
Setiap subrutin dieksekusi satu per satu, sehingga permasalahan divide and conquer.Akan diperlihatkan tes
kompleksitas waktu dihitung berdasarkan jumlah waktu
setiap subrutin. Pada makalah ini akan dibahas
untuk mengetahui kelebihan dan kekurangan dalam
penggunaan multithread untuk algoritma divide and menggunakan multithread untuk algoritma divide and
conquer. Dengan penggunaan multithread, maka setiap conquer.
subrutin dieksekusi secara konkurensi(bersamaan)
sehingga kompleksitas waktu totalnya bisa jauh berkurang. II. ALGORITMA MULTITHREAD
Pada makalah ini akan dibahas cara pemodelan untuk
multithread untuk algoritma divide and conquer. Selain itu A. Definisi
juga akan dibahas kelemahan dalam penggunaan Multithread artinya kemampuan CPU untuk
multithread ini serta parameter yang harus mngeksekusi satu atau lebih instruksi(penjumlahan,
dipertimbangkan dalam menentukan kompleksitas baik perkalian dan lainnya) pada waktu yang bersamaan.
ruang maupun waktu dari algoritma divide and conquer.
Pembaca makalah diharapkan pernah memahami hal-hal
Thread itu sendiri merupakan bagian terkecil yang bisa
mengenai konkurensi dan dasar-dasar dari sistem operasi dieksekusi oleh sistem operasi dan ini bisa dijalankan
dalam alokasi dan eksekusi program. Pada makalah ini secara konkurensi atau bersamaan dengan thread lain
juga akan dijelaskan sedikit mengenai alokasi resource dan yang sedang berjalan. Hal ini dimungkinkan karena
multithread itu sendiri. adanya proses multiprogramming(pergantian eksekusi)
oleh sistem operasi. Sistem operasi sekarang(berbasis
Kata kunci – Divide and Concquer, multithread, sistem linux dan NT atau windows sudah bisa melakukan
operasi, kompleksitas, performansi multiprogramming). Dengan adanya jumlah prosesor
lebih dari satu, multithread bisa dilakukan dengan lebih
efektif lagi(bisa saja satu thread memakai satu core untuk
I. PENDAHULUAN melakukan eksekusinya). Seperti yang sudah dijelaskan
Banyak algoritma yang diterapkan merupakan pada pendahuluan, komputer multiprosesor sudah
algoritma serial. Salah satunya adalah algoritma Divide banyak beredar di kalangan informatikawan,
and Concuqer. Algoritma serial artinya algoritma pengembang perangkat lunak bahkan di kalangan
tersebut dijalankan secara serial pada komputer masyarakat sendiri(mulai dari dua core sampai tujuh
uniprocesor(atau oleh satu prosesor), di mana pada core). Meskipun demikian, sampai sekarang tidak ada
algoritma serial hanya satu instruksi dieksekusi pada satupun model yang diterima secara luas. Alasan
suatu waktu. Di zaman yang modern ini, komputer utamanya adalah karena vendor tidak menyetujui pada
kebanyakan sudah multiprosesor(mulai dari dualcore, sebuah model untuk komputer pararel. Berikut dijelaskan
core to duo, core i3, core i5 dan corei7). Dengan adanya beberapa paradigman pemodelan multithread :
lebih dari satu prosesor, kita bisa memaksimumkan 1. Shared memory, artinya masing-masing prosesor
semua prosesor ini untuk memperbaiki performansi dari dapat secara langsung mengakses lokasi memory thread
algoritma yang ada. Oleh karena itulah penulis tertarik manapun.
untuk membahas mengenai penggunaan multithread 2, Distributed memory, di mana di pemodelan ini
terutama untuk algoritma divide and conquer. setiap prosesor memiliki memori sendiri yang bersifat
Algoritma yang akan dipilih di sini adalah algoritma privat(tidak bisa diakses oleh prosesor lain). Agar
divide and conquer. Karena kebanyakan masalah divide antarprosesor bisa saling mengakses memori, harus ada
and conquer secara natural paling mudah diselesaikan pesan yang secara eksplisit disampaikan antarprosesor.
dan dimodelkan dengan multithread programming. Hal
ini karena algoritma divide and conquer sendiri membagi Dengan adanya teknologi multicore di setiap laptop
masalah menjadi subrutin yang bisa dikerjakan secara ataupun komputer. Pemodelan shared memory lebih
konkuren atau bersamaan. Meskipun demikian akan banyak digunakan. Perlu diperhatikan bahwa digunakan
diberikan satu contoh yang bukan merupakan algoritma static thread untuk pemodelan ini, ini dikarenakan cost
divide and conquer untuk memudahkan pemodelan yang digunakan setiap kali menciptakan dan
multithread untuk algoritma divide and conquer. menghancurkan thread mahal, sehingga thread tersebut
Untuk contoh pemecahan masalah akan dibahas harus hidup selama program berjalan, sehingga disebut
Pseudo-code pengujian dinamis thread algoritma Sistem operasi Linux 32bit 11.10
rekursif fibonacci dengan menggunakan dua thread OneiricOcelot
dengan memanggil fungsi fibonacci serial pada Bagian II JDK Version 1.6
. Pseudo-code di bawah ini ditulis dalam bahasa C :
CPU Core i7 1.79GHz
Memori 4GB, 7Mb 3 level cache
Program testing2threadfib(int n)
search = n
Berikut dilakukan dua jenis percobaan : Gambar 2. Pengujian quicksort dengan ukuran n besar
Gambar 1. Pengujian quicksort dengan ukuran n kecil Gambar 3. Percobaan dinamis multithread untuk
algoritma rekursif fibonacci dengan dua thread
PERNYATAAN
Dengan ini saya menyatakan bahwa makalah yang saya
tulis ini adalah tulisan saya sendiri, bukan saduran, atau
terjemahan dari makalah orang lain, dan bukan plagiasi.
VII. KESIMPULAN
Dari pembahasan bab-bab sebelumnya penulis membuat
beberapa kesimpulan sebagai berikut :