Pokok Bahasan 5 Algoritma Pemrosesan Paralel Matakuliah : H0352/Pemrosesan Paralel Tahun : 2005 Versi : versi/01 Pokok Bahasan 5 Algoritma Pemrosesan Paralel
Learning Outcomes Pada akhir pertemuan ini diharapkan mahasiswa akan dapat: menggunakan konsep kerja algoritma dalam pemrosesan paralel menunjukkan beberapa algoritma paralel sederhana menggunakan teori graph.
Bagan pembuatan algoritma Graph, flowchart, atau diagram yang merupakan ide dasar untuk memecahkan problem. Problem Konsep / gambaran Kumpulan statemen yang dapat mewakili konsep/gambaran yang dibuat. Contoh statemen tsb adalah: Spawn(<processor names>) adalah statemen untuk mengaktipkan prosesor yang dipakai. for all <processor list> do <statement list> endfor if . . . then . . . else . . . endif while . . . endwhile Pseudocode SUM (EREW PRAM) Initial condition: List of n >= 1 elements stored in A[0 . . . . . (n-1)] Final condition: Sum of elements stored in A[0] Gobal variables: n, A[0 . . . . . (n-1_], j begin spawn(P0, P1, P2, . . . P((n/2)-1) for all Pi where 0 i [n/2]-1 do for j 0 to [log p] – 1 do if i modulo 2j = 0 and 2i + 2j < n then A[2i] A[2i] + A[2i + 2j] endif endfor end
Abstract Machine Models Ada beberapa model untuk abstract machine models, sebagai contoh: PRAM : Parallel Random Access Machine BSP : Bulk Synchronous Parallel PPM : Phase Parallel Model (Dalam kuliah ini hanya PRAM yang akan dibahas)
Interconnection network Arsitektur PRAM Global memory Interconnection network P2 Privat memory P1 Pp Control
Arsitektur PRAM Komunikasi pada PRAM
Algoritma Model PRAM Teorema 2.1: P-Processor dengan komunikasi CRCW-PIORITY dapat disimulasikan menggunakan p-processor EREW dengan kompleksitas bertambah O(log p). P1 P2 P3 P4 P5 6 2 9 3 7 M3 6 M7 9 (3,1) (3,2) (7,3) (3,4) (7,5) (3,1) (3,2) (3,4) (7,3) (7,5) 1 0 1 0 0 T S sort
Algoritma Model PRAM Aktifasi prosesor Active processor Waktu, O(log p) Untuk megaktipkan (menghidupkan) prosesor dalam model PRAM diperlukan O(log p). Aktifasi prosesor
Algoritma Model PRAM Penjumlah Sederetan Angka Proses ini disebut Juga dengan Reduksi Paralel a1a2 a3 a4 . . an P0 P1 P2 P3 Angka yang akan di jumlah Proses penjumlahan oleh prosesor Konsep / gambaran:
Algoritma Model PRAM Penjumlah Sederetan Angka SUM (EREW PRAM) Pseudocode: SUM (EREW PRAM) Initial condition: List of n >= 1 elements stored in A[0 . . . . . (n-1)] Final condition: Sum of elements stored in A[0] Gobal variables: n, A[0 . . . . . (n-1_], j begin spawn(P0, P1, P2, . . . P((n/2)-1) for all Pi where 0 i [n/2]-1 do for j 0 to [log n] – 1 do if i modulo 2j = 0 and 2i + 2j < n then A[2i] A[2i] + A[2i + 2j] endif endfor end
Algoritma Model PRAM Penjumlah Sederetan Angka Operasional untuk n = 10: 4 3 8 2 9 1 5 6 41 17 15 32 7 10 P0 P1 P2 P3 P4
Algoritma Model PRAM Penjumlah Sederetan Angka begin spawn(P0, P1, P2, . . . P((n/2)-1) for all Pi where 0 i [n/2]-1 do for j 0 to [log n] – 1 do if i modulo 2j = 0 and 2i + 2j < n then A[2i] A[2i] + A[2i + 2j] endif endfor end Penjumlah Sederetan Angka Operasional untuk n = 10: j i i mod 2j =0 2i + 2j <10 Pi operasi 1 2 3 4 0/1 0 1/1 0 2/1 0 3/1 0 4/1 0 0+1=1 2+1=3 4+1=5 6+1=7 8+1=9 P0 P1 P2 P3 P4 A[0] A[0]+A[1] A[2] A[2]+A[3] A[4] A[4]+A[5] A[6] A[6]+A[7] A[8] A[8]+A[9] 0/2 0 1/2 1 2/2 0 3/2 1 4/2 0 x 0+2=2 2+2=4 4+2=6 8+2=10 16+2=18 A[0] A[0]+A[2] idle A[4] A[4]+A[6] 0/4 0 1/4 1 2/4 2 3/4 3 4/4 0 0+4=4 2+4=6 4+4=8 8+4=12 A[0] A[0]+A[4]
Algoritma Model PRAM Penjumlah Kumulatip Sederetan Angka Konsep / gambaran: 4 3 8 2 9 1 5 6 7 15 17 26 27 32 38 41 22 20 12 14 34 11 10 A[0] A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] A[9]
Algoritma Model PRAM Penjumlah Kumulatip Sederetan Angka Pseudocode: PREFIX.SUMS (CREW PRAM) Initial condition: List of n >= 1 elements stored in A[0 . . . . . (n-1)] Final condition: Each element A[i] contains A[0] A[1] . . A[i] Gobal variables: n, A[0 . . . . . (n-1)], j begin spawn(P1, P2, . . . P(n-1) for all Pi where 1 i n-1 do for j 0 to [log n] – 1 do if i - 2j 0 then A[i] A[i] + A[i - 2j] endif endfor end
Algoritma Model PRAM Rangking dalam List 1 2 4 3 8 7 6 5 9 2 4 3 8 7 6 5 9 Konsep / bagan:
Algoritma Model PRAM Rangking dalam List LIST.RANKING (CREW PRAM) Pseudocode: LIST.RANKING (CREW PRAM) Initial condition: Values in array next represent a linked list Final condition: Values in array position contain original distance of each element from end of list Gobal variables: n, position[0 . . . . . (n-1)], next[0 . . . . (n-1)], j begin spawn(P0, P1, P2, . . . Pn-1) for all Pi where 0 i n -1 do if next[i] = i then position[i] 0 else position[i] 1 endif for j 1 to log n do position[i] position[i] + position[ next[i]] next[i] next[next[i]] endfor end
Algoritma Model PRAM Searching dengan DFS A B C D E F G H
Algoritma Model PRAM Searching dengan DFS 8 E F G H A B C D 1 (D, B) (E, G) (E, H) (E, B) (A, C) (F, C) (B, D) (B, E) (G, E) (H, E) (B, A) (C, F) (C, A) 7 5 4 3 2 6 8 E F G H A B C D Posisi = (n +1) - label node B Label = 7 n = jumlah node B = 9 – 7 = 2 D = 9 – 6 = 3 E = 9 – 5 = 4 G = 9 – 4 = 5 H = 9 – 3 = 6 C = 9 – 2 = 7 F = 9 – 1 = 8 Searching dengan DFS
Algoritma Model PRAM Penggabungan Akan dilakukan penggabungan dua set bilangan yang urut, sehingga hasil gabungan juga urut. A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] sorted 13 17 19 23 1 5 7 9 B[1] B[4] B[6] B[8] B[9] B[12] B[16] sorted 12 21 22 24 2 4 8 11 A[9] A[11] A[13] A[14] A[16]
? Algoritma Model PRAM Penggabungan Ambil contoh A[7] = 19 dimana posisinya? Penggabungan A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] sorted 13 17 19 23 1 5 7 9 ? B[1] B[4] B[6] B[8] B[9] B[12] B[16] sorted 12 21 22 24 2 4 8 11 A[9] A[11] A[13] A[14] A[16]
Algoritma Model PRAM Penggabungan Ambil contoh A[7] = 19 dimana posisinya? Penggabungan Menggunakan BST (Binary Search Tree) A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] sorted 13 17 19 23 1 5 7 9 B[1] B[4] B[6] B[8] B[9] B[12] B[16] sorted 12 21 22 24 2 4 8 11 A[9] A[11] A[13] A[14] A[16]
11 < 19 Algoritma Model PRAM Penggabungan Ambil contoh A[7] = 19 dimana posisinya? Penggabungan Menggunakan BST (Binary Search Tree) A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] sorted 13 17 19 23 1 5 7 9 11 < 19 B[1] B[4] B[6] B[8] B[9] B[12] B[16] sorted 12 21 22 24 2 4 8 11 A[9] A[11] A[13] A[14] A[16]
11 < 19 Algoritma Model PRAM Penggabungan Ambil contoh A[7] = 19 dimana posisinya? Penggabungan Menggunakan BST (Binary Search Tree) A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] sorted 13 17 19 23 1 5 7 9 11 < 19 B[1] B[4] B[6] B[8] B[9] B[12] B[16] sorted 12 21 22 24 2 4 8 11 A[9] A[11] A[13] A[14] A[16]
21 > 19 Algoritma Model PRAM Penggabungan Ambil contoh A[7] = 19 dimana posisinya? Penggabungan Menggunakan BST (Binary Search Tree) A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] sorted 13 17 19 23 1 5 7 9 21 > 19 B[1] B[4] B[6] B[8] B[9] B[12] B[16] sorted 12 21 22 24 2 4 8 11 A[9] A[11] A[13] A[14] A[16]
21 > 19 Algoritma Model PRAM Penggabungan Ambil contoh A[7] = 19 dimana posisinya? Penggabungan Menggunakan BST (Binary Search Tree) A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] sorted 13 17 19 23 1 5 7 9 21 > 19 B[1] B[4] B[6] B[8] B[9] B[12] B[16] sorted 12 21 22 24 2 4 8 11 A[9] A[11] A[13] A[14] A[16]
12 < 19 Algoritma Model PRAM Penggabungan Index A[7] = 13 Ambil contoh A[7] = 19 dimana posisinya? Penggabungan Menggunakan BST (Binary Search Tree) A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] sorted 13 17 19 23 1 5 7 9 12 < 19 B[1] B[4] B[6] B[8] B[9] B[12] B[16] sorted 12 21 22 24 2 4 8 11 A[9] A[11] A[13] A[14] A[16] Index A[7] = 13
12 < 19 Algoritma Model PRAM Penggabungan Posisi A[7]: Ambil contoh A[7] = 19 dimana posisinya? Penggabungan Menggunakan BST (Binary Search Tree) A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] sorted 13 17 19 23 1 5 7 9 12 < 19 19 B[1] B[4] B[6] B[8] B[9] B[12] B[16] Posisi A[7]: 13 +7 - 8 = 12 sorted 12 21 22 24 2 4 8 11 A[9] A[11] A[13] A[14] A[16] Index A[7] = 13
Kompleksitas waktu: O(n log n) Algoritma Model PRAM Penggabungan A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] sorted 13 17 19 23 1 5 7 9 sorted 7 8 9 11 1 2 4 5 21 22 23 24 12 13 17 19 B[1] B[4] B[6] B[8] B[9] B[12] B[16] sorted 12 21 22 24 2 4 8 11 A[9] A[11] A[13] A[14] A[16] Kompleksitas waktu: O(n log n)
Komunikasi
Patern Binomial tree digunakan untuk hypercube broadcasting Q S X Y W Z Binomial Tree Patern Binomial tree digunakan untuk hypercube broadcasting
Johnsson and Ho algoritma Hypercube Broadcast Johnsson and Ho algoritma B C A A B C C A B
Dua prosesor parallel depth search Searching pada Graph 8 9 7 2 1 4 3 5 6 Dua prosesor parallel depth search 8 9 7 2 1 4 3 5 6 (1) (2) (3) (4) (5) (6) (7) Graph yang di search
Searching pada Graph Dua prosesor parallel breadth-depth search 8 9 7 2 1 4 3 5 6 Dua prosesor parallel breadth-depth search 8 9 7 2 1 4 3 5 6 (1) (2) (3) (4) (5) (6) Graph yang di search
Searching pada Graph Dua prosesor parallel breadth first search 8 9 7 2 1 4 3 5 6 8 9 7 2 1 4 3 5 6 (1) (2) (3) (4) (5) (6) Graph yang di search
Shorted Path Algorithm C B 4 1 2 3 Distance Queue A 0 B B 4 C C 1 D E A 0 A B C A 0 D B 3 B D 7 A 0 C B 4 D A 0 E B 3 D D 6 E 8 B 3 E B 3 E 7 5 7 6 8
Minimum Cost Spanning Tree Algorithm - Solin 4 1 2 3 E A D C B F H G I 7 5 6
Minimum Cost Spanning Tree Algorithm - Kruskal 7 3 E A B D C 6 1 9 8 2 4
RESUME Telah dibahas: Konsep pembuatan algoritma secara umum, arsitektur PRAM, dan algoritma untuk model PRAM Contoh-contoh algoritma untuk PRAM: Rangking dalam list Searching dengan DFS Penggabungan Beberapa algoritma paralel graph standard: Hypercube Broadcast: (1) Binomial tree, (2) Jhonsson and Ho Searching graph: depth search, breadth-depth search, breadth-first search. Shorted Path Minimum cost spanning tree: (1) Solin, (2) Kruskal.