11. STRATEGI PARTISI DAN DIVIDE & CONQUER
11.1 Partisi
Strategi
Divide & Conquer
Divide & Conquer M-ary
11.2 Contoh Divide & Conquer
Sortir dengan Bucket Sort
Referensi : Wilkinson, Barry & Allen, M, “Parallel Programming”,
Prentice Hall, New Jersey, 1999; Chapter 4; hal. 107 - 122
11.1.1 Strategi Partisi
Deretan dipartisi ke dalam m bagian dan ditambahkan secara
bebas untuk membuat penjumlahan parsial
Gambar 4.1 Deretan dipartisi menjadi m bagian dan ditambahkan.
Pengolahan Paralel/KK021239
Contoh - Menambah Sederetan Angka
Menggunakan rutin
Scatter
dan
Reduce
Master
s = n/m; /* number of numbers */
scatter(numbers,&s,P
group,root=master);
Analisis
Komputasi sekuensial membutuhkan n-1 penambahan dengan
kompleksitas waktu O(n)
Fase 3 - Komunikasi :
mengembalikan hasil parsial dengan rutin
send/ recv
t
comm2= m(t
startup+ t
data)
Fase 4 - Komputasi :
Akumulasi akhir
t
comp2= m -
1
Jadi
t
p= (t
comm1+ t
comm2) + (t
comp1+ t
comp2)
= 2mt
startup+ (n + m)t
data+
m + n/m
-2 = O(
n + m
)
Waktu kompleksitas paralel
lebih buruk
dari sekuensial
Pengolahan Paralel/KK021239
11.1.2 Divide & Conquer
Karakteristiknya adalah membagi masalah ke dalam sub-sub
masalah yang sama bentuknya dengan masalah yang lebih besar.
Pembagian selanjutnya ke dalam sub problem yang lebih kecil
biasanya dilakukan melalui rekursi.
Definisi rekursi sekuensial untuk menambah sederetan angka :
Pengolahan Paralel/KK021239
Hasil akhir
Masalah Awal
Pembagian
masalah
Gambar 4.2 Konstruksi Pohon.
Pengolahan Paralel/KK021239
Implementasi Paralel
Gambar 4.3 Membagi deretan ke dalam beberapa bagian.
Deretan awal
Pengolahan Paralel/KK021239
Gambar 4.3 Penjumlahan Parsial.
Jumlah Akhir
Kode Paralel
Misal dibuat ada 8 prosesor untuk menambah
sederetan angka.
Proses P
0Analisis
Diasumsikan n adalah pangkat dari 2. Waktu set up komunikasi,
t
startuptidak diperhitungkan.
Komunikasi
Fase Pembagian
Fase Penggabungan
Total waktu komunikasi
Komputasi
Total waktu eksekusi paralel
Pengolahan Paralel/KK021239
Gambar 4.5 Bagian dari pohon pencarian
Pengolahan Paralel/KK021239
11.1.3 Divide & Conquer M-ary
Tugas (task) dibagi ke dalam lebih dari 2 bagian setiap tahapannya.
Gambar 4.6 Pohon kuarternair (quadtree)
Pengolahan Paralel/KK021239
Gambar 4.7 Membagi sebuah citra
Pengolahan Paralel/KK021239
Daerah citra
Pembagian pertama
ke dalam 4 bagian
Pembagian
kedua
Sortir dengan Bucket Sort
• Sederetan angka dibagi ke dalam m area yang sama,
0 .. a/m - 1, a/m .. 2a/m - 1, 2a/m .. 3a/m - 1, …
• Sebuah “bucket” ditugaskan untuk menampung angka
dalam setiap area
• Angka-angka tersebut dimasukkan ke bucket yang
sesuai
• Angka-angka
tersebut
akan
disortir
dengan
menggunakan algoritma sortir sekuensial setiap bucket.
Sortir ini akan baik jika angka-angka awalnya
didistribusikan ke interval yang sudah diketahui,
misalnya 0 ..
a - 1
.
Pengolahan Paralel/KK021239
11.2 Contoh Divide & Conquer
Pengolahan Paralel/KK021239
Angka yang disortir
Angka yang belum disortir
Bucket
Gambar 4.8 Bucket sort
Merge List
Waktu
Sekuensial
Pengolahan Paralel/KK021239
Algoritma Paralel
Bucket sort dapat diparalelkan dengan menugaskan
satu prosesor untuk setiap bucket - mengurangi suku ke
dua (second term) dari persamaan sebelumnya menjadi
(n/p)log(n/p)
untuk p prosesor (dimana
p = m
).
Pengolahan Paralel/KK021239
Angka yang disortir
Angka yang belum disortir
Bucket
Gambar 4.9 Satu versi Paralel dari Bucket sort
Merge List
p
prosesor
Paralelisasi Selanjutnya
• Membagi deretan ke dalam
m
area, satu area untuk
setiap prosesor
• Setiap prosesor mengatur
p
“bucket” yang kecil dan
memisahkan angka-angka dalam areanya ke dalam
bucket-bucket tersebut
• Bucket-bucket kecil ini kemudian dikosongkan ke
dalam
p
bucket akhir untuk sortir, yang membutuhkan
masing-masing prosesornya untuk mengirimkan satu
bucket kecil ke masing-masing prosesor yang lain
(bucket
i
ke prosesor
i
).
Pengolahan Paralel/KK021239
Pengolahan Paralel/KK021239
Angka yang disortir
Angka yang belum disortir
Bucket
besar
Analisis
Fase 1 - Komputasi dan komunikasi
(membagi angka)
t
comp1=
n ; t
comm1=
t
startup+
t
datan
Fase 2 - Komputasi
(sortir ke bucket kecil)
t
comp2=
n
/
p
Fase 3 - Komunikasi
(kirim ke bucket besar)
Jika seluruh komunikasi tumpang tindih :
t
comm3= (
p
- 1)(
t
startup+ (
n
/
p
2)
t
data)
Fase 4 - Komputasi
(sortir bucket besar)
t
comp4= (
n
/
p
)log(
n
/
p
)
Jadi
t
p=
t
startup+
t
datan
+
n
/
p
+ (
p
- 1)(
t
startup+ (
n
/
p
2)
t
data)
+
(
n
/
p
)log(
n
/
p
)
Diasumsikan angka-angka tersebut didistribusikan untuk mencapai
formula ini. Skenario kasus terburuk (worse-case) terjadi ketika semua
angka berada dalam satu bucket !
Pengolahan Paralel/KK021239
Rutin “all-to-all”
Dapat digunakan untuk fase 3 - mengirimkan data dari setiap
proses ke setiap proses yang lain
Gambar 4.11 Broadcast “all-to-all”
Pengolahan Paralel/KK021239
Rutin “all-to-all” sebenarnya mengubah baris
sebuah array menjadi kolom
Gambar 4.12 Efek “all-to-all” dari sebuah array
Pengolahan Paralel/KK021239