Paralel

Page 1

penerbitan usahaan m. Telahdiketahui pitalisasi, dan spasi memerlukanlebih ngkattinggi, suatu

:, Tom merangkak

Bab

StrategiPembagian danDivide-andConquer

langgunyaterbang apayangdikiranya rya sesaatsebelum ,erluuntukmeneliti ntukmenggunakan onganlebih kecil. a dimintamembuat n kepada penerbit

n setiapbagian ke danmenyampaikan lrsi bakteri sebagai lanyabakteri sama rcmbalikannyadan , beberapa prosesor epatsecaraekfektif mgtelahdijelaskan

tujuannya adalah rcaraparalel untuk sal, membersihkan anjau yang belum asi teknologiNano enjaminbahwa apa

Di dalam bab ini, kita menjelajahi dua teknik yang sangat mendasardalam pemrogramanparalel, yaitu pembagian dan divide and conquer.Teknik-teknik tersebut saling berkaitan. bi dalim pemfaglan, suatu maryla-hdibagi menjadi komponen-komponenyang terpisahdan masing-masingbagian dikompritasisecara terpisah.Divide and conquer pada umumnya menerapkanpembagiansecaraUerutangdenganiecara terusmenerusmembagimasalahke dalam bagianyang lebih kecil dan lebih kecil lagi, se-belurimenyelesaikan bagian-bagianyang lebih kecil dan menggabungkanhasilnya. Pertama,kita afan meninjau ulang teknik pembagian.Kemudian, kita mendiskusikankembali metode"Divide andConquer". Berikut akan diuraikan secara.singkatbeberapapermasalahankhusus yang dapat dipecahkanmenggunakanpendekatantersebut. ' Sepeni biasa, ada suatu seleksi ilmiah/numerik dan permasalahannyata di akhir bab.

4.1 PEMBAGIAN 4.1.1

Strategi-strategi Pembagian

