1 / 26

11. STRATEGI PARTISI DAN DIVIDE & CONQUER

Pengolahan Paralel/KK021239. 11/ 1 /26. 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.

kisha
Télécharger la présentation

11. STRATEGI PARTISI DAN DIVIDE & CONQUER

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Pengolahan Paralel/KK021239 11/1/26 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. Pengolahan Paralel/KK021239 11/2/26 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. Pengolahan Paralel/KK021239 11/3/26 Menggunakan send( ) s dan recv( ) s Master s = n/m; /* number of numbers for slaves*/ for (i = 0, x = 0; i < m; i++, x = x + s) send(&numbers[x], s, Pi); /* send s numbers to slave */ sum = 0; for (i = 0; i < 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 < s; i++) /* add numbers */ part_sum = part_sum + numbers[i]; send(&part_sum, Pmaster); /* send sum to master */ Pengolahan Paralel/KK021239

  4. Pengolahan Paralel/KK021239 11/4/26 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 < 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 < end; i++) /* add numbers */ part_sum = part_sum + numbers[i]; send(&part_sum, Pmaster); /* send sum to master */ Pengolahan Paralel/KK021239

  5. Pengolahan Paralel/KK021239 11/5/26 Menggunakan rutin Scatter dan Reduce Master s = n/m; /* number of numbers */ scatter(numbers,&s,Pgroup,root=master); /* send numbers to slaves */ reduce_add(&sum,&s,Pgroup,root=master); /* results from slaves */ Slave scatter(numbers,&s,Pgroup,root=master); /* receive s numbers */ . /* add numbers */ reduce_add(&part_sum,&s,Pgroup,root=master); /* send sum to master */ Pengolahan Paralel/KK021239

  6. Pengolahan Paralel/KK021239 11/6/26 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. Pengolahan Paralel/KK021239 11/7/26 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) =< 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. Pengolahan Paralel/KK021239 11/8/26 Masalah Awal Pembagian masalah Hasil akhir Gambar 4.2 Konstruksi Pohon. Pengolahan Paralel/KK021239

  9. Implementasi Paralel Deretan awal 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 untuk proses P4 Proses P4 Kode yang serupa digunakan untuk proses-proses lainnya. 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) =< 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. Angka yang belum disortir Bucket 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. Angka yang belum disortir Bucket 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. n/m angka Angka yang belum disortir Bucket besar 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

More Related