11. STRATEGI PARTISI DAN DIVIDE - PowerPoint PPT Presentation

About This Presentation
Title:

11. STRATEGI PARTISI DAN DIVIDE

Description:

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 – PowerPoint PPT presentation

Number of Views:221
Avg rating:3.0/5.0
Slides: 27
Provided by: vit60
Category:

less

Transcript and Presenter's Notes

Title: 11. STRATEGI PARTISI DAN DIVIDE


1
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
2
11.1.1 Strategi Partisi
Contoh - Menambah Sederetan Angka
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
3
Menggunakan send( ) s dan recv( ) s
  • Master
  • s n/m
    / number of numbers for slaves/
  • for (i 0, x 0 i lt m i, x x s)
  • send(numbersx, s, Pi) /
    send s numbers to slave /
  • sum 0
  • for (i 0 i lt m i)
    / wait for results from slaves /
  • recv(part_sum, PANY)
  • sum sum part_sum /
    accumulate partial sums /
  • Slave
  • recv(numbers, s, Pmaster) / receive
    s numbers from master /
  • part_sum 0
  • for (i 0 i lt s i)
    / add numbers /
  • part_sum part_sum numbersi
  • send(part_sum, Pmaster) / send
    sum to master /

Pengolahan Paralel/KK021239
4
Menggunakan rutin Broadcast/ Multicast
  • Master
  • s n/m
    / number of numbers for slaves /
  • bcast(numbers, s, Pslave_group) /
    send all numbers to slaves /
  • sum 0
  • for (i 0 i lt m i)
    / wait for results from slaves /
  • recv(part_sum, PANY)
  • sum sum part_sum
    / accumulate partial sums /
  • Slave
  • bcast(numbers, s, Pmaster) /
    receive all numbers from master/
  • start slave_number s
    / slave number obtained earlier /
  • end start s
  • part_sum 0
  • for (i start i lt end i)
    / add numbers /
  • part_sum part_sum numbersi
  • send(part_sum, Pmaster) /
    send sum to master /

Pengolahan Paralel/KK021239
5
Menggunakan rutin Scatter dan Reduce
  • Master
  • s n/m
    / number of numbers /
  • scatter(numbers,s,Pgroup,rootmaster)

  • / send numbers to slaves /
  • reduce_add(sum,s,Pgroup,rootmaster)

  • / results from slaves /
  • Slave
  • scatter(numbers,s,Pgroup,rootmaster)

  • / receive s numbers /
  • .
    / add numbers /
  • reduce_add(part_sum,s,Pgroup,rootmaster)

  • / send sum to master /

Pengolahan Paralel/KK021239
6
Analisis
  • Komputasi sekuensial membutuhkan n-1 penambahan
    dengan kompleksitas waktu O(n)
  • Paralel Dengan rutin send dan receive
  • Fase 1 - Komunikasi
  • tcomm1 m(tstartup (n/m)tdata)
  • Fase 2 - Komputasi
  • tcomp1 n/m - 1
  • Fase 3 - Komunikasi mengembalikan hasil parsial
    dengan rutin send/ recv
  • tcomm2 m(tstartup tdata)
  • Fase 4 - Komputasi Akumulasi akhir
  • tcomp2 m - 1
  • Jadi tp (tcomm1 tcomm2)
    (tcomp1 tcomp2)
  • 2mtstartup (n m)tdata m n/m -2 O(n
    m)
  • Waktu kompleksitas paralel lebih buruk dari
    sekuensial

Pengolahan Paralel/KK021239
7
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
  • int add(int s)
    / add list of numbers, s /
  • if (number(s) lt 2) return (n1 n2)
    / see explanation /
  • else
  • Divide (s, s1, s2)
    / divide s into two parts, s1 and s2 /
  • part_sum1 add(s1)
    /recursive calls to add sub lists /
  • part_sum2 add(s2)
  • return (part_sum1 part_sum2)

Pengolahan Paralel/KK021239
8
Pembagian masalah
Masalah Awal
Hasil akhir
Gambar 4.2 Konstruksi Pohon.
Pengolahan Paralel/KK021239
9
Deretan awal
Implementasi Paralel
Gambar 4.3 Membagi deretan ke dalam beberapa
bagian.
Pengolahan Paralel/KK021239
Pengolahan Paralel/KK021239
11/9/26
10
Jumlah Akhir
Gambar 4.3 Penjumlahan Parsial.
Pengolahan Paralel/KK021239
Pengolahan Paralel/KK021239
11/10/26
11
Kode Paralel
Misal dibuat ada 8 prosesor untuk menambah
sederetan angka.Proses P0

  • / division
    phase /
  • divide(s1, s1, s2)
    / divide s1 into two, s1
    and s2 /
  • send(s2, P4)
    / send one part to
    another process /
  • divide(s1, s1, s2)
  • send(s2, P2)
  • divide(s1, s1, s2)
  • send(s2, P1
  • part_sum s1
    / combining phase /
  • recv(part_sum1, P1)
  • part_sum part_sum part_sum1
  • recv(part_sum1, P2)
  • part_sum part_sum part_sum1
  • recv(part_sum1, P4)
  • part_sum part_sum part_sum1

Pengolahan Paralel/KK021239
Pengolahan Paralel/KK021239
11/11/26
12
Kode yang serupa digunakan untuk proses-proses
lainnya.
Kode untuk proses P4 Proses P4
  • recv(s1, P0) /
    division phase /
  • divide(s1, s1, s2)
  • send(s2, P6)
  • divide(s1, s1, s2)
  • send(s2, P5)
  • part_sum s1 / combining
    phase /
  • recv(part_sum1, P5)
  • part_sum part_sum part_sum1
  • recv(part_sum1, P6)
  • part_sum part_sum part_sum1
  • send(part_sum, P0)

Pengolahan Paralel/KK021239
Pengolahan Paralel/KK021239
11/12/26
13
Analisis
  • Diasumsikan n adalah pangkat dari 2. Waktu set up
    komunikasi, tstartup tidak diperhitungkan.
  • Komunikasi
  • Fase Pembagian
  • Fase Penggabungan
  • Total waktu komunikasi
  • Komputasi
  • Total waktu eksekusi paralel

Pengolahan Paralel/KK021239
Pengolahan Paralel/KK021239
11/13/26
14
Gambar 4.5 Bagian dari pohon pencarian
Pengolahan Paralel/KK021239
Pengolahan Paralel/KK021239
11/14/26
15
11.1.3 Divide Conquer M-ary
  • Tugas (task) dibagi ke dalam lebih dari 2 bagian
    setiap tahapannya.
  • Contoh Tugas dibagi menjadi 4 bagian. Definisi
    rekursif sekuensialnya
  • int add(int s)
    / add list of numbers, s /
  • if (number(s) lt 4) return(n1 n2 n3
    n4)
  • else
  • Divide (s,s1,s2,s3,s4)
    / divide s into s1,s2,s3,s4/
  • part_sum1 add(s1)
    /recursive calls to add sublists /
  • part_sum2 add(s2)
  • part_sum3 add(s3)
  • part_sum4 add(s4)
  • return (part_sum1 part_sum2
    part_sum3 part_sum4)

Pengolahan Paralel/KK021239
Pengolahan Paralel/KK021239
11/15/26
16
Gambar 4.6 Pohon kuarternair (quadtree)
Pengolahan Paralel/KK021239
Pengolahan Paralel/KK021239
11/16/26
17
Gambar 4.7 Membagi sebuah citra
Daerah citra
Pembagian pertama ke dalam 4 bagian
Pembagian kedua
Pengolahan Paralel/KK021239
Pengolahan Paralel/KK021239
11/17/26
18
11.2 Contoh Divide Conquer
  • 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
Pengolahan Paralel/KK021239
11/18/26
19
Bucket
Angka yang belum disortir
Merge List
Angka yang disortir
Gambar 4.8 Bucket sort
Pengolahan Paralel/KK021239
Pengolahan Paralel/KK021239
11/19/26
20
Waktu Sekuensial
  • 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
Pengolahan Paralel/KK021239
11/20/26
21
Bucket
Angka yang belum disortir
p prosesor
Merge List
Angka yang disortir
Gambar 4.9 Satu versi Paralel dari Bucket sort
Pengolahan Paralel/KK021239
Pengolahan Paralel/KK021239
11/21/26
22
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
11/22/26
23
Bucket besar
n/m angka
Angka yang belum disortir
p prosesor
Bucket kecil
Bucket kecil dikosongkan
Merge List
Angka yang disortir
Gambar 4.10 Versi Paralel dari Bucket sort
Pengolahan Paralel/KK021239
Pengolahan Paralel/KK021239
11/23/26
24
Analisis
  • Fase 1 - Komputasi dan komunikasi (membagi angka)
  • tcomp1 n tcomm1 tstartup tdatan
  • Fase 2 - Komputasi (sortir ke bucket kecil)
  • tcomp2 n/p
  • Fase 3 - Komunikasi (kirim ke bucket besar)
  • Jika seluruh komunikasi tumpang tindih
  • tcomm3 (p - 1)(tstartup (n/p2)tdata)
  • Fase 4 - Komputasi (sortir bucket besar)
  • tcomp4 (n/p)log(n/p)
  • Jadi tp tstartup tdatan n/p (p -
    1)(tstartup (n/p2)tdata) (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
Pengolahan Paralel/KK021239
11/24/26
25
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
Pengolahan Paralel/KK021239
11/25/26
26
Rutin all-to-all sebenarnya mengubah baris
sebuah array menjadi kolom
Gambar 4.12 Efek all-to-all dari sebuah array
Pengolahan Paralel/KK021239
Pengolahan Paralel/KK021239
11/26/26
Write a Comment
User Comments (0)
About PowerShow.com