PembagianQtartitioning) memecah masalah ke dalam bagian-bagian.Hal itu menjadi dasar dari semua pemrogramanparalel. Permasalahanembarrasingly paralel pada bab terakhir menggunakanpembagian tanpa interaksi antarbagian. Bagaimanapunjuga, kebanyakan rumus pembagian me-merlukanhasil dari bagian-bagiannya untuk kemudian dikombinasikanguna memperolehhasil yang diinginkan.pembagian dapat diterapkan pada data program (dengan kata lain membagi data dan operasi atai data yang diSagi secarabersamaan).Itu disebutdatapartitiomng (pembagiandata) ataudomain decomposition(detomposisi domain).Pembagiandapatjuga berlaku untuk fungsi suatuprogram (dengankata lain membaginyake dalam fungsi-fungsibebasdan mergeksekusinyasecarabersamain\.iattanftuncTionaldecomposittoi(iekomposisi fungsional). Gagasanuntuk melaksanakansuatu tugas denganmembaginya menjadi sejumlah tugas lebih kecil.-Jika_tugas-tugas tersebutselesaidilaksanakan,maka keseluruhantugasakin terselesaikanjuga. Hal itu telah diketahui dan dapat diterapkan dalam berbagai situasi, baik ketika tugas-tugasyang lebih kecil terlaksanaatas bagian-bagiandata atau sebagaifungsi-fungsi yang terpisah dalam wa[tu yunf b.rrurnuun. Sulit untuk mengetahuifungsi-fungsi yang bersamaandalam suatupermasalahan,tetapi p;rtis-l data adalah strategiutama untuk pemrogramanparalel.


Untuk mengambil anggapsuatuurutanbilangan,xo...x,_r, .contohpartisidatayang sangatsederhana, akanditambahkan. Hal itu merupakan suatupermasalahan yangberulangdi dalamteksuntuknienun;uttiii sebuahkonsep.Kecualibila adasejumlahbesarbilanganyang berurutan,suatusolusiparaleltidak akan juga, pendekatan bermanfaat. Bagaimanapun tersebutdapatdilunakanuntukaplikasiybng lebihrealistis meliputikalkulasikomplekspadadatabase yangbesar. Anggaplahkita membagiurutanke dalamp bagiandarijumlah n/p padamasing-masinE, (xn... x,.,_,titik p (ataubeberapa prosesfmasinglmaiing til(ii ,), (xro1..!pao-r),...,(xa,rwo...x,-,),di manaprosesor menambahkan satuurutansecarabebasuntuk menciptakanpenjumlahanparsial.Penjumlahan parsialp harusdigabungkan bersamauntukmemperoleh penjumlahan akhir.Gambar4.1 menunjukkan penyusunan di mana prosesortunggal menambahkan penjumlahparsialp. (Penambahan akhir dapatdipaialelisasi menggunakan konstruksipohon,tetapi itu tidak akandilakukandi sini). Ingatlahbahwasetiip prosesor memerlukan akseske bilangan-bilangan yangharusdiakumulasi. Dalamsistemmessage-passing, bilanganbilangantersebutperlu disampaikanke prosesorsecaraindividu..(Dalamsuatusisiemsharedmemory, masing-masing prosesorbisamengakses bilangan-bilangan yang diinginkandari sharedmemory.Dalam hal ini, sistemsharedmemoryjelas-jelasakansesuaiuntukhal itu danmasalahlain yangserupa.; Kode paralel dalam contoh ini benar adanya.Untuk sebuahpendekatanmaster-slave sederhana, bilangan-bilangan dikirim dariprosesormasterke prosesor-prosesor slave.Merekamenjumlahkan bilangan mereka,bekerjasecaraindependendan secarabersamaan, sertamengirimkanpenjumlahanparsialke prosesormaster.Prosesormastermenambahkan hasilpenjumlahan parsialuntukmendapatkan hasilakhir. Seringkali,kita membicarakan proses-proses ketimbangdenganprosesor-prosesor untuk urutan-urutan kode,di manasuatuprosesdipetakandenganamatbaik ke dalamsuatuprosesor. Menentukanyangterbaikantaramengirimkanseluruhdaftarbilanganke masing-masing slaveatau hanyamengirimkanbilangantertentuke masing-masing slaveadalahsoalyangdapatdibicarakan.Dalam dua hal tersebut,semuabilanganharusdikirim dari master.Seluk-belukmekanismepengirimanperlu diketahuiagarkeputusandapatdiambil berdasarkan manfaat-manfaat relatif dari meftanismetersebut. Suatupengirimanakan memiliki satu waktu startupdibandingkandenganwaktu startupterpisahsaat menggunakan rutin pengirimangandadanmungkinlebihbaik. J0 ... .r(r/p,-l

X,11p.'. Xl2rtpl-l

Pertam send ( ) sec dan satugru recv ( ) sec

Master q

=

n/

(j sen

for

sum =

(j rec sum

for

) Slave taart

Ir

n:rl-

<

tor Ti nar rg r

ec avnr rAs

/ u r \

Jika seb maka dibutul oleh slave,m berikut: Master

s= n/F hnrcf v v g g

Penjumlahan

9

/ \

sum = for (i rec sum ) Slave

Gambar4.1 Partisisuatu urutan bitanganke datam bagian-bagian dan menjumtahkannya.

h^^^+ VUqJ qfarf

ll4

ParallelProgramming

/ L \


xo...x,_r, langan, kmenunjukkan raleltidakakan g lebihrealistis iing,(xo... xrn/p\_ bisa ing-masing tlahanparsialp kanpenyusunan at diparalelisasi setiapprosesor ssing,bilangansharedmemory, memory.Dalam ;erupa.) ilave sederhana, rlahkanbilangan lahanparsial ke rtkanhasil akhir. rk urutan-urutan

Pertama, kita akan mengirim bilangan tertentu ke masing-masing slave menggunakan beberapa send ( ) secaraindividu. Diketahui bilangan n terbagi ke dalam p grup, di mana nlp adalahbilangan bulat dan satu grup ditugaskan dalam satu proses slave, akan ada p slave. Kode menggunakan send ( ) dan recv ( ) secaraterpisah dapat dilihat seperti di bawah ini: Master s : for

n/p; (i : 0r x : 0i i < p; i++, send(&numbers[x], s, P,);

sum : 0; for (i:0; i<p; recv (&part_sum, qrrm

qrrm

+.

n : y*.

rf

u

qttm

Uurll,

!

,/* wait

for

results

/ i

a r : r : r r m u la t e

/*

receive

oart.ial

f rom slaves*/ sums */

) Slave recv (numbers, narl.

rasingslave atau ,icarakan.Dalam rcngirimanperlu :anismetersebut. lup terpisah saat

:

i++) { P A x y;)

/*number of numbers for slaves*/ x : x *s) ,/* send s numbers to slave */

crrm

:

S, P"""t"r)

s numbers from master*/

O. v ,

(i : 0; i < s; i++) / * a d d n u m b e r s /</ : part sum part sum + numbers [i] ; send(epart_sum, P.*.u.) ; / * send sum to master* / for

Jika sebuahrutin pengirimanataumulticastdigunakanuntukmengirimsemuadaftarke setiapslave, slaveuntuk memilih bagiandari urutanuntuk digunakan makadibutuhkankode pada masing-masing padakode komputasitambahandi dalamslave,sebagaimana olehslave,menambahkan langkah-langkah berikut: Master s: n/p; ^l v_u ^P . . ;_ ) b c a s t ( n u m b e r s , S , Pr-r d, v-E. . e_ sum

for

=

,/* number of numbers for sl-aves*/ ,/* send al-l numbers to slaves */

o;

(i : 0, 1 < p; i-++) t recv ( &part_sum, PAxy); sum : sum + part sum;

for

results

/*

wait

/*

accumulate

partial

from slaves*/ sums */

) Slave bcast (numbers, s, P^""t".) = slave number * s; start

/* receive al-I numbers from master*/ */ ,/* slave number obtalned earlier

Strategi Pembagian dqn Divide-and-Conquer

115


end:start+s; part_sum = 0; for (i : start,' i < end,. i++; /* add.numbers */ part_sum : part_sum * numbers til; send(&part-sum, P.*.".) ; /* send sum to master

di dalamMpI, p. Analisiskita jika kitajugam denganberbag tahapanterseb

*/

slave dikenal melalui ID proses,.yangbiasanyadapat dihasilkan denganmemanggilrutin library. paling sering,sekelompokprosesakandibentuk terlebih dahulu danjumtah siaie adalahsebuahjarakatauperingkat di dalam grup. Jarak atau tingkatan adalah suatu.bilanganbutat aari o ke m - l, dimana terdapatm proses di dalam kelompok. MPI memerlukan komunikator untuk dimanfaatkan, aun pior"r;;iii; memiliki tingkatan di dalam sebuahkomunikator, sebagaimanadijelaskan aiaJam suu 2. Beberapakelompok bisa di dalam komunikator, dan proJes-prosesmemiliki tingkatan di dalam ketimpot-telompok fltlu9ul8o* Jika terdapatrutin sebarandan pengurangan,seperti di dalam MpI, maka kodenya akan menjadi:

Langkah slavep untuk membutuhkan I

di mana /ro*oid suatu data word

Master s : n/p; s c a t t e r ( n u m b e r s , & s , P s , o u pr ,o o t : m a s t e r ) r e d u c e _ a d d ( & s u m , & s , -D rna+-..^ ^r ^! vv L-rrroD uet ."^,,-/

; )

,'

/* /* /*

number of numbers */ send numbers to slaves results from sl-aves */

/* /*

r e c e i v e s n u m b er s add numbers */

bergantungpad */

Langkah . Masing-masin nlp-LOlehkr penjumlahan pa ini adalah

Slave scatter

( n u m b e r s , & s , P n . o , or ,o o t : m a s t e r )

;

reduce_add(&part_sumf &s,Pn,o,n,root:master) ;

/*

*/

send sum to master

*/

Ingat, sebuah pseudocode penyebaran dan pengurangan .sederhanadigunakan secara menyeluruh. (membentuk himpunan jika digunakan) mJmiliki banyak p;;"i;;;;;banan aatam p;ilidtu, metiputi berbagaiID sumber maupun tyj.uantNormalnya, operisi rutin reduce akan dispesifikasikansebagaisebuah parameter dan bukan sebagai bagian dari nama rutin seperti di sini. Menggunakan sebuah parameter memungkinkan dipilihnya operaii-operasi berbedu ,".*u mudah. Kode juga akan dibutuhkan guna menertukan kelompok prosesyang terdapat dalam pengiriman, penyeburun, dui pengurangan. walaupun kita menambahkanbilangan, banyik o-peras.iiuin yuttg uisa oitir<ut<?nr.i"g"i gantinya. Sebagaicontoh, nilai maksimum dari tuaiu k"to*pok bisa ditemukan d'andikembalikan ke m-asterdengan tujuan supayamaster menemukanjumlah maksimum.auri r..uu y-g t.tuh dikembalikan kepadanya. Dengan cara yang sama,jumlah keiadian dari se_buahbilangan (atJu karakter, atau string dari beberapa karakter) dapat ditemukan dalam keiompok dan dikembalikai ke master. ^, .Analisis'. Komputasi berurutanmemerlukanpenambahanr - I dengankompleksitaswaktu dari o(n)' Dalam implementasi paralel, terdapat p slave. Untuk analisis impiementuri pu.ui"1, kita akan mengasumsikanbahwa olerasi-operasi dari pioses malt-er tercakup dalam salah r;tu ;l;;;da sebuah model SPMD karenaitulah yang mungkin dilaksanakandalam impterlentasi sesungguhnya.lrnfatutr uarrwa

116

Parallelprogramming

Langkah 3penerimaanrutin

Penggunaan him

Langkah < parsialp, yangm

Waktu Ek pengirimandanp


i

in library.Paling iakatauperingkat n proses ferdapat fprosesmemiliki oakelompok bisa pmpok-kelompok kanmenjadi:

di dalamMPI, datadi dalamroot digunakandalamoperasi-operasi kolektif.)Jadi,jumlah prosesoradalah p' Analisiskita meliputi komunikasidan komputasi'yangterpisah.Lebih mudah untuk menggambarkan jika kitajuga memisahkan tindakan-tindakan teisebut[" ail# tanapanyang berbeda.Sebagaifi?na halnya denganberbagaipermasalahan, terdapatsuatutahapkomunikasiyang'aiifufi oleh tahapfornputasi,dan tahapan tersebutdiulangi. Longkah l-Komunikosi. Pertama,kita harusmempertimbangkan aspekkomunikasidari proses slavep untuk membacajumlah n/p mereka.Penggunaan rutin penlirirun dun penerimaanindividu membutuhkan waktukomunikasidensan t.o ^r: P(t"on (n/P)to,o) o+

banyaknyawaktukonstansebuahtransmisi,dan/*,"adalahwaktuuntukmengirimkan 9]iii1j**rradalah suatudataword.Penggunaan penyebaran jumlahwart:ustartup.Jadi, bisamengurangi r"o..r = t"onur+nt*o

) sl-aves * / laves */

bergantungpada implementasipenyebaran.Dalam kasus apa pun, kompleksitas waktu tetaplah

o(n).

Langkah 2--Komputasi. Selanjutnya, kita perlu memperkirakan jumlah langkah perhitungan. Masing-masing proses slave menambahkanjumlah'n/p bersaia-sama, ying memerlikan penambahan nlp - l. oleh karena semua proses slave p Jedang berjalan bersamaanjkiti dapat rn"ngunggup ,"11uu penjumlahanparsial yang diperoleh dalam langkah-langiah n/p - l. Jadi, waktu perhitungan"daia:mlangkah ini adalah t* or: nlp - |

o master */ lan pengurangan fttiknya, meliputi rn sebagaisebuah lebuahparameter dibutuhkanguna mgan. sebagaigantinya. ke masterdengan rlikankepadanya. ing dari beberapa

Langkah 3-Komunikasi. Mengembalikanhasil-hasilparsialmenggunakanpengiriman individu dan penerimaanrutin yang memiliki waktu komunikasi l"o..z=P(lronuo*

Penggunaanhimpunan dan penguranganmemiliki: 1"o..2: t,nuo+Pl*o Langkah 4'-Komputasi. Untuk akumulasi terakhir, master harus menambahkan penjumlahan parsialp, yang membutuhkan langkahp - l: l.o

ksitaswaktu dari laralel, kita akan lave pada sebuah a.(lngatlahbahwa

/o"o)

rr:P-|

Waktu Eksekusi Keseluruhan Waktu eksekusi keseluruhan untuk masalah tersebut (dengan pengiriman dan penerimaannya)adalah

Strategi Pembagian dan Divide-and-Conquer

ll7


lo = (/"o.*,

* /"o..r)

* (/.o.or + t"o.or)

: p(t"""nup*fulp)t^n+p("o,tup+lautu) + fulp - I +p - l) :2Pt,""nurt(n+ p)t*o+ p + nlp-2 atau t": O(n) untukjumlah prosesoryangpasti. Kita melihatbahwakompleksitas waktu paralelsamadengankompleksitas waktu berurutan dari O(n). Tentunya,jika kita hanya mempertimbangkanaspekkomputasi, rumus paralel lebih baik dari rumus sekuensial. Faktor Pemercepat

sekuensia menjadiba dikombina kapan tuga mengatego hasilnya,da kita akan m lebih kecilI Sebua i n+

-

t if

Faktor pemercepatadalah startup

^ l Y ]

: Faktorpemercepat i=

n-1 2 p t " o n o + ( n +p ) t o ^ o +p + n / p - 2

yang menyarankansedikit pemercepatuntuk sejumlahprosesoryang telah ditentukan.

) Rasio KomputasilKomunikosi.

Rasio komputasi/komunikasidiberikanoleh

='*'o Rasiokomoutasi/komunikari /**

-

p+ nl p-2 2pt"r*ur+(n+ p)tou^

dan sekalilagi, untukjumlah prosesoryangtelahditetapkan,tidak menyarankankesempatan yang signifikan untuk perbaikan. Dengan mengabaikanaspekkomunikasi, faktor pemercepatdiberikan oleh

F a k t o r p e m 'e r c: e+p=a:t: ) : l , ! : ; t" nlp+ p-2 Pemercepat cenderung ke p untukn yangbesar.Namun,untukn yanglebihkecil,pemercepat akanlebih jumlahslave.Hal itu dikarenakan lambatdanburukuntukpeningkatan p - | slavedalamprosesmenunggu selamatahapkeempat,membentukhasilterakhirjika salahsatudigunakanuntukitu. Idealnya,kita menginginkansemuaprosesaktif setiapsaat,yang tidak dapatdicapaimenggunakan perumusanmasalahtersebut.Bagaimanapun juga, perumusanyang lain sangatmembantudan dapat dipergunakan dalampermasalahan dalamcakupanyangluas,yakni pendekatan divide-and-conquer. 4.1.2

Divideand Conquer

Pendekatandivide-and-conquer ditandaidenganpembagiansuatumasalahke dalam submasalah yang bentuknyasamadenganmasalahyang lebih besar.Pembagianlebih lanjut ke dalamsubmasalah yang lebihkecillagibiasanya dilaksanakan denganpengulangan, metodeyangdikenalolehprogrammer sebuah

118

ParallelProgramming

Sepertidala tidak dapatc dalamdafta Jika terdapa tidak terdap masing-ma pemanggila Metode bilanganma membaginy quicl<sortser tidak akanpe ketika terdap masalahyang Ketikan membentuk s atasketikapa konstruksip Gambar4.2,< menjadiduaI hingga menc Konstruksite

I SeperI .. rtrsampaikan seb


kompleksitas rgan Ni, rumusparalel

sekuensial'Metode rekursif akanterus-menerusmembagi masalahsampaitugasitu tidak dapatdipecahlagi menjadibagian yang lebih kecil. Selanjutnya,tugas-tugasyang sangatsederhanadilaksanakandan hasiln/a dikombinasikan, dan diteruskan dengan tugas-yang-lebjh b'esar-lagi. JdJ6(lgg2) membedakan antara kapantugas utama sedan.gmembagi masalah Aan tapan tugas utama-itu sedangmengombinasihasil. Dia mengategorikanmetode itu sebagaidivide-and-conquerketika pekerjaanutama sedan-gmengombinasikan hasilnya,dan sebagaipartisi ketika pekerjaanutamaiedangmembagimasalah.Alih-alih .eribedakannyu, kita.akanmenggunakanistilah divide-and-conquersetiapkali partiii berlanjutke masalahyang kecil dan lebihkecil lagi. Sebuahdefinisi rekursif berurutanuntuk menambahkanbilansanadalahr inl-

I

add/inf

*c\

e t

/*

add list

of numbers, s * /

i f /nrrmlror/c\ <: 2) return (nl + n2); /* see explanation */ el-se { (s, s1, s2); divide ,/* divide s into two parts, s1 and s2 */ part_suml : add(sI); /*recursive c a l _ l _ st o a d d s u b l - i s t s * / part_sum2 : add(s2); (part_sum1 + part sum2); return )I

tanyangsignifikan

lercepatakan lebih l prosesmenunggu apaimenggunakan rmbantudan dapat and-conquer.

r submasalahyang n submasalahyang al olehprogrammer

Seperti dalamsemuadefinisirekursif,sebuah metodeharusadauntukmengakhiri rekursiketikapembagian tidakdap{ dilanjutkan.Di dalamkode,number (s ) menghasilkan jum-lahdari bilanganyangterdapat dalamdaftaryangditunjukoleh s. Jikaterdapat2 bilangandi dalamdaftar,merekadiiebutnt dannz. Jika.terdapat satubilangandi dalamdaftar,bilanganitu disebutnl, sedangkan n2 samadengan0. Jika tidakterdapatbilangan,makanL dann2 bernilainol.Pemyataan if yanglerpisahbisadiguna-kan untuk masing-masing kasus:0, l, ataubilangan2di dalamdaftar.Masing-.asingikan menyebabkin berakhirnya pemanggilan rekursif. Metodetersebutbisadigunakanuntukoperasiumumyanglaindalamsuatudaftar,sepertimenemukan bilanganmaksimum.Metode itu bisa juga digunakan'unfuk menyortir sebuahdaftar dengancara membaginya menjadidaftaryanglebihkecil danlebihkecil lagi untul dipilah.Algoritmamergisortdan q.u.icl<sort seringdijelaskan dengandefinisirekursif;lihatCormen,Leiserson, danRiiest(1990)."Seseorang tidak akanpema! dengansungguh-sungguh menggunakan rekursiuntuk menambahkan daftarbilangai ketikaterdapatsolusiiterasiyangsederhana. Namun,metodeberikutini dapatditerapkanuntukberbigai masalah yangdirumuskandengansebuahmetoderekursifdivide-and-conquer. Ketikamasing-masing pembag-ian menghasilkan duabagian,formuiasirekursifdivide-and-conquer memtentuksebuahpohonbiner.Pohonmelintaske bawahsaatpemanggilan dilakukandanmengarahke atasketikapanggilandikembalikan. (Sebuahperlintasan preordirmern'6erikan definisirekursiflsebuah konstruksipohonbinermenunjukkanbagian"pembagian"-dari divide-and-conquer yangditunju[kanpada Gambar4-.2,dengantugasakhir di bagianbawahdJn root di bagianatas.prosesioot-rn.rUugi maialah menjadidua bagian.Keduabagiantersebutmasing-masing dibigi menjadiduabagian,danieterusnya mencapai (leaves). daun-daun Di sanalah operasi dasai dari masalahtersebutdilaksanakan. !]nggu Konstruksi tersebutbisadigunakandalammasalahsebelumnya untukmembagidaftarbilanganterlebih l..Sepertipadasemuapseudocodekit4rincianimplementasidihilangkan.Sebagaicontoh,panjangsuatudaftar ,. disampaikan sebagaisebuahargumen.

Strategi Pembagian dan Divide-and-Conquer

119


dahulumenjadidua bagian,lalu empatbagian,dan seterusnya, sampaimasing-masingprosesmemiliki satu lagian yang sama secarakeseluruhan.Setelahmenambahkanpasangandi disar pohon, akumulasi terjadi dalam sebuahkonstruksi pohon terbalik. Gambar 4.2 menunjukkan sebuah pohon biner yang lengkap, yaitu sebuah pohon yang seimbang dengan semua cabang bagian bawah pada tingkatan yang sama. Itu terjadi jika tugis bisa dibigi menjadi beberapabagian,yaitu kelipatan 2. Jikabukan kelipatan 2, maka satu atau tetin cabangbagian biwah akan beradadi satulevel lebih tinggi dibandinglainnya.Demi kemudahan,kita akanberasumsi6ahwatugasbisa dibagi menjadi sejumlahbagianberkelipatan2, kecualijika sebaliknyayang terjadi. lmplementasi Paralel. Dalam sebuahimplementasiberurut,hanyasatucabangdari suatupohon yang bisa dikunjungi sekali waktu. Suatu solusi paralel menyarankankemungkinanmelintasi be6erapa bagian dari pohon secaraserempak.Begitu sebuahpembagiandibuat menjadilua bagian,kedua bagiin tersebutbisa diprosessecaraserempak.Meskipun solusi rekursif paralel bisa dirumuskan,lebih mudah untuk memvisualisasikannya tanpa rekursi. Kuncinya adalahmenyadaribahwa konstruksiadalahsebuah pohon.Anda bisa denganmudahmenugaskansatuprosesordi masing-masingcabangpadapohontersebut. Padaakhirnya, lkan diperlukanprosesor2'+t | untuk membagitugasmenjadi2^bagian.Masing-masing prosesorhanyabisa aktifpada satulevel di pohon,yang mengarahke solusiyang sangattidak efisien.(Soa1 4-5 menggambarkanmetodetersebut.)

MasaIah pembagian

Tugasakhir

Gambar4.2

pohon. Konstruksi

Sebuahsolusi yang lebih efisien adalahmenggunakankembali prosesordi setiaplevel pada pohon, . sebagaimanadiilustrasikan pada Gambar 4.3, yang menggunakandelapan prosesor.PembaglanbLrhenti ketika sejumlah total prosesordijalankan. Untuk selanjutnya,di setiap tahap masing-masingprosesor menyimpan sebagian dari daftar dan meneruskan sebagian yang lainnya. Pertama, Po berkomunikasi denganPo,.menYampaikan sebagiandari daftar ke Po.Kemudian, PodanPomeneruskanset6ngahdari daftar yang mereka simpan ke P, dan Pu secaraberturut-turut. Akhirnya, P P P dan P, meneruskansetengah o, r: o, dari.daftaryang disimpan menuju Pp P, P' dan Prseiaraberturut-iunit.Masing-inasingdaftar di tahap terakhir akan memiliki n/8 bilangan,'atiu nip di dalim kasusumum dari P proseior.Terd='apat log P level padapohon.

120

ParallelProgramming

Tindaka pada Gambar meneruskanr penjumlahan menambahka seperti yang d


I memilikisatu terjadi umulasi I

yangseimbang flibagimenjadi ianbawahakan fiwatugasbisa

diilustrasikan _ Tindakan"pengombinasian"dari penjumlahantotal parsialdapatdilakukansebagaimana padaGambar4.4. Begitu penjumlahanparsial telah dibentuk,masing-masingproJesorbernomor ganjil meneruskanpenjumlahan parsialnya ke prosesor berdekatan yang bernomor genap. P, meneruskln penjumlahannya ke Po, Prke P, Prke Po, dan seterusnya.Prosesoryang bemomor genap kemudian menambahkan penjumlahanparsialdenganpenjumlahanparsialnyasendiri dan membawamaju hasilnya, sepertiyang digambarkan.Hal itu berlanjut sampai Po memiliki hasil terakhir. Daftar asti

ari suatupohon intasi beberapa t, keduabagian n, lebihmudah i adalahsebuah pohontersebut. Masing-masing ak efisien.(Soal

Gambar4.3

evelpadapohon, nbagianberhenti 'masingprosesor 'n berkomunikasi 6ngahdari daftar eruskansetengah rg daftardi tahap 'dapatlog P level

Pembagian suatudaftar menjadibagian-bagian.

Penjumtahanakhir

Gambar4.4 Penjumtahan Parsial.

Strategi Pembagian dan Divide-and-Conquer

l2l


Kita dapat melihat bahwa konstruksi-konstruksitersebutsamadenganbroadcasthypercubebiner dan algoritma-algoritmahimpunan yang dijelaskan dalam Bab 2, Sub-subbab2.3.3. Konstruksi-konstruksi akan memetakanke dalam hypercube dengan sempurna,tetapi juga dapat diterapkan pada sistem-sistem lain. Sepertipada broadcasthypercube/algoritmahimpunan, ptosisor-prosesoryang berkomunikasidengan prosesoryang lain dapat dilihat dari alamat-alamatbiner mereka. Prosesorberliomunikasi denganprosesor yang alamatnyaberbedaI bit, dimulai denganbit terbesaruntuk tahappembagiandan dengai bit terkecil padatahapkombinasi(lihat Bab 2, Sub-subbab2.3.3). Andaikata kita menciptakandelapanprosesor(atau proses)secarastatisuntuk menambahkansuatu daftarbilangan.Kode paraleluntuk prosespo akanmengambilpola

suatutanda yang dilaku 4.5.

ProsesPn phase */ /* division divide(s1, s1, s2); /* divide s1 into two, s1 and s2 */ send(s2, P4); ,/* send one part to another process dlvi-de (s1, s1, s2) ; s e n d ( s 2 , P " ); divide (s1, s1, s2); send (s2, P1); part_sum : *s1; / * combining phase */ r e c v ( & p a r t _ s u m l , P 1) ; part_sum :-part_sum + part_sum1; recv(&part_suml, P2); part_sum : part_sum + part suml; recv(&part suml, eil; part_sum : part_sum + part_suml-;

*/

narf

qllm

:

*c1.

sllm

:

/* /

. L ,

recvl&part_sum1, DAft-

/*

n^rf

division

^u ^v -r rI r, v r r.l ir hl r. vi h ^

ps) i qrrm

+I

nrrlV O I L

recv (&part_sum1, p6); part_sum : part_sum + part send(&part_sum, Po);

qrrmT

.

crrn

.

l

phase */

^L--^ PrtqDg

+ / /

- Urutan yang sama.diperlukanuntuk prosesoryang lain. Jelasnya,operatorasosiatiflain, seperti perkalian,logika OR, logika AND, minimum,maximum,ataurangkaianshing dapatmenggantikan operasipenjumlahan dalamcontohterdahulu.Ide dasardapatjugaditerapkanuntuk-mengevaluaslikspresi aritmatika,tempatoperand-op.erand berhubungan dengansuatuoperator-aritmatika. Koniruksi pohonjuga dapatdigunakanuntukoperasi-operasi sepertipencariin.Dalamhal ini, informasiyangdibawanaikbeiufa

122

ParallelProgramming

Komun

itu adalahlan

Kode untuk prosesP, bisa menggunakanbentuk Process{ r e c v ( s i , P o ); divide (s 1, s 1, s2) ; send(s2, P6); divide(s1, S1, s2); send(s2, P5);

Analisi: dalam pemb startup. 1-ahappr daftar menja maupun kon hasilnya.

di mana/,,,,a scbuahbiiiad dalamsetiapI

untukwaktul

atau waktu ko


â‚Źrcubebiner dan huksi-konstruksi da sistem-sistem munikasidengan idenganprosesor lnganbit terkecil

suatutarda Boolean yang mengindikasikan apakah item atau kondisi tertentu telah ditemukan. Operasi yangdilakukan pada masing-masingcabangadalahoperasiOR, sebagaimana diperlihatkanoleh Gimbar 4.5.

rambahkan suatu

<2 'naaqe

t+/ *

Gambar4.5

/

Bagiandari pohonpencarian.

Analisis. Kita bisa asumsikann adalahkelipatan2. Waktu setupkomunikasi,t-.-*..-, tidak termasuk dalampembahasanselanjutnyademi kemudahan.Anda tinggal berlatih saja untuk ifrtfiasukkan waktu startup. lbhap pcmbagianterutamatcrdiri hanyaataskomunikasijika kita mengasumsikan bahwapembagian . daftar menjadi dua bagian_memerlukan komputasi minimal. Tahap kombinasi memerlukan'kompu"tasi maupun komunikasi untuk menambahkan pcnjumlahan parsial yang ditcrima dan menyampaikan hasilnya. Komunikasi. Terdapatbilanganlogaritmadari beberapalangkahdalamtahappembagian.Logaritma itu adalahlangkahsejumlahlog p denganp proses.Waktu komunif,asiuntuk tatrapini didaiatkan dari n. n n n . n(o-l\ r-'.f = jt aoto = -, + auru'' tonu* "' * our^ onu Jt E ;, di,tu1u.d"oadalahwaktu transmisiuntuk satudataword. Waktu r.",.,"rsccaragarisbcsarlebih baik daripada scbuahbroadcastscderhana.Tahap kombinasi scrupa,kccuali b?iinia hanyi satu data item yang dikirim dalamsetiappesan(penjumlahanpartial);yaitu, /"o.n,2:(logp)to"o untukwaktu komunikasitotal dari /"o-,- r"o-.,*r"on.2: N),*^

iosiatiflain, seperti lapatmenggantikan ekspresi engevaluasi pohonjuga lnstruksi naikberupa ; dibawa

r(log p)ro"*

atauwaktukomplcksitasdari O(ri) untuk jumlah tetapproscsor.

Strategi Pembagian dan Divide-and-Conquer

123


Komputasi' Di akhir tahap pembagian,. bilangan-bilangan z/p dijumlahkan bersama-sama. Kemudian,satupenjumlahanterjadipadasetiip tahup selimai"rr"it".fi"asi, yang mengarahke

)

t*r:i+logP lagi ke waktukompleksitasdari o(n) untuk sejumlahtetap prosesor.untuk n yangbesardan variabelp, kita mendapatk an O(n/p 1. Waktu Keseluruhan Eftselusi.

Waktueksekusiparaleltotal menjadi

,,1&? \ Faktor Pemercepat

p

*logpl* r0"," +! +bgp p

)*"

Seb 4.6,dise dimens lalu seti Octtreea membag dalam m yang lebi diperhitu komputa

Faktorpemercepat adalah

n-l Faktor pemercepat: ! = tt, ((n/p\(p-l)+logp)ro* +n/ p+logp

Pemercepat terbaikyangbi.s1kita harapkan menggunakan metodetersebutadalah,tentusaja,p ketika semuaprosesorp sedangmenghitungpenjumlahanpartiar mereka.pemercepat aktualakanmenjaditak sebanyakmetodeitu dalamhalpembigian"dan fasekombinasi. Rosio KomputasilKomunikasi.

Rasiokomputasilkornunikasi diberikanoleh

Rasio Perhitungan/Komunikasi =

lomp

t"*. 4.1.3

nl p+logp

=

((n/ p)(p-l)+logp)to*"

lt-ary Divide and Conquer

Divideandconquerbisajugadigunakan saatsebuahtugasdibagimenjadilebihdari duabagiandi setiap tahap'Sebagai contoh,jika iugasdipecahmenjadi o"nniri rekursiadalah "rpuiuugiunj"onio't int {

add(int

*s)

/*

add fist

of

n u m b e r sr s * /

Pemba menja

if (number(s ) :<4 ) ; return (n1 + n 2 + n 3 + n4y;

olca

I t

Divide (s, s1, part_sumi:add part_sum2:add part_sum3:add part_sum4:add

124

Parallel programming

s2, s3, s4); (sI ) (s2 ) ; (s 3 ) ; (s4 ) ;

/* divide s into sI,s2 ,s3,s4*/ /*recursive calls to add subl_ists

*/

Pemb


t I be$ama-sama Earahke

return

(part_sumi

+ part_sum2

+ part_sum3

+ part_sum4);

) )

r dan variabelp,

Sebuahpohon di mana setiap cabangnya memiliki empat anak, seperti ditunjukkan dalam Gambar 4.6, disebut quadtree. Sebuahquadtreememiliki aplikasi tertentu dalam menguraikan kembali daerahdua dimensimenjadi empatsubdaerah.Sebagaicontoh,sebuahcitra digital bisa dibagi mcnjadi empatkuadran, lalu setiap bagian terscbut dibagi lagi menjadi empat subkuadran, dan sctcrusnya (lihat Gambar 4.7). Octtreeadalah scbuah trec di mana setiap cabangnyamemiliki dclapan anak dan memiliki aplikasi untuk membagimang tiga dimensi sccararekursif. Sebuahtrca m-ary dapatdibentukjika pembagiandilakukan dalamm bagian (sebuahpohon denganm link dari setiapcabang),yang menyatakanbahwa paralclisasi yang lcbih besar tersedia terscdia selama m ditingkatkan karena terdapat lcbih banyak bagian yang dapat diperhitungkansecarasercmpak.Anda hanyapcrlu bcrlatih untuk mengcmbangkanpersamaanuntuk waktu komputasidan waktu komunikasi (Soal4-7). Root

entusaja,p ketika akanmenjadi tak

Gambar4.6 Quadtree.

n bagiandi setiap adalah

Area gambar -----J-----

)ers, s * / Pembagianpertama menjadi 4 bagian

\ , s 4 */ sublists

*,/

Pembagiankedua

Gambar4.7 Membagisebuahgambar.

Strategi Pembagian dan Divide-and-Conquer

125


pARTtStDAND|VIDE-AND-CONQUER 4.2 CONTOH-CONTOH 4.2.1

Penyortiran Menggunakan Bucket Sort

Andaikan masalahnyabukanlah hanya menjumlahkan semuabilangan dalam daftar,tetapi menyortirnya ke dalam urutan numeris. Terdapatberbagai situasi praktis yang mewajibkan penyortiran^bilangan.Se6agai akibatnya,kelas pemrogramanyang berurutanmenghabiskanlegitu banyak waktu untuk men-gembangkan berbagaimetode pengurutanbilangan. Kebanyakan algoritma pengurutanberdasarkanataspeinbandiigan dan.pertukaran bilangan berpasangan.Kita akan melihat ke paralelisasi algoritma-algoritma penyoniian klasik dalam Bab 10. Mari kita pcrhatikanalgoritmapenyortiianyang dinamakanbuctretsort. bucket sort tidakberdasarkanpada cara perbandingandan penukaran,tetapi merupakanmetodepemisahanyang alami. Bagaimanapunjuga,bucket sort hanyabekerjadenganbaikjika bilangan-bilanganasli terdistribuslsecara seragammelintasi interval yang diketahui,katakanlah0 sampaia- l. Interval tersebutdibagi menjadi z daerahyang sama,0 sampaialm - l, alm sampai2a/m- l,2a/m sampai3a/m - 1, ... dan itu,,bucket', ditugaskanuntuk menampungbilanganyangjatuh di setiapdaerah.Akan adasejumlahn bucket.Bilanganbilangandenganmudahnyadimasukkanke dalambucketyang sesuai.Algoritma tersebutdapatdigunikan dengansatu bucket untuk setiap bilangan (di mana m : n).-Kemungkinanlain, algoritma tersebutbisa dikembangkanmenjadi sebuahmetodedivide-and-conquerdenganmembagibucketinenjadibucket yang lebih kecil secaraterus-menerus. Jika proscsberlanjutdalammodel itu hinggamasing-masingbuckethanyi berisi.satu bilangan, maka metode itu serupadcngan metode quicksort, iecuali b-ahwadilam quicksort daerahdi bagi menjadidaerah-daerah yang didefinisikanoleh "pivot-pivof'(lihat Bab l0). Di sini kita akan menggunakansebuahjumlah bucketterbatas.Bilangan-bilangandalammasing-masingbucketakandipilah menggunakanalgoritmapenyortiransecaraberurut,sebagaimana ditunjukkandalam Gambar4.8. Algoritma Sekuensial. Untuk menempatkanbilangan ke dalam bucket tertentu,perlu dilakukan identifikasi daerahtampat bilangan tersebutberada.Salah satu caranyaadalah denganmembandingkan bilangantersebutdengandaerahawal,yaitu a/m,2a/m,3a/m, ... Dibutuhkansebanyak-m - I langkahu-ntuk sctiap bilangan pada suatu komputer secaraberturut-turut.Satu cara yang lebih efektif yaitri membagi bilangan denganmla dan menggunakanhasilnya untuk mengenalibutket--bucketdari 0 sampai ^ -1, satu langkahkomputasiuntuk masing-masingbilangan (walaupunpembagianakan sedikit menghabiskan waktu). Iika mla adalahkelipatandari 2, bit-bit bagianatasdari bilangandalambentukbiner dapit dcngan mudahdilihat. Sebagaicontoh,jika lrlla:23 (dclapan),dan bilangannyaI l00l0l dalambsntuk biner,mika itu termasukdalam daerah ll0 (enam),denganmempertimbangkantiga bit terbesar.Dalam keadaanapa pun, asumsikanbahwamenempatkansatubilanganke dalambuckst memerlukansatulangkah,dan bahwa menempatkansemuabilangan memerlukann langkah. Jika bilangan terdistribusisecari seragam,maka akan ada n/mbilangan dalam setiapbucket. Selanjutnya,tiap+iap bucket harus disortir. Algoritma penyortiranberurutan,sepertiquicksort atau mergesort,memiliki kompleksitaswaktu sebesarO(nlogn) untuk menyortirr bilangan(waktu kompleksitas rata-ralauntuk quicksort).Batasbawahpadasetiapperbandingandanpertukaranpadaalgoritmapcngurutan kira-kira nlog n perbandingan(Aho, I-Iopcroft,dan Ullman,l974). Mari kita asumsika-n bahwa algoritma penyortiranberurut sesungguhnya memerlukann log r perbandingan.Satuperbandingandianggapiebagai satu langkah komputasi.Jadi, akan diambil (n/m) log Qt/m) langkahuntuk mengurutkin nlm bilangan dalim setiapbucket menggunakanalgoritma-algoritmapenyortiranberuruttersebut.-Bilangan yang disortir harus digabungkanke dalam daftarpenyortiranakhir. Mari kita asumsikanrangkaiantersebuttidak memerlukan langkah-langkahtambahan.Denganmenggabungkansemuaaksi, waktu pengurutanmenjadi

126

ParallelProgramming

Jikan: km, lebihbaikda penyortiran seragam.

Algorit untuk setiap untukppros masingpros tersebutbisa sehingga bila Kita da daerahuntuk bilangandi d menjadipbr bucketkecilI dalamGam kerjaminim Faseya l. 2. 3. 4.

Bilang Menyo Mengir Menyo


: O(n log(nl m)) = t : n + m((nlm\log(nl m)) n + n log(nlm) "

ortirnYakc n. Sebagai rmbangkan rbandingan penyortiran Bucketsort yangalami. ibusisecara imenjadin Ju"bucket" ,t.Bilanganrtdigunakan ersebutbisa bucketYang ruckethanYa m quicksort ;inikita akan akandiPilah 4.8. rlu dilakukan mbandingkan angkahuntuk

artumernbag\ ampd m - ), nenghabiskan dapatdcngan k biner,maka r keadaanaPa u\,dtnbahwa ieragam,maka

i quicksortatau tukomPleksitas 'itmapcngurutan bahwaalgoritma lianggaPsebagai r bilangandalam msdisortirharus dakmcmerlukan adi

Bucket Pengurutan isi bucket Daftar merge

Gambar4.8 Bucketsort' o(n)' catatbahwaitu waklukompleksitas kita memperoleh sebuahkonstanta, Jikan : km, dimanakadalah algoritma berturut-turut iecara ;"n menukarkan lebihbaik daripadauutur* Lu*ut untukmembili"gd secara tersebar bilangan-bilangan i1,,l";tu aupui ftg"nakan ketika penyortiran.Bagaimanffiite", seragam. satuprosesor denganmenugaskan dapatdiparalelisasi Algoritma Paralel. Jelasnya,.bucket.sort (n/p)logQ/p) terhadap dalamp"rsamaansebelumnya untuksetiapbucket,yangmengurangisyaratkedua paaaCambar4'-9'Dalamversiini' masing=,-;. iiiliifutttaiitan t.pt"In*tuti untukpprosesor(di manfp menjadisia-sia'Implementasi UinvuL.usaha bil";;;;,jinlgu masingprosero,nr.r..iilu t"ii"gi#i"g dari daftarke dalambucketolehprosesor bisa diperbaikidenganberpindahnyatrfiurii-uil,i"gan tersebut olehprosesoryanglain' bilangan-bilangu"i" tidail lagi diperhitungkan sehingga

Kitadapatlebihlffi'ri.*p*J!irJ"!i;i;;;ti;;

satu rndaerah' menjadi d*e.l T.T!1gi urutan memisahkan dan "kecil" bucket -"ti"'tuhunkan-p

pr6,"'o' daerahuntuk setiapprosesor.Masing-muring sui,t.t-bucket kecil itu kemudian "dikosongkan" kecil-nya-senairi il""ket k;;i;; bilangan di daerahnya prosesoruntuk mengirimkan satu ;i;e1"1"st1 menjadi p bucket af<friruniuk penyortiran, y"tU _s11i,1n ditunjukkan i uituk prosesorl)' Iieseluruhanalgoritma bucketkecil ke masing-masingprosesorlain @uJket terdapat mana di sederhana partisi t*todt t"t*p"f"" dalamGambar 4.10. Catat bihwa metode "*.i"i keriaminimal untuk menciptakanpembagian' F'aseYangdiPerlukanadalah: l. 2. 3. 4.

Bilangan-bilanganPembagian MenYortir ke dalam bucket kecil Mengirimkan ke bucket besar MenYortir bucket besar

Strategi Pembagian dan Divide-and-Conquer

127


Bitanganbelum terurut

Langko bilangan ke t yang konstan pembagianda hanya menye (Yang harusc semua bilan komunikasin

p proscsor

termasukwa

Buckct

Longka menjadipbu

Pengurutan isi buckct Daftar merge Bitanganyang tetah diurutkan Gambar 4,9

Langka di Langkah3 Setiapprose bucketbesa tersebut,kita

Satah satu tipe paratet dari bucket sort.

Bitangann/m â‚Ź

betumterurut terurut Bitanganbctum

jika komuni atasdarilang ke

p prosesor

Buckct kecil Buckct kccil kosong

[++

YYY

Bucket besar Pcngurutan isi bucket

-1

Pada intinya sebuahmeka ke setiap du dalam MPI (l menggunak baris padase mengubahur

Daftar mcrge Bilanganyangtctah diurutkan

Gambar4.1O Tipe paratetdari bucketsort.

128

Parqllel Programming

Langko Tiap-tiap bur


Langkah l-'Komputasi don Komunikasi.-.-Langkah pertamaadalahmengirimkansejumlah bilanganke tiap-tiapprosesor.Menandaikelompokbilanga"n unnit aiputtisidapataira?utanpadawaktu -dalam yangkonstan(t9tap).waktu itu akandiabaikan keJeluruhan *uktu tol".insi. Daripadamelakukan pembagian dankemudianmengirimkansuatupembagian ke setiappror.ror, solusiyanglebihefisienadalah hanyamenyebarkan semuabiianganke setiapprosJsordan biar[an pror"ro, melakukanpembagiannya. (Yangharusdipastikanadalah.setiap partisiying dibuatadalahpemisfi,tetapi semuapartisimemasukkan 'atau semua Menggunakan rutin tampilin (broadcast) penyebaran(scatter),maka waktu .bilangan') komunikasi meniadi:

:l 71

)

l"o..r = f.r.nuo* trlto

termasukwaktustartupkomunikasi. Langkah 2-'Komputasi, Untuk memisahkanmasing-masing partisi dari bilangan-bilangannlp menjadipbucketkecil, memerlukanwaktu )

t* rr: ilP Langkah 3-Komunikosi..- Selanjutnya, bucket-bucket kecildidistribusikan. (Tidakadakomputasi di Langkah3.) Setiapbucketkecil akan*"^itit.i kira-kiray!n, ali"gui(dianggap tersebarsecaramerata). Setiapprosesharusmengirimkanisi darip - I bucketkecil ke p;;; t;"g liii isatubucketditahanoleh bucketbesaritu sendiri)'oleh karenamasing-masing prosesdarip piosesharusmelakukan komunikasi tersebut, kita mendapatkan

--l I

( ) k

J

)

t" ^r= P(P- lXto*o + (n/p2)t*o) jika komunikasitersebuttidak mendahuluiwaktunya dan send ( ) individudigunakan.Itu adalahbatasan atasdarilangkahkomunikasi.Batasbawahakanmunculjiku r.rnuuko*unikasiiisa menautului,r"ngarah ke /"*.3 : (p - lXl"**o + (n/p2)t *o) Padaintinya,masing-masing prosesorharusberkomunikasidenganprosesorsecaraberselang-seling, dan sebuah mekanisme "all-to-all" akansesuai.Sebuahrutin all-to-alt"r"ngiri. datadarimuring-rn"asing proses ke.setiap-dua prosessekali,sebagaimana diilustrasikan dalamGamlar 4.11.Jenisrutin sepertiitu ada dalamMPI (MPr-A1l-toa1r ()), yang.kltaqgglp akandiimplementasikan denganlebihefisiendaripada menggunakan send ( )dan recv ( ) individu.Rutin alt-to-allakan benar-benar memindahkan barisbarispadasebuaharrayke kolom-kolom,,sebagaimana diilustrasikan dalamGambar4.12(dankarenanya mengubah urutansebuahmatriks;lihatSub-subbab 10.2.3). Langkah 4-Komputosi. Padalangkahterakhir,bucket-bucket yangbesardisortirsecaraserentak. Tiap-tiapbucketbesarmenampung kira-kiranlp bilangan.Jadi, /*.o4 = @/p)log(n/p)

Strategi Pembagian dan Divide-and-Conquer

129


KeselarahanWuktuEksekusi Keseluruhan waktueksekusi,termasukkomunikasi,adalah tp='*..1

+ t"o.o,+ t"or.3+ t-.pl

to: /,onuo*nto"o* nlp + (p_lXt on"o+@/p2)t^o) + @/p)log(n/p) : (n/p)(l + log(n/p)) * p/,unup * @ + (p - t)(nlpz))t*o Faktor Pemercepat adalah

Faktor pemercepat,ketika dibandingkan denganbucket sort secaraberurut,

Faktor Pemercepat:

/"to

n+nlog(nl m) p)(l+log(n/ p))+p/o*"' +(n+( p-t)(nl p2))ton^ @l

Faktorpemercepat secaraaktualmenentukan kapanl. adalahwaktualgoritmapengurutan terbaikuntuk masalahtersebut.Batasbawahuntuk algoritmapenyortiranberurutmenggunakan operasiperbandingan danpertukarandantanpasyaratatasdishibusiataufiturkhususdariurutantersebut adilahnlognlangkah. juga, bucketsort lebih baik dari itu dan digunakanuntuk /,, tetapidenganasumsibihwa Bagaimanapun bilangantersebarsecaramerata. p- 1 Proses

Proses0

Rosio

Diasu tidak terse menyortirn ketika sem 4.2.2

ln

Sebelumn terbagi mer akan memb Bucket sor beberapabi Teknik mengizinka cukup. Mar p- 1 Proses

Gambar4.11 Att-to-att broadcast.

130

ParallelProgramming

Untuk men menjadi ba Masing-ma yang ditunj 6 adalahlet


dalah Po Aoa /o.t Aoz Ao,r

Pl

rt secara berurut.

,* tanterbaikuntuk mi perbandingan t nlogn langkah. tn asumsibahwa

Ao.o Ar,o AzdAtt

Ato ,tl t.t A n A v

{o,r Ar,r Az.t At.r

P2 Azp Az.t A t a Azt

Aot A r l Aze Ast

P3 At,o At.r At.z At.t

Aqr A t l

Azl

At,t

Gambar4.12 Efekatt-to-attatassebuaharray Rasio Komputasi I Komunikasi. Rasiokomputasi/komunikasi ditentukandengan Rasio komputasi/komunikur; : -t-*- = 1"o..

(n/ p)(1+log(n/p)) pt",** + (n + (p -l))(n I p2)ton^

Diasumsikan bahwa bilangan tersebar merata untuk menghasilkan rumusan itu. Jika bilangan tidak tersebarmerata,beberapabucket akan memiliki bilangan lebih banyak dari bucket yang lain, dan menyortirnya akan mendominasi waktu komputasi secarakeseluruhan.Skenariopaling buruk akan terjadi ketika semuaangkajatuh ke dalam satu bucketl 4,2.2

Integrasi Numerik

Sebelumnya,kita membagi sebuahmasalah dan menyelesaikansetiap submasalah.Masalah dianggap terbagi menjadi bagian yang sama, dan partisi dilakukan. Kadangkala, partisi sederhanaseperti itu tidak akanmemberikan solusi optimal, khususnyajika jumlah pekerjaandalam setiapbagian sulit diperkirakan. Bucket sort, sebagai contoh, hanya efektif saat setiap daerah kira-kira memiliki jumlah yang sama dari beberapabilangan. (Bucket sort dapat diubah untuk menyamakanpekerjaan.) Teknik umum divide-and-conquer membagi daerah secara kontinu menjadi beberapabagian dan mengizinkan sebuah fungsi optimisasi memutuskan bilamana suatu daerah tertentu telah terbagi dengan cukup.Mari kita ambil contoh yang berbeda,integrasi numerik: >sesp-2

t: lf<*>a* Untuk menyatukan fungsi tersebut (yaitu menghitung "area di bawah kurva"), kita dapat membagi area menjadi bagian-bagianterpisah, masing-masingbisa dikalkulasi menggunakanproses yang terpisah. Masing-masingdaerahdapat dikalkulasi menggunakanperkiraanyang diberikanoleh beberapasegitiga, yangditunjukkandalamGambar4.l3,di manafllt)danflq) adalahtinggiduatepidaridaerah segitiga,dan 6 adalahlebarnya(interval).Integralsempurnabisa diperkirakandenganpenyajianterakhirdaerahsigitiga

Strategi P embagiandan Divide-and-Conquer

131


dari ake,b. Perkiraanyang lebih baik bisa diperoleh denganmenjajarkansegitiga sehinggatitik tengahatas dari masing-masingsegitiga berpotongandenganfungsi, seperti ying diperlitratkan dai-a-m Gambar 4.14. /(x)

Gambar4.13 Integrasi numerik menggunakan empatpersegipanjang.

Konstruksite dibatalkan.K garis vertika ditunjukkanc numerik per berbagainila

Penuga satu prosesd memperkec Olehka Data atauSa daerahdarir masing-ma bagiandarip

Proses/

(i, pri

if )

bcast r6di

n

qferl-

^*i

Gambar4.14 Integrasinumerikyang lebihakuratmenggunakan empatpersegi panjang.

.1

:

I

(

for d ! l

reduc

Sebuah ope individu. Un sebagai

area for ( ar area Gambar4.15 Integrasinumerik menggunakan metode trapezoidal

132

ParallelProgramming

Kita anggap diperoleh dt manipulasii


titik tengahatas Gambar 4.14.

umerik ryipanjang.

Konstruksitersebutmenguntungkan karenaerror dalammasing-masing sisi dari titik tengahcenderung dibatalkan.Konstruksilain.yang lebih jelas adalah*enggunafun potongan-potongan nyatadari garisl -trapesium"(trapezoidat;, garis.vertikaldenganfungsiuntukmenciptakan daerah-dierah berbentuk sJperti ditunjukkan dalamGambar4.15-Ivlasing-635;ng daerahdihitungdenganrumusl/2(ipj+/q)6. Meiode numerikperkiraanuntuk menghitungintegraltertentusepertiitu menggunatant<-om'Uinasi'tinier dari berbagainilai disebutmetodekuadrqtur. PenugasanStatis. Mari kita perhatikansebuahmetodetrapezoid.Sebelummemulaiperhitungan, satuprosesditugaskansecarastatisagarbertanggung jawab menghitungmasing-masing daeiah.Derigan memperkecilinterval,kita semakinmendekatipencapaian solusiyangtepat. Olehkarenasetiappâ‚Źrhitungan memilikibentukyangsama,^oa"'SpUn (Single-progam MultipleDataatauSatu-Program Banyak-Data) adalahmodeying palingsesuai.Anggapiahlita atca:n menghitung daerah darix: akex = b menggunakanp prosesyangainomoriaari0 sampaip- l. Ukurandaerahuntuk - a)lp. Untuk menghitung masing-masing proses daerahmenggunakan carayangdijelaskan, 1d314Q bagiandaripseudocode SPMDbisameniadi ProsesP. if

nerikyang mpatpersegi

(i::master) { printf ("Enter number scanf (8d", &n),.

/*read nf

number of

inl.arrzr'lc

) bcast(&n, Po.o,o) /* broadcast (b--'a)/p; region: /* length of start : a + region * i; /* starting end : start * region,. /* ending x (b d: a)/n; area : 0.0,. for (x:start,. x<end; x:x+d) area : area + 0.5* (f (x) +f (x+d) ) *d; r e d u c e _ a d d ( & i n t e g r a l , & a r e a , p _ - ^ , , ^; )

interval_s

reguired. */

"\.

interval to al-l processes */ region for each process */ x coordj-nate for process */ coordinate for process*/ /* size of interval_ */

/*form

sum of

areas*/

operasi pengurangandigunakan untuk menambahkandaerah-daerahyang dihitung oleh proses l.!u{ -ditulis individu. Untuk perhitunganyang efisien, penghitunganmasing-masingdaerahakai lebitr ua'itiit<a sebagai area : 0,0; for (x = start; x ( end;x = x + d) area: area + f (x) + f (x+d); area : 0.5 * area * d,.

merik ezoidal

Kita anggapbahwavariabelarea tidak melebihiangkamaksimumyang diizinkan(kerugianyangmungkin diperoleh dari variasi ini). Untuk efisiensi lebih lanjut, kita dapat men-yederhanakan pirhitungin Oeigan manipulasi aljabar, seperti berikut

Strqtegi Pembagian dan Divide-and-Conquer

133


^-

- 6(f(a)+/(a+6)) , 6(/(a+6)+ f(a+26)), 222

( r("\ [z

, 6(/(a+(r-l)6)+/(b))

= 6 | l - l : z + f @ + 6 ) + f ( a + 2 6 ) . . . f+( a + ( r - l ) 6 ) + +

/(D)\ I 2)

diberikan interval n masing-masing dengan lebar 6. Satu implementasi akan menggunakanrumusan itu untuk daerahyang ditangani oleh setiapproses: + f(end)); area : 0.5 * (f(start) x + d) for (x: start + d;x < end,'x: area: area + f(x); OIgq

-

--^alga

*

i. Ut

Kuadratur Adaptif. Metodeyang digunakansejauhini baik-baiksajajika kita mengetahuiterlebih bahwa interval dahulu ukuran interval 6 yang akan memberikansolusi terbaik.Kita juga mengasumsikan tetap digunakanke semua daerah.Jika interval yang cocok tidak diketahui,maka diperlukanbeberapa bentuk iterasi untuk mengumpulkansolusinya.Sebagaicontoh, kita bisa memulai dengansatu interval dan menguranginyasampaidihasilkanperkiraanyang cukup mendekati.Hal itu mengimplikasikanbahwa bagian tersebutdihitung kembali denganinterval yang berbedasehinggakita tidak bisa hanya membagi keseluruhan daerah menjadi subdaerah-subdaerahyang bernomor pasti, sebagaimanadalam contoh penjumlahan. Satu pendekatanadalah masing-masing proses menggandakanjumlah interval secaraberturut-turut hingga dua perkiraan berturut-turut dinilai cukup mendekati. Konshuksi pohon dapat digunakan untuk yang ada. Pada membagi daerah-daerah.Kedalamanpohon akan dibatasi oleh jumlah prosesor/proses contoh, sebuahpohon memiliki kemungkinanberkembangdalam model yang tidak seimbangsebagai daerah-daerahyang dihitung menjadi suatu keakuratan yang cukup. lstilah cukup mendekati bergantung padaakurasiaritmatikadan aplikasinya. Cara lain untuk mengakhirinya adalahmenggunakantiga areaA, B, dan C, sebagaimanaterlihat pada Gambar 4.16. Perhitunganberakhir ketika area dihitung untuk daerah-daerahA dan B yang terbesaryang cukup mendekatijumlah areayang dihitung untuk dua areayang lain. Sebagaicontoh,jika daerahB adalah yang terbesar,maka perhitunganberakhir ketika bagian B mendekati bagian I dan bagian C. Dengan kata lain, kita dapat mengakhiri ketika C bernilai cukup kecil. Metode sepertiitu dikenal sebagaikuadratur adaptifkarena penyelesaiannyadisesuaikandengan bentuk kurva. (Rumusan yang disederhanakandapat diperolehdari metodekuadraturadaptif;lihat Freemanand Philips, 1992.) Komputasi dari area-areadi bawah bermacam-macambagian yang sangat pelan dari kurva akan lebih cepatberhenti dibandingkanperhitunganareadi bawah beragambagianyang lebih cepat.Jarak,6, akan bervariasi antarintervalnya. Sebagai akibatnya, suatu proses penugasanyang ditetapkan tidak akan mengarahke penggunaanprosesoryang paling efisien.Teknik load-balancingyang lebih sesuaidiuraikan dalamBab 3, Sub-subbab3.2.2, danlebih detailnyadalam Bab 7. Kita telahmenjelaskanbahwadiperlukan sedikit kehati-hatianuntuk memilih waktu untuk mengakhirinya.Sebagaicontoh, fungsi yang terdapat pada Gambar 4.17 bisa menyebabkankita mengakhiri proseslebih awal karenadua daerahyang besar adalahsama(vaitu C: 0).

134

Parallel Programming

4.2.3 Pen

Permasalah Permasalah astronomi yar ilmu gerak n astronomi,wi untuk memu rutin grafis ya

Perma

dalam ruanga menggunaka diberikanole


f(b))

kanrumusanitu

adaptif' kuadratur Gambar4.16Konstruksi

terlebih ngetahui n bahwainterval lrlukan beberapa gansatu interval rlikasikanbahwa , hanyamembagi ra dalam contoh araberturut-turut digunakanuntuk i yang ada. Pada eimbangsebagai lekati bergantung nanaterlihatpada zng

terbesar

yang

a daerahB adalah n C. Dengankata ebagaikuadratur lerhanakandapat dari kurva akan h cepat.Jarak,6, apkantidak akan r sesuaidiuraikan rahwadiperlukan gsiyang terdapat aerahyang besar

Gambar4.17 Kuadraturadaptifdengan terminasiyangsatah.

4.2.3 Permasalahan N-BodY permasalabanlainyang dapatmengambilkeuntungandari divide and conqueradalahpermasalahanN-body' Permasalahan N-nbdy tertait denganmenentukanefek-efekgaya di antarabeberapabody, sepertibenda astronomiyang tarik-menarikkarenagayagravitasi.MasalahN-Body juga muncul di daerahlain, termasuk ilmu gerak molekul dan ilmu gerak fluida. Mari kita menguji masalahdalam kaitannyadengansistem astronomi,walaupun teknik-tekniknyadigunakandalam aplikasi lain. Kita menetapkanpersamaandasar untuk memungkinkan pengkodeanaplikasi sebagaisebuahlatihan pemrogramanyang bisa menggunakan rutin grafis yang sama seperti masalahMandelbrot dalam Bab 3 untuk hasil grafis yang menarik. Permasalahan N-Body Gravitasi. Tujuannyaadalahmenemukanposisi dan pergerakanbenda dalamruangan (misalnya, planet-planet)yang merupakansubjek dari gaya gravitasi dari benda-bendalain menggunakanhukum ilmu fisika Newton. Gaya gravitasi di antara dua benda dengan massa/rd dan mu diberikanoleh - _ Gmnmo rr'z

Strategi Pembagian dan Divide-and-Conquer

135


di mana G merupakankonstantagravitasi dan r adalahjarak di antarakedua benda. Kita tahu bahwa gaya gravitasidijelaskandenganhukum kuadratterbalik. Gravitasiadalahgaya di antarasepasangbcnda sebandingdengan 1112, di marlar adalahjarak antarbenda.Setiapbenda akin merasakanpcngarunaari satu sama lain sesuaihukum kuadrat terbalik, dan gaya akan dijumlahkan bersama(mempertimbangkan arah masing-masinggaya). Sesuai gayayangada, percepatansebuahbendabergantungpada hukum kedua Newton, yaitu:

di manapos t+312,t+

Ruang berupavekt memilikisis

F= ma di mana m adalahmassabenda,F adalah gayayang dialami, a adalahpercepatanresultan.Semuabenda akan bergerakke posisi yang baru melalui daya tersebutdan memiliki kecepatanyang baru. Untuk suatu deskripsi numerik yang tepat, persamaandiferensial akan digunakan $aitu, F : mdv/dt dan v : dxldt, di mana vadalah percepatan).Bagaimanapunjuga, sebuahsoluii tcpat yang "tcrtutup" dari masalahN-body tidak dikenal dalam sistemyang lebih dari 3 benda. Untuk sebuahsimulasikomputer,kita menggunakannilai padawaktu tertentu,to,tp t2,danseterusnya. Intervalwaktu menjadi sependekmungkin untuk mendapatkanpenyelesaian yang pitingiepat. Jika waitu ' interval adalahAl. Selanjutnya,massabenda tertentu adalahm, maka gaya didapitkan dari

Gaya diubah

m(v'*t -v'\

-

11 :

--:-------L

Lt dan percepatanbaru ,+r v

-v

'

FLt

m

di-manav'*r_adalah percepatanbendapadawaktu t * l, dan v'adalah percepatanbendapadawaktu l. Jika sebuahbendabergerakdenganpercepatanv selamawaktu intervalAt, posisinyaakanbciubah dcngan X,*l _X,:yLt

di mana x' adalahposisi pada waktu t. Begitu benda bergerakkc posisi yang baru, gaya berubahdan komputasiharusdiulang. Kecepatantidak selalutetap selamawaktu interval, Ad sehinggahanya sebuahjawaban perkiraanyang diperoleh.Sangatlahmembantujika digunakansebuahkomputasi"leap-frog" di manakecepatandan posis-i dihitung secaraberurutan: F,=

m(r'*"' -vt-ttz)

dan Xtrt _Xt

136

ParallelProgramming

Vt+tt2\t

di mana par Akhirnya, pr suatu solusi telah ditetap

Aplika: astronomi, k saling meme jarak kuadra perbedaanti satu samala

Kode S for

( fo: l


=-I

ta tahu bahwa bcnda epasang pcngaruhdari pertimbangkan r hukumkedua

di manaposisidihitunguntukwaktut, t + l, t + 2, danseterusnya. Kecepatan dihitungpadawaktut + l/2, t + 3/2,y+ 512,danseterusnya. RuangTiga Dimensi. Olehkarenabenda-benda beradapadasuaturuangtigadimensi,semuanilai berupavektordanharusdipecahmenjaditiga arah,yaifitx, y, danz. dalamsebuihruangtiga dimensiyang memilikisistemkoordinat(x,y, z), jarakantarabenda-benda pada(xo,!n, zn)dan(xo,y, zoldiberikan oleh

,=ffi benda r. Scmua ru.Untuksuatu anv= dxldt,d\ N-bodY nasalah

Gayadiubah ke menurut tiga arah menggunakan,sebagaicontoh,

,.=ry("=)

, danseterusnYa. epat.Jikawaktu i

',r -_ G m n m r ( y u - y . \ I [. , )

', - -_ G m o m r ( I [

ndawaktu t. Jika rbahdcngan

aya bcrubah dan anperkiraanYang danPosisi ;epatan

rn-".\

,

)

partikel-partikeldenganmassamd dan mo dan memiliki koordinat (xn,!n, z.), dan (xu,yn, zr). {1 lana Akhirnya, posisi dan kecepatanbaru dihasiikan. Kecepatanjuga dapat dipecahkin rihtain tiga arah. untrik suatusolusi komputer sederhana,biasanyadiasumsikanruang tiga dimensi denganbatasan-batasan yang telahditetapkan.Sebenarnya,semuabidang secaraterus-menerus meluasdan tidik memiliki batastetap! Aplikasi-aplikasi Lainnyo. Walaupun masalah diuraikan dalam kaitannya dengan bidang astronomi,konsep tersebut dapat digunakan pada situasi lainnya. Sebagai contoh, partikel muatanjuga salingmemengaruhi.Dalam hal ini, menurut hukum elektrostatik Coulomb (uga sebagaikebalikan hukum jarak kuadrat); partikel muatan lawan ditarik dan partikel-partikel yang seperti muatan ditolak. Suatu perbedaantipis antara permasalahandan benda-bendaastronomi adalah partikel muatan dapat menjauh satusamalain, sedangkanbenda-bendaastronomi hanya ditarik sehinggaakan cenderungberkelompok. Kode Sekuensial. for

Keseluruhanperhitungan gravitasi N-body bisa diuraikan denganalgoritma

(t : 0; t < tmax; t++) { for (i:0; i < N; i++){ F : Force_routine(i); vliln.,:v[i] +F*dt/m; *[i],"": + v(i)^.* * dt,. x[i] )

/* /* /*

cnmnrr'|-

/*

cnnntrfo

/*

*/

for each time period for each body */ o

fnrna nar^r

new position

nn

;{- h

rzolacil-r;

*

l-\^Ar'

//

rnrl

9 j | q I r u

(leap-frog)

Strategi Pembagian dan Divide-and-Conquer

*/

137


for

(i:0;

icN;

yl'il

:

vIij

:vIi]_-;

zv :l it lr J n e w , ,

i++)

{

/* // *

f or tsrynuder ul -e

o:nh a

*

l-rndrr rvzsar lv unr nL iy

I

f rr

/ ar nn A O

^p ^O- S; J . E Fa .ol n^--/ +

I ) Kode Paralel. Paralelisasialgoritma berurut dapat menggunakanpartisi sederhana,di mana sekelompok benda menjadi tanggung jawab dari masing-masirig"pror.ro., dan masing-masinggaya "dibawa".ke dalam pesan-pesanberbedaantarpro-sesor. Bigaimanipun juga, scjumlah bJsar pesanbisa menghasilkan'Algoritmanyaadalahalgoritmao(M) (untuk satulteraii; sepJrtiseiiapbendaN dipengaruhi oleh.masing-masing dari benda,l/- I lainnya.Tidakiahmungkin menggunakanalgoritmalangsungteisebut untukmasalahN-body yang paling menarik di manalr sangittahuesii Kompleksitaswaktu.bisadikurangimenggunakanobseivasidi manasekelompokbendayangberjauhan bisa.diperkirakansebagaibendatunggal darilotal massakelompok yang bcrkedudukandi teigah-massa dari kelompok,sepertiyang diilustrasikandalamGambara.18. Ide pengetmpotan itu dapat diar'plikasikan secararekursif.

Dalam massa dari diperoleh dt cluster dapa bawah. Di dr berikut. And oleh dimens

di mana 0 ac pada hakikat

Algoritma Barnes'Hut. Suatu formasi cerdik dividc-and-conqueruntuk permasalahanyang menggunakansekumpulanide yang dimulai dengankeseluruhanruang di mana satukubus bcrisi bsndabenda.(ataupartikcl-partikcl).Pertama,kubus itu dibagi ke dalam dei"apan bagian subkubus.Jika scbuah subkubus.tidakberisi partikel-partikcl,maka subkubui itu dihapus daii pcrti-mbanganselanjutnya. Jika sebuahsubkubusberisi lebih dari satubenda,maka secaraberulangsubkubusdibagihiirggasetiapsubkubus berisi satu benda.Prosestersebutrnenghasilkanscbuahocilree,laitu scbuahtrei acnlin hingla dclapan ujung dari masing-masingcabang.Daun-daunmcreprcsentasikan scl-selyang masinglmasinf'berisisatu benda.-(Anggapsaja ruang yang asli adalahsebuahkubus sehinggakubus-ku6usmenlghasilkin rekursi di setiaplevel, tetapi asumsilain juga mungkin terjadi.) Untuk permasalahandua dimensi, setiap subbagianrekursif akan menciptakanempat subarcadan sebuahquadtree(sebuahpohondenganhinggaempattcpi dari masing-masingtepi, lihat Sub-subbab 4.1.3). Pada umumnya, pohon akan menjadi sangattidak seimbang.Gam-bar4.timenggambarkan penguraian untuk ruang dua dimensi (yang lebih mudah digambarkan)dan quadtrcercsulia-n.Kasus tiga dimcnsi mcngikuti-konstruksiyang sama,kecuali pohon iiu memiliki ta.pui dcngandelapanujung paia masingmasing cabang.

Pusatmassa

Pengetompokan bodi

Begitus waktu.Artiny berpindah). M gaya.Denga Hut, 1986). Algoritm for

Gambar4.18 Pengetompokan bodi jarak jauh.

) 138

ParallelProgramming

(t Bui. Tot_ Com Upd


bsition* / I

ma, di mana -masinggaya ;ar pcsanbisa Ndipengaruhi gsungtersebut rangberjauhan tengahmassa t diaplikasikan

Dalam algoritma Barnes-Hut (Barnes dan Hut,l986), setelahpohon dibangun, massatotal dan pusat massadari subkubus disimpan pada masing-masingcabang. Gaya pada masing-masingbenda dapat diperoleh dengan melintasi pohon, dimulai pada akar, dan berhenti di sebuah cabang ketika perkiraan cluster dapat iigunakan untuk benda tertentu. Sebaliknya, dilanjutkan dengan melintasi pohon ke arah bawah.Oiaatam simulasi astronomi N-body, suatuukuran sederhanabisa dibuat denganperkiraansebagai berikut.Andaikata kelompok tersebut terlampir di dalam suatu volume berbentuk kubus yang diberikan oleh dimensi d x d x d, dan jarakke pusat massaadalahr. Gunakanlahserangkaianperkiraan ketika r>-

d 0

di mana 0 adalah sebuahkonstanta bernilai 1.0 atau kurang (0 disebut sudut pembukaan).Pendekatanitu padahakikatnya bisa mengurangi upaya perhitungan.

\ a a

asalahanyang s bcrisibcndars.Jika scbuah lanjutnya.Jika retiap subkubus hinggadclapan singbcrisi satu ilkanrckursi di

a

a a

rla

O

a

rat subarcadan r s u b b a4 b. 1 . 3 ) . kan penguraian ustiga dimcnsi g padamasing-

o

a o

Quadtree Parsiat

Partiket

rekursifpadabidangdua dimensi' Gambar4.19 Pembagian Begitu semuabenda diberi posisi dan kecepatanbaru, prosestersebutdiulang untuk setiapperiode waktu.irtinya, seluruh octtree hirus direkonstruksi untuk setiapperiode waktu (karenabenda-bendatelah MembangunpohonmembutuhkanO(n log r) waktu. Demikianjuga denganperhitungansemua berpindah). gaya.Dengan demiklan, waktu kompleksitas keseluruhandari metode itu adalah O(n log n) (Barnes dan Hut, 1986). Algoritma tersebutbisa dijelaskansepertiberikut: for

(t : 0; t < tmax; t++) Buil-d_Octtree O ; Tot Mass Center ( ) ; n ^-f v v r r l v

n ^-fo L v ! v v \ / ,

UpdaEe ( ) ;

t t

{

I

/*

Fnr

L v L

oanh

1-ime

ncriod

*/

/* /*

construct Octtree (or Quadtree)*/ compute totaf mass & center /*

/*

f rarzerse

/*

t r e e / -^, A m u v rhL r r I rJ tq . uI

i na

update posltion/veIocitY

fnrccg

*/

*/

)

Strategi Pembagian dan Divide-and-Conquer

139


Rutin Build octtree ( ) bisa dibangun dari posisi benda-benda, denganmempertimbangkan masing-masingbendasecarabergantian.RuiinFor,-l,tr""-center harusm^elintasipohon,menghitung o totalmassadanpusatmassadi seiiapnode. i"i it" a"p"t ail;r."i"" r*ila retursir.Totalmassa, M, diberikan olehpenjumlahan sederhana dari totutrnur* tuiun_, 1

di manam,adatahtotal massadariturunan-"-,.T":"*:sa

c didapatdari

4.3 RA

Bab inime o Partisi o

Konsh

o

Contoh dan ma

c=fii{^,,,,)

di manaposisidari pusatmasamemirikitiga komponen, ke arahx, y, d9nz.Rutin harusmengunjungi node-node yangt"tutlikun apakahp".tiraunp.'ngelompokancomp Force ( ) bisadigunakan untuk semua bendi pada

'"t-Jiu'p".[i.ililil;;r"d';i;i:;,jis;;;ii,iLiiunun noa"

il:131'ilL?ff#"iari

octtree pada umumnya akanmenjadi sangat tidak seimbangdan bentuknyaberubahselama simulasi. oleh karena itu, strateeipartisi statis;;;;il;" tidak akan sffil"i"]Liirdaram penyeimbanganmuatan. carayangtebihbaik

aaramueueffit"i"ip"r. disebutorthogonar "n3,n-0".ry9u*i";til;'k. recursive bisection (salmon,1990)' Ivrarikid;;d;*iLan metoae tersebut kedalamareabujursangkar duadimensi. Pertama'sebuahgarisvertikalmemuagi"area menjadidua,masing-masing denganbendaberiumlahsama. Untuk masing-masing area,garishoriiontal didapati,n6tu8;;.a i"niuai dua,masing-masing dengan bendaberjumlahsama' Pembagiant.tt.fui Jiut":rg tti"ggi^trr'a"p"i area sebanyakjumlah prosesor.

ditugasiun t" tuting+nasirig u."i."s"uuunlontor, daripembagian diilushasikan

[:Htffi:lfjssesor

a

a

a

a a

a

a

Teknik divid Leiserson da pohon. Ada l kemudian ak jaringan poho divide andco dan hiperkubr dalam arsitek

(l eeo).

Begitum untukpengal dan direncan demikian,kes eksekusiprog BucketSc secaraspesifi konteksprogr (1999),dan-S Sumberasliun Bhatt dkk (199 algoritmadalar metodemultiku

a !

140 Parallel'programming

Gambar4.20 Metodeorthogonal recursivebisection.

Aho, A. V.,J. E Addison-W B a r n e sJ,. E . , & No. 4 (Dec Bhat, S., M. Ch ScolableHi7


pertimbangkan rn,menghitung ra,M,diberikan

4.3 RANGKUAAAN Bab ini memperkenalkankonsep-konsepseperti berikut: o Partisi dan divide and conquer adalahdasardari teknik perhitunganpararel o Konstruksi Pohon o Contoh masalah-masalah partisi dan divide and conquer,antaralain bucket sort, integrasinumerik, dan masalahN-body.

BACAANLEBIHLANJUT n

Fnrna

f l

\/ ligunakanuntuk n, turunannode ielamasimulasi. banganmuatan. tgonalrecursive karduadimensi. berjumlahsama. ;-masingdengan umlah prosesor. randiilustrasikan

divide and conquer dijelaskan dalam berbagaiteks mengenai struktur data dan algoritma (Cormen I.Fik Leiserson dan Rivest, 1990). Sebagaimanayang ierlihat, teknik tersebut menghasilkan'sebuah struktur pohon-.Ada kemungkinan untuk membangun sebuahmultiprosesor dengan seb-uahjaringan pohon yang kemudian akan menerima./mempertanggungiawabkan masaiah divide arid conquer.tatu"atarj dua mesin jaringanpohon telah dikonstruksikan denganmaksudbahwa kebanyakan aplikasi dapatdirumuskansebagai divide and conquer.Bagaimanapunjuga, ieperti dalam Bab l, pohon-pohondapatdilekatkan ke dalamjila dan hiperkubus sehinggajaringan poh-ontidak perlu dimiliki. Pemetian algoritma divide and .onqu.i k" dalam.arsitektur yang berbeda menjadi tujuan dokumen riset, seperti pemetaanoleh Lo dan Rajopadhye

(lee0).

dipartisi,sebuahalgoritmayangterjadwalsesuaidalambeberapa konteks .Begitumasalah/problem untukpengalokasian prosesor^pada partisiatauproies-proses tainnya.Sebuahteksdiberikanuntukdipartisi dandirencanakan (Sarkar,1989).Pemetaan (penjadwalan statisjtidak dibahasdalamteks ini. Namun demikian, keseimbangan bebandinamis,di manatugas/perintatr dilimpaht<an kepadaprosesorselama eksekusi program,dibahasdi Bab 7. Bucket_Sort drjelaskan dalamteks mengenai algoritmapencarian (lihatBab9) dandapatditemukan secara spesifikdalamLindstorm-(1985) danWagnerdanHanll986).Evaluasinumerikdariintegraldalam dalamFreeman danPhillips(tgg2),Gropp,Lusk,dariSkjellum !9!9t t programparaleldapatditemukan (1999),dan Smith(1993),dan seringkalidigunakansebagaiaplikasisederiiana auturnprogrurnparalel. laintermasuk lymbelasliunllk algoritmaBarns-HutadalahBarnesdan-Huttrqso). Dokumen-dokumen Bhattdkk (1992)dan Warrendan Salmon(1992).Liu danwu itsSzi mempertimbangkan pemrograman algoritma dalamC++' 1e.1.ousdarialgoritmadivide-and-conquei oleh-na-ei-Hutt,pen-<lekatan lainadalah metode multikutubcepat(Greengard danRokhlin,l9g7).Ter-dapat metodehybrid.

DAFTAR PUSTAKA Aho,A-.y., J. E. Hopcroft, & J. D. Ullman (1974), The Design and Analysis of ComputerAlgorithms, Addison-Wesley,Reading,MA. Barnes, J. E-, & P.Hut ( 1986),"A HierarchicalO(N log N) ForceCalculationAlgorithm," Nature, yo..324, No.4 (December),pp. 446449. Bhat,S., M. Chen, C. Y' Lin, & P. Liu (lgg2), "Abstractionsfor ParallelN-Body Simulations,"proc. ScalabI e H igh P erformance Computing Conference,pp. 6J9.

Strategi Pembagian dan Divide-and-Conquer

l4l


Blelloch, G. E. (1996),"ProgrammingParallelAlgorithms," Comm.ACM,Yol.39, No. 3, pp. 85-97. Bokhari, S. H. (1981), "On the Mapping Problem," IEEE Trans. Comnput.,Vol. C-30, No.3, pp.207214. Cormen,T. H., C. E. Leiserson,& R. L. Rivest (1990),Introductionto Algorithms,MIT Press,Cambridge, MA. Freeman,T. L., & C. Phillips (1992), Parallel Numerical Algorithms,Prentice Hall, London. Greengard,L., &V. Rokhlin (1987),"A FastAlgorithm for ParticleSimulations,"J. Comp,Phys.,Yol.73, pp. 325-348. Gropp, W., E. Lusk, & A. Skjellum (1999), Using MPI Portable Parallel Programmingwith the MessagePassing Interface, MIT Press,Cambridge, MA. l6ia, L (1992), An Introduction to Parallel Algorithms, Addison Wesley,Reading,MA. Lindstrom,E.E. (1985),"The DesignandAnalysis of BucketSortfor Bubble Memory SecondaryStorage," IEEE Trans.Comput.,Vol. C-34, No. 3, pp, 218-233. Liu, P.,& J.-J.Wu (1997), "A Frameworkfor ParallelTree-BasedScientificSimulations,"Proc. 1997Int. Conf. P ar. Proc., pp. 137-144. Lo, V, M., & S. Rajopadhye(1990),"Mapping Divide-and-ConquerAlgorithmsto ParallelArchitectures," Proc. 1990Int. Conf. Par. Proc., Part III, pp. 128-135. Miller, R., & Q. F. Stout ( 1996),Parallel Algorithmsfor Regulsr Architectures: Meshesaod Pyramids,MlT Press,Cambridge,MA. Preparata,F. P., & M. I. Shamos(1985), Computational Geometry:An Introduction, Springer-Verlag,NY. Salmon, J. K. (1990), Parallel Hierarchical N-Body Methods, Ph.D. thesis, California Institute of Technology. Sarkar, V. (1989), Partitioning and Scheduling Parallel Programs for Multiprocessing, MIT Press, Cambridge,MA. Smith, J. R. (1993), The Design and Analysis of Parallel Algorithms, Oxford University Press,Oxford, England. Wagner,R.A., & Y. Han (1986), "Parallel Algorithms for Bucket Sorting and Data DependentPrefix Problem,"Proc. 1986Int. Conf. Par Proc.,pp.924-929. Warren, M., & J. Salmon (1992), "Astrophysical N-Body Simulations Using Hierarchical Tree Data Structures,"Proc. Supercomputing92,LEEE CS Press,Los Alamitos,pp.570-576.

SOAL.SOAL

4-2. Gu

mel ml

4-3.

terd Su SEI

4-4.

4-5.

4-6. 4-7. 4-8.

4-9.

me par 2,S Anâ‚Ź log wak Ana Poh kes Len con Ken men Ken nda kura Tuli (bila

untu 4-10. Tuli nol I pros 4-ll. Tulis caral (a)

Pendekatan llmiah/I(lasifi kasi Numerik 4-1.

Tulislah sebuahprogram yang bisa membuktikan bahwa kecepatanmaksimum dari penambahan serangkaianangka menggunakanpartisi sederhanayang dijelaskan di Sub-subbab4.1.7 adalahp/2, di mana terdapatp proses.

142

ParallelProgramming

(b)


ipp.85-97. No.3, PP.207-

4-2.

Gunakan persamaanyang dihasilkan di Sub-subbab4.1.1 untuk mempartisi sebuahdaftar angka menjadi z partisi yang ditambahkan secara terpisah, yang menunjukkan_balrvg_n:!]a:l optimum z untuk memberikanwaktu eksekusiparalel minimum adalahjika *: ,lntQ+tnn,,r,) di mana terdapatp prosesor.(Petunjuk: Turunkan persamaanwaktu eksekusiparalel.)

'ress, Cambridge, 4-3.

lon. 73' np,PhYs,Vol' withtheMessage'

Storage," econdary rsl'Proc.1997Int' allelArchitectures"' aodPYramids,MIT NY' rringer-Verlag, iifomiaInstitute of MIT Press' :essing,

Sub-subbab4.1.1 memberikantiga implementasidalampenambahanangka,menggunakanpemisah send O dan recv O, menggunakansebuahrutin broadcastdenganpemisahrecv O untuk mengembalikanhasil parsial, dan menggunakanrutin penyebarandan pengurangan.Tulis program paralel untuk ketiga implementasi,yang membantu program menyaring informasi pewaktuan (Bab 2, Sub-subbab2.3.4), danbandingkanhasil-hasilnya. 4-4. Anggap struktur sebuahperhitunganterdiri atassebuahpohon biner dengann daun (tugasakhir) dan log r level. Setiapnode dalampohonterdiri atassatulangkahperhitungan.Berapabatasbawahdari waktu eksekusijika jumlah prosesorkurang dari n? 4-5. Analisis metode divide-and-conquerdalam menugaskansatu prosesorke setiapnode pada suatu pohonuntuk penjumlahanbilangan(Sub-subbab 4.1.2)dipandangdari segikomunikasi,perhitungan, keseluruhanwaktu eksekusiparalel,kecepatan,dan efisiensi. 4-6. Lengkapi pseydocodeparalel yang terdapat dalam Sub-subbab4.1.2 untuk metode divide-andconquer (biner) untuk kedelapanproses. 4-7. Kembangkan persamaan waktu perhitungan dan komunikasi untuk divide-and conquer z-ary, mengikuti pendekatanyang digunakandalam Sub-subbab4.1.2. yang menghasilkannilai terkecil dalamkumpulannilai 4-8. Kembangkanalgoritmadivide-and-conquer n dalam-O0og d langkah menggunakan n/2 prosesor.Berapa waktu kompleksitas jika terdapat kurang dari n/2 prosesor? 4-g. Tulis sebuahprogram paralel dengan waktu kompleksitas O(log r) untuk menghitung polinomial (bilangan bersuku banyak) F = qrto+a/, *olt*

lrsityPress,Oxford, Preflx ta DePendent Tree Data erarchical '16.

untuk berbagaitinggkat, n, dengana, x, dan n sebagaiinput' 4-10. Tulis sebuahprogram paralel yang menggunakanpendekatandivide-and-conqueruntuk menemukan nol pertama dalim sebuah aarui Uitangan bulat yang disimpan dalam sebuah array.Gunakan16 4-ll.

num dari Penambahan rbbab4.1.1 adalahPl2,

...* a n_rx'-'

prosesdan 256 angka. Tulis program-program paralel untuk menghitung penjgm,lahandari n bilangan bulat pada setiap cara bbrikut dan nilai performanya.Asumsikan n adalahkelipatan2. partisi r bilangan bulat ke dalam nl2 pasangan.Gunakan nl2 prosesuntuk menjumlahkan (a) pasanganbilangan bulat ke dalarnnl2 bilangan bulat- Ulangi metode bersama-sama*setiap tersebut padanl2 bilangan bulat untuk memperolehnl4 bilangan bulat dan lanjutkan hingga diperoleh hasil akhir. (Ini adalahsebuahalgoritma binary tree') (b) Bagilah n bilangan bulat ke dalam r/log n kelompok dari masing-masinglog n bilangan. Gu-nakann/log iproses, yang masing-mising menjumlahkan bilangan dalam satu kelompok secaraberurut-an.'Kemudian,jumtahlan nllog n hasil menggunakanmetode (a). Algoritma tersebut ditunjukkan dalam Gambar 4.21-

Strategi Pembagion dqn Divide-qnd-Conquer

143


sepe lingk dantr caran 4-16. Turu adap diber 4-17. Meng

-vJ/ {+}

ni,, G a m b a r4 . 2 1 D i a g r a mp r o s e su n t u kS o a t4 - 1 2 ( b ) . 4-12. Tulis program-program paralel untuk menghitung r! pada setiap langkah berikut dan nilai performanya.Bilangan,r, mungkin ganjil ataugenap,tetapi merupakansebuahkonstantapositif. (a) Hitung rl denganmenggunakandua prosesbersamaan, masing-masingperhitungankira-kira setengahdari urutan yang lengkap. Sebuahprosesutama kemudian menggabungkandua hasil yang tcrpisah. (b) Hitung n! denganmenggunakansebuahprosesprodusendan sebuahproseskonsumenyang saling berhubungan.Produsenmenghasilkanbilangan 1,2,3 ... n seaaraberurut.Konqumen menerimabilanganberurutdari produsendan mengumpulkanhasilnya,contohnyaI x tr x 3 4-13. Tulis sebuah program paralel divide-and-conqueryang mcnentukanapakah angka-angkayang mengandungbilangan 1 dalam sebuahfile binary adalahangka genapataupunganjil (contohnya, menciptakanpemeriksakesamaan).Modifikasi program agar sebuahbit terlekatpada isi file, dan aturlah sebuah0 atau I agarbilanganberangkaI menjadi genap(sebuah generatorkesamaan7. 4-14. Bucket sort dan implementasiparalelnyamemiliki performayang minimum jika angka-angkatidak disalurkansecarameratakarenalebih banyak angka akanjatuh ke dalam bucket yang samauntuk penyortiranberikutnya.Modifikasi algoritma guna mengubahdaerahmasing-masingbucket yang terkumpul.Hal itu dapatdilakukandenganmenjalankanalgoritmaatausebelumnyadalam langkah persiapanproses.Implementasikan/jalankan algoritmaAnda. 4-15. Satu cara untuk menghitungn adalahmenghitungdaerahdibawah kurvaf(x) :4/(1 + x2) antara 0 dan l, di mana nilainya sepadandengann. Tulis sebuahprogram paralel untuk menghitungn

144

ParallelProgramming

4-18. Tulis

denga I,P 2.P 3.P Evalu 4-19. Temu poinp negat padaC

Pemba persim nol dar 2).


I

sepertiitu menggunakan l0 proses.Caralain untukmenghitungzradalahmenghitungdaerahsuatu lingkaranradiusr = 1 (contohnya,nf: n). Tentukanpersamaan yangsesuaiuntuksuatulingkaran, dan tulis sebuahprogramparaleluntuk menghitungr sepertiitu. Berikankomentarterhadapdua caramenghitung n. 4-16. Turunkansebuahrumusuntuk mengevaluasi secaranumeriksuatuintegralmenggunakan metode adaptivekwadratursepertiyangdigambarkan yang dalamSub-subbab 4.2.2.Gunakanpendekatan diberikanuntukmetodebentuktrapesium. 4-17. Menggunakan metodeapapun,tulis sebuahprogramparalelgunamenghitungintegral

r: J.,['*,t(f)r' 4-18. Tulislahsebuahtugasstatisprogramparaleluntukmenghitungn denganmenggunakan rumus

l.,h-*a,=L dengan cara-caraberikut: l.

Penguraiansegiempat,sepertidijelaskanpadaGambar4.l3

2.

Penguraiansegiempat,sepertidijelaskanpadaGambar4.14 3. Penguraianbentuktrapesium,sepertidijelaskanpadaGambar4. 15 Evaluasi masing-masingmetode dalam kaitannya denganketelitian dan kecepatan.

rikut dan nilai nstanta positif. tungankira-kira dua ;gabungkan

4-19. Temukanpersilangannol dari sebuahfungsi oleh metodebisection.Dalam metodetersebut,dua poin pada fungsi dihitung, katakanlah fla) dan flb), di mana fla) bemilai positif dan/(b) bemilai negatif. Fungsi tersebut harus menyeberangdi suatu tempat antaraa dan D, seperti diilustrasikan padaGambar4.22.

konsumen yang Irut, Konsumen

)) ) ) ohnya) ;ka-angkayang tjil (contohnya, adaisi file, dan kesamaan). tidak 3ka-angka lng samauntuk ng bucketyang dalamlangkah l(l + xzl aslutu i mcnghitungn

Gambar4.22 Metodebisectionuntuk menemukan[intasannol padasebuahfungsi. Pembagian interva\ secara berturut-turut memungkinkan ditemukannya \okasi yang tepat darl persimpangannol. Tulis program divide-and-conqueryang akan menemukanlokasi persimpangan = nol dari fungsi f(x) = x2- 3x + 2. (Fungsi itu memiliki dua lokasi persimpangannol, t = I dan.r

Strategi Pembagian dan Divide-and-Conquer 145


4-20. Tulislah sebuahprogramparalel untuk mengintegrasikan sebuahfungsi menggunakan hukum Simpson, yakni

r: lfl)a,= 6r... (a)+ t f (a+6) + 2f (a+ 26) + a/(a + 36) + 2f (a+ aE)+,..a f @+ (n- tg) + /(a)'l ,l"f di mana6 ditetapkan sebagai t5 : (b - a)/n dannharusgenapl.Pilih suatufungsiyangsesuai(atau susunlah suatufungsiagarfungsiitu bisadiinput). 4-21. Tulissebuah programberurutdansebuah programparaleluntukmensimulasi suatusistemastronomi N-body,tetapidalamdua dimensi.Benda-benda itu padaawalnyaadapadaposisidiam.posisi dan massaawal akan dipilih secaraacak (menggunakan generatorbilanganacak).Tampilkan pergerakan benda-b_enda menggunakan rutin grafisyangdigunakanuntukprogramMandlebroiyang bisa didapatkandi http://www.cs.uncc.edu/parjrog. Sebaliknya,tunjukkanmasing-masing bendi sesuaiwarnadanukurantertentuuntukmengindikasimassanya. 4-22. Kembangkanlah persamaan N-bodyuntuksebuahsistempartikelbermuatan (sepertielektronbebas danpositron)yang diaturolehhukumCoulumb.Tulis suatuprogramberuruid- p.og.urnparalel untuk memodelkansistemtersebut,yang mengasumsikan bahwa partikel terletik dalam suatu ruangdua-dimensi. Hasilkanoutputgrafisyangmempertunjukkan pergerakan partikel.Sediakanlah terlebihdahuludistribusidanpergerakan partikel-partikeldanruangsolusinya. 4-23. (Soalpenelitian)DiberikanI set n titik dalamsuatuwahana,kembangkan suatualgoritmadan programparaleluntukmenemukan titiktitik yangberadapadagariskeliling daridaerahpalingkecil yangberisisemuatitik, dangabungkan titik-titik itu, sepertiyangdiilustraJikan padaCimAaiq.ZZ. Masalahitu dikenalsebagaimasalahpembungkus cembung planar danbisadiselesaikan dengan sebuahpendekatanrekursif divide-and-conquer yang sangatserupadenganquicksort,dengan pemisahandaerahsecararekursif menjadidua bagianmenggunakan titik/poin ;'pivot". Terdipat beberapasumberinformasi dalam masalahpembungkusiembung planir tersibut, mencakup Blelloch(1996),Preparata danShamos (1985),danMiller danstout(tssol.

a t

ta

t a

'

Gambar4.23 Convex Hutt(Soat 4-23).

Kehidup:

4-24. Tdis siste Teta aslij 4-25. Seb pela berk setia send danr suat

men) sebu

mem mes bank

Asun l.

l

I

2.i

I

Perki dihab

4-26. Sue, tabun hari r berga tingg setia I tangg berha tangg yangI

tangg

simbo

146

Parallel Programming


unakanhukum

)l angsesuai(atau iistemastronomi risidiam. Posisi mk). Tampilkan vlandlebrotyang benda rg-masing ti elektronbebas programparalel tak dalam suatu ikel.Sediakanlah tu algoritma dan rerahpalingkecil da Gambar4.23. elesaikandengan uicksort, dengan 'pivot". Terdapat sebut,mencakuP

-23).

Kehidupan Nyata 4-24' Tulis sebuahp.ocTup.b:ytgl dan paralelyang memodelkanplanet di sekelilingmatahari(atau sistemastronomilain). Hasilkan giafiJyang menunjukkan prrg".ukurr 6.f.*pu planet. _o,1nut Tetapkanterlebihdahuludishibusi danpergerakinp-lanet-planet Anda sindiri (gunakan'data-data aslijika ada). 4-25' Sebuahbank besardi negaraAnda memproses rata-rata30 juta cek sehariuntuk2 juta rekening pelanggan.Suatum.asalahyang memeriukanwaktu adahfr masalah menyortir..k k. dulurn berkas-berkas rekeningpelangganindividu sehinggacek-cektersebutdapaidilaporkankembali setiapbulannya.(Bankmenangani penyortirancekuntut<beberapa bankklien selainmilik bankitu sendiri.)Banktersebuttelahmenggunakan penyortircekberdasarkan mainrrame yunl-rungut danmetodequicksort.Bagaimanapun juga,Andatelahmemberitahu ".put bankbahwaind"amengetahui suatucarauntuk menggTtT N komputeryang lebih kecil secaraparalel.Masing-masin-g akan menyortircekke 1A{.dari30juta cek.Selanjutnya, penyortiran parsiilakandigabuigkan menjadi sebuahhasil penyortirantunggal.Sebelummenanimkanmodil ke dalamtefnoloii baru, uant< membayarAnda sebagaiseorangkonsultanuntukmenirukanprosesyangmenggunakan program message-passing paralel'Denganasumsi-asumsi berikut,tirulian p.na.futun biir tersebutuntuk bank. Asumsi-asumsi: l' Masing-masing cekmemilikitigabilanganidentifikasi, yaknisembilan-digit angkaidentifikasi bank,sembilan-digitangkaidentifikasiiekening,daniiga-digitnomor u not pertama tidak dicetakataudiperlihatkan). ""tilunft 2' Semuacekdengannomoridentifikasibankyangsamaakandisortirberdasar nomorpelanggan untukpengirimankepadabankklien. jika // adalah10danjika // adalah1000.Perkirakanpersentase lgrk-iykan pemercepat waktuyang dihabiskandalamkomunikasidibandingkan waktuproses. 4-26' Sue,2l tahun,berasaldari sebuahkeluargayang cerdik dalamhal keuangan. Dia telahmelihat tabungandaninvestasiorangtuanya selamibeberipatahun.Ia membacawall StreetJournalsetiap hari di perpustakan universitas (gratis!),dan.telahmenyimpulkan bahwadia tidak akanmampu bergantung padajaminansosialketikaia pensiundi usia+g tuhun.Agarsegera lulusdariperguruan tinggi, orangtuanyamemberikanCD-ROMyang berisi sejarahp"nutupanhargasetiap hari pada setiappergantianiaminanyangterdaftaEdari I Jinuari l90b hinggaakhlrbulan-lalu. Untuk mudahnya,Anda boleh menganggapdata dalam bb-RoM terorganisasi ke dalam tanggal/simbol/rekaman+ekaman penutupinhirga untuk masing-masing dari :-s8.oo0surat-surat berharga yangtelah.didaftarkan sejakt9ob. lHanyapecahan atau"rlesimaiyang terdaftarpadasetiap tanggalyang diberikan;perusahaan bangkrutdan munculyang barusetiapliarinya.) Dlngancara yangsama,Andabolehmengasumsikan bahwaformatdari sebuahrecordidalah tanggal simbol

Tiga digit terakhir dari tahun,diikuti "penanggalanJulian,'(di mana l5 Januari adalahJulian 15, I Februari adalahJulian 32, dan seterusnva) 'atau Mencapai, sepuluh karakter, seperti PCAI, KAUF{, IBM. AZ, menggambarkanstok NASDAQ (Internasional pcA) dana bersama(Kaufman

Strategi Pembagian dan Divide-and-Conquer

147


AggressiveGrowth), dan sebuahpilihan untuk membelistok IBM denganharga tertentu untuk lama waktu yang telah ditentukan secaraberturut-turut. hargapenutupan Tiga bilanganbulat,X(mewakili keseluruhanangkadolarperunit), I/(pembilang pecahandolar per unit), dan Z (mewakili penyebutpecahandolar perunit). Contohnya,"996033/PCAI/101314" mengindikasikanbahwa pada tanggal 2 Februari 1996, stok PCA Internationalditutup pada $10.75 per saham.Sue ingin mengetahuiberapabanyak stok yang terdaftar karena pada akhir bulan lalu terdapat 50 hari atiu lebih perdagangansecaraberurutan, di mana stok telah ditutup, baik tanpa perubahandari hari sebelumnyaatiu dingan harga yang lebih tinggi, kapansajadalam sejarahyang terekamdalamCD-ROM. 4.27. Semakin Samanthateringat cerita sang kakek saat memenangkanKejuaraanDunia pertandingan Domino tahun 1963,semakinia ingin meningkatkanketerampilanannya dalampermainanterse6ut. Ia memiliki persoalan mendasar; yakni tidak ada lagi partner bermain. Permainannya semakin sempurna hingga secarakonsisten ia memenangkansetiap permainan melawan teman-temannya yang tetap sajakalah! Samanthatahu bahwa versi komputeri permainan go, catur, brigde, poker, dan checker telah berkembang.Ia melihat tidak ada alasanbagi seseorangyang kompetendaiam ilmu komputer untuk tidak mampu melakukan hal yang sama untuk domino. Saiah satu profesor ilmu komputernya di kampus kedua University of Canada,lJ-Can-2,telah mengatakanbahwa Samanthadapat'melakukan apa pun yang diinginkannya (dalam batasanteoretis tentunya). Samanthasungguh-sungguhingin memenangkankejuaraandunia berikutnya! Dari 2-kotak Itaniumnya yang mendekati kuno (2GHz,2GB RAM, 2TB hard disk), ia segera mengembangkansebuahsimulatorprosesor-tunggal yang bisa diajaknyabermain.Skemadasardari pendekatannyaadalahmemerintahkanprogram untuk membandingka; setiapbagian denganbagian yang telah dimainkan untuk menentukangerakan terbaik komputer. Hal itu tampaknya melibatkan begitu banyak komputasi/perhitungan,termasuk rotasi dan percobaanpenetnpatanbagian-bagian. Hal itu menyebabkan Samantha menunggu program untuk menghisilkan gerakan komfuter selanjutnya. Ia pun merasabosan dengan performa permainan seperti halnya denganteman-teman lamanya.Jadi, ia meminta bantuanAnda untuk mengembangkaniebuah veisi proJesor-paralel. L Buat skema algoritma prosesor-tunggalSamantha 2. Buat skema algoritma prosesor-paralelAnda 3. Perkirakan kecepatanyang bisa Anda capai jika Anda hendak membangunjaringan dengan 50 komputer lama seperti miliknya. Selanjutnya,berikan rekomendasikepadanyauntuk tetap meneruskantugas tersebutatau menghabiskan$800 untuk membeli prosesor'terbaru,yang kurang lebih 50 kali lebih cepat dibandingkan Itanium lama Samanthauntuk tipetipe simulasi tersebut,yakni 14GHz Octium dual prosesordenganstandar 1024bitdata bus dln 2-jalur akses simultanke 16T8 dari 0.5nsmemori utamanya. 4'28. Area, Inc., menghasilkan layanan integrasi numerik untuk beberapa perusahaanteknik kecil di wilayahnya. Ketika beberapaanak perusahaantersebut memiliki suatu fungsi kontinu atas suatu domain dan tidak mampu mengintegrasinya,Area,Inc.-lah yang dipanggil. Anda baru saja bekerja untuk Area,Inc., untuk membantu memperbaiki pengiriman yang lambat dari hasil-hasii integrali terhitungnya. Area, Inc. telah mengalami kerugian setiap tahun sejak eksistensinyadan begitu 'nonprofit' hingga pembayaranminggu depan masih dipertanyakan.Karena Anda ingin tetap Sisa

148

ParallelProgramming

ma me

An nur

Lar Lan

Lan Lan Lan

Ole ingi pros man 4-29. Pro men pors dan, apa mer

freku 4-30. Rafi dapa kota Ia me danF bant I x//,1 4-31. Pada dann akan kreat meng deng progr

(

meme pemro


rl denganharga turut. ),I(pembilang r perunit). tari 1996,stok nyakstok yang 'a berurutan,di rga yang lebih a Pertandingan tainantersebut. mnya semakin rman-temannya r checkertelah lomputeruntuk :omputemyadi tpatmelakukan -sungguhingin disk),ia segera temadasardari denganbagian nyamelibatkan bagian-bagian. ftan komputer n teman-teman ior-paralel.

ringan dengan tya untuk tetap r terbaru,yang rc-tipesimulasi m 2-jalurakses teknik kecil di rtinuatas suatu ru sajabekerja -hasilintegrasi rya dan begitu ingintetapbisa

makan (dan untuk itu Area, Inc. harus membayarAnda), Anda memiliki dorongansangatkuat untuk membantu perusahaanitu. Dengan latar belakangkomputasiparalel yang kuat,Anda segeramengenalipersoalannya,yaitu Area, Inc' telah menggunakan prosesor tunggal untuk mengimptementaiikan algoritma integrasi numerik standar. Langkah l: Langkah2:

Langkah 3: Langkah 4: Langkah 5:

Membagi sumbu independenmenjadi intervalN genap Memperkirakan areadibawahfungsi sembarangiiterval (integralnyadi atasinterval) menurut hasil perkalian lebar interval dengannilai fungsi ketika dievaluasi di ujung kiri interval. Menjumlahkan semuaperkiraan N untuk mendapatkanareatotal Membagi lebar interval separuhnya Mengulang langkah 1-4 hingga total repetisi ke-i berbedadenganrepetisi ke-(i - l) dengankurang dari 0.001 persenmagnitudototal ke_i.

Oleh karena manajer Anda bersikap skeptis terhadappendekatankomputasi paralel model baru, ia ingin Anda menirukandua konfigurasimesinyang b-eibeda, yakni dua p.or.ro. di awal dan delapan prosesordi tahap Ia telahmengatakanbahwademonsirasiyang iuksesmerupakankunci agar !,:{y" mampu membeli lebih banyakprosesordan membayarAndaminggu depan. 4-29. Proyek Search for Extra-Terrestrial Intelligence (SETI) mempekerjakanjutaan komputer untuk menganalisissiny-alteleskop-radio dariAreciboObservatorydiPuertoRico.Sitiap kompuiermemiliki porsi waktu dan frekuensi-terbatas dari sinyal yang disimpanoleh teleskop.udio terbesardi dunia dan diminta mengerjakan analisis yang sangai komputasional untuk menentukan kecenderungan apakahporsi tersebutmemuat komunikisi inieligen d'aribentuk kehidupan lain. Jelasbahwa hal itu merupakan contoh pendekatandivide-and-conquer. Diskusikan bagaimanapendekatanitu dapat diaplikasikan pada persoalananalisiskomunikasi frekuensi-radio yang lebih lokal di tengah perjuangandunia melawan terorisme. 4-30. Rafic suka memecahkanteka-teki.silang.Akhir-akhir ini, ia mulai menciptakannyaketika tidak lagi dapat menemukan lawan yang seimbang.Prosesitu memiliki dua bagia-n,yaknimenjabarkan poL kotak-kotak terbukatempat huruf-huruf, dan menghitamkankotak yang memisahkanliata ataufrase. Ia memiliki kamus kata dan frase yang memuat telitr Oari 100.000kati dan frase sejak masayunani dan Romawi Kuno hingga masa modern seperti Itanium-Ill dan teknologi-pico. Rafic memerlukan bantuanAnda. Kembangkan sebuahalgoritma berurut yang akan menghasilkan puzzlekatadengan ukuran y'y' x N, lalu ubah algoritma menjadi perhitunganparalel yang sepadan. 4-31. Padasuatukesempatan,beberapasiswapemulailmu komputerberusahamenyalinkarya oranglain dan mengakuinyasebagaipekerjaanmereka.Suatupraktik, yang disebutplagiarisme,secarf khas akan mengakibatkanhukuman akademisberat jika terdeteksi.lerkadang pira siswa yang lebih kreatif akan melakukanperubahankecil dalamkarya tersebutsebelummeigumpulkannya.Mereka mengubahnama variabel,mengubahindentasi,dan mengubahstruktur looping (mengganti'while' dengan 'for'). Untuk kuliah awal tahun khusus dengan400 siswa, dibutuh[an tiri]kira g0.000 program pembandingper tugas pemrograman.Akibatnya, cek total jarang sekali dilakukan. (Mudah) Kembangkan suatu pendekatan paralel menggunikan N ko.put"r yang dapat memeriksa secara mendalam duplikat yang persis sama di antara 400 karya pada suatu tugas pemrograman.

Strategi Pembagian dan Divide-and-Conquer

149


(Lebih sulit) Proseslahsetiapprogram untuk menandainama-namavariabel. Dengan demikian, ubah setiapprogram menjadi nama-namavariabel yang standar.Selanjutnya,aplikasikanpendekatan tersebutdari bagian yang 'mudah'. (Paling sulit) Proseslahsetiapprogram untuk menempatkansemualoop ke dalam struktur yang sama,yakni 'for'. Kemudian;implementasikankeduabagiansebelumnya. 4-32. Sarah, seorangteman Tom, memiliki hobi menciptakan puzzle. Di rumahnya, sistem CAD terikat ke mesin-pen$8.tlingyang dikontrol komputer di bengkel tempat ia mendesaintiga bentuk dasardan memproduksi ribuan dari setiap bentuk tersebut. Bentuk pertama adalah segitiga sebenarnyayang sisi terpendeknyaadalah 1 unit panjang. Bentuk kedua adalah segiempatyang sudutnya iOaiatr t unit panjang.Bentuk ketiga adalahgabungansegiempat4 unit dengan13 unit melekatpida segitiga sebenamya yang sisi terpendeknya adalah 4 unit. Dengan kombinasi potongan berubah-ubih (lc' tipe pertama,S tipe kedua, dan lPtipe ketiga), SarahmemerlukanAnda untuk mengembangkandan mengimplementasikan suatu algoritma yang akan menentukan area segitiga terbesar sebenarnyu yang dapat dibentuk denganmenempatkanbeberapaatau seluruhF + S + Ibigian secarabersamaan ..' awalnyasebagaialgoritmasekuensialdan kemudiansebagaialgoritmaparaleldenganNkomputer mengerjakan solusinya. Gabungan contoh dari potongan-potongantersebut ditunjukkan abtam Gambar 4.24 agar Anda dapat memulainya.

Kon

Dalam bab persoalanyi pipelining d guna memp (a) Segitigatunggal

(b) Pasangan segitigadan satu segiempat

(c) Empatcontohdari (b), masing-masing area adalah0,5 unit segiempat,area adatah 2 unit segiempatdenganrotasi 90 derajat untuk membentuksebuahsegiempatyang m'asing-masing sisinyamemitikipanjang t.f . Area adatah8 unit segiempat.

Gambar4.24 Segitiga(Soat4-32).

5.1 TE

Dalam tekn demi satu.P dijalankanc setiap prose meneruskan sebagaisua dijalankan, seringkalite

Sebag sederhanai r for

150

ParallelProgramming

( su


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.