1. Trang chủ
  2. » Công Nghệ Thông Tin

Parallel computing (c4)

50 111 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 50
Dung lượng 1,98 MB

Nội dung

TS Ngô Văn Thanh, Viện Vật lý Chuyên ngành : Cơng nghệ thơng tin http://iop.vast.ac.vn/~nvthanh/cours/parcomp/ Chương 4: Các thuật tốn song song 4.1 Mơ hình PRAM 4.2 Các thuật tốn song song nhân hai ma trận 4.3 Các thuật toán xếp song song 4.4 Tìm kiếm danh bạ 4.5 Các thuật toán song song đồ thị 4.5.1 Tìm đường ngắn 4.5.2 Tìm khung bé 4.6 Các thuật tốn song song tìm kiếm tổ hợp @2009, Ngô Văn Thanh - Viện Vật Lý 4.1 Mơ hình PRAM      PRAM: "Parallel random access machine" đưa Fortune Wyllie vào năm 1978 Mơ hình PRAM mơ hình thuộc hệ nhớ chia sẻ (shared memory) Mục đích: xây dựng mơ hình lý thuyết để diễn tả phân tích thuật tốn Dựa mơ hình này, đánh giá mức độ phức tạp tốn Mơ hình PRAM bao gồm:  Bộ điều khiển trung tâm (control unit)  Bộ nhớ dùng chung (global memory)  p processors P1, P2,… Pp  Mỗi processor có nhớ riêng (private memory) @2009, Ngô Văn Thanh - Viện Vật Lý        Các processor thực vòng đồng bộ: đọc – tính tốn - ghi (readcompute-write) Trong bước tính processor hoạt động (active processor) đọc liệu từ nhớ riêng, xử lý liệu ghi kết trở lại lên nhớ riêng Tất active processor cần phải thực câu lệnh phần liệu khác Mơ hình PRAM gọi máy tính có nhớ dùng chung xử lý dòng lệnh nhiều phần liệu: SM SIMD (shared memory, single instruction, multiple data) Các thuật tốn hoạt động độc lập với thực vùng nhớ mà phép truy nhập thời điểm Atomic: cơng việc gọi atomic thực xong hồn tồn, khơng thực Các kiểu điều khiển trình đọc viết PRAM  Exclusive read (ER) – đọc: có processor phép đọc tất vùng nhớ dùng chung thời điểm  Exclusive write (EW) – ghi: có processor phép ghi lên tất vùng nhớ dùng chung thời điểm @2009, Ngô Văn Thanh - Viện Vật Lý   Concurrent read (CR) – đọc đồng thời: nhiều processor phép đọc vùng nhớ dùng chung thời điểm Concurrent write (CW) – ghi đồng thời: nhiều processor phép ghi đồng thời lên vùng nhớ dùng chung thời điểm Sự xung đột trình ghi liệu giải theo quy ước (policy): Common (thông thường): tất trình concurrent write ghi giá trị liệu Arbitrary (bất kỳ): giá trị ghi lại, bỏ qua giá trị khác Minimum (tối thiểu) : Chỉ processor có số bé phép ghi, giá trị khác bị loại bỏ Reduction (rút gọn): Tất giá trị rút gọn lại thành giá trị ghi lên nhớ Phép rút gọn giá trị phải thực hàm tổng (sum), tích (product), cực đại (maximum)…      Các lớp mơ hình PRAM: EREW PRAM: processor đọc, processor ghi ERCW PRAM: processor đọc, nhiều processor ghi CREW PRAM: nhiều processor đọc, processor ghi CRCW PRAM: nhiều processor đọc, nhiều processor ghi @2009, Ngô Văn Thanh - Viện Vật Lý Truy cập đa luồng mơ hình EREW PRAM     Tại thời điểm có processor phép ghi đọc liệu vùng nhớ chọn Thuật toán Broadcast_EREW: nhằm thực trình truy cập đồng thời nhiều processor vùng nhớ Giả thiết: địa vùng nhớ x, trình đọc song song thực processors  P1 đọc giá trị x, sau chuyển cho P2  P1 P2 chuyển tiếp cách đồng thời cho P3 P4  P1, P2, P3, P4 lại chuyển tiếp đồng thời đến P5, P6, P7, P8 Xét ví dụ p = processor  L[p] : mảng vùng nhớ dùng chung  P1 đọc giá trị x từ vùng nhớ riêng, sau ghi lên mảng L[1]  P1 đọc giá trị x từ L[1], ghi vào nhớ riêng đồng thời ghi lên L[2]… @2009, Ngô Văn Thanh - Viện Vật Lý  Thuật toán Broadcast_EREW: Algorithm Broadcast_EREW Processor P1 y (in P1’s private memory) x L[1]  y for i=0 to log (p – 1) forall Pj, where 2i +  j  2i+1 in parallel y (in Pj’s private memory)  L[j-2i] L[j]  y endfor endfor @2009, Ngô Văn Thanh - Viện Vật Lý Thuật tốn tính tổng (sum) Tính tổng phần tử mảng A[1 n]   Tính tổng n phần tử mảng mơ hình EREW  Giả thiết n số lũy thừa 2, ví dụ: 4, 8, 16, 32,…  Số processor cần sử dụng : Số vòng lặp : log n Algorithm Sum_EREW for i=1 to log n forall Pj, where  j  n/2 in parallel if (2j modulo 2i)=0 then A[2j]  A[2j] + A[2j-2i-1] endif endfor endfor  @2009, Ngô Văn Thanh - Viện Vật Lý    Bước 1: processor tính tổng hai phần tử mảng  Các kết ghi vào vị trí mảng: 2, 4, 6, Bước 2: processor P2 P4 thực phép tổng ghi lại kết vào A[4] A[8] Bước 3: processor P4 thực phép tổng ghi lại kết vào A[8] Hạn chế: có nhiều processor khơng làm việc sau thực xong phần cơng việc @2009, Ngơ Văn Thanh - Viện Vật Lý Tính tổng phần mảng n phần tử mơ hình EREW  Số processor cần sử dụng : p = n -  Tất processor hoạt động Algorithm AllSums_EREW for i=1 to log n forall Pj, where 2i-1 +  j  n in parallel A[j]  A [j] + A[j – 2i-1] endfor endfor  @2009, Ngô Văn Thanh - Viện Vật Lý Trộn hai dãy xếp theo kiểu chẵn lẻ @2009, Ngơ Văn Thanh - Viện Vật Lý 4.4 Tìm kiếm danh bạ @2009, Ngô Văn Thanh - Viện Vật Lý 4.5 Các thuật toán song song đồ thị Các định nghĩa:      Đồ thị vô hướng G(V, E):  V : tập hợp điểm hay đỉnh  E : tập hợp cạnh vô hướng  Cạnh (u, v): có nghĩa đỉnh u v nối với Đồ thị có hướng :  Các cạnh tập E cạnh có hướng hay mũi tên  Cạnh (u, v): có nghĩa có kết nối từ đỉnh u sang v Các đỉnh nằm hai đầu cạnh gọi kề Đường (path): đường từ đỉnh v sang u chuỗi Độ dài đường định nghĩa số cạnh đường @2009, Ngô Văn Thanh - Viện Vật Lý Nếu có đường từ u sang v u xem tới v  Một đường đơn tất đỉnh khơng trùng  Một đường có kiểu vòng tròn (đường kín) đỉnh đầu đỉnh cuối trùng  Một đồ thị khơng có đường kín gọi đồ thị khơng kín (đồ thị hở)  Vòng kín đơn đỉnh trung gian khơng trùng Đồ thị con:       Đồ thị (tree): đồ thị kết nối từ đồ thị hở Trọng số: số thực thể cho chi phí lại cạnh đồ thị Đồ thị có dạng G(V, E, w) Trọng số đồ thị tổng trọng số cạnh Trọng số đường tổng trọng số cạnh đường @2009, Ngơ Văn Thanh - Viện Vật Lý Biểu diễn đồ thị qua ma trận kề:   Xét đồ thị G(V, E ) có n đỉnh đánh số từ đến n Ma trận kề đồ thị định nghĩa dạng mảng A(ai,j) hai chiều n  n: cho trường hợp khác  Đối với đồ thị trọng số, ma trận kề có dạng: nếu i = j cho trường hợp khác  Kích thước không gian để lưu ma trận kề @2009, Ngô Văn Thanh - Viện Vật Lý Biểu diễn đồ thị qua chuỗi kề:    Xét đồ thị G(V, E ) có n đỉnh đánh số từ đến n Chuỗi kề đồ thị mảng n phần tử A[v], phần tử v  V chuỗi gồm đỉnh kề v Kích thước khơng gian để lưu chuỗi kề @2009, Ngơ Văn Thanh - Viện Vật Lý 4.5.2 Tìm khung bé (Prim's Algorithm)    Cây khung : đồ thị đồ thị G mà chứa tất đỉnh G Đối với đồ thị trọng số trọng số khung tổng trọng số đường đồ thị Cây khung bé (MST minimum spanning tree) đồ thị vơ hướng khung có trọng số bé @2009, Ngô Văn Thanh - Viện Vật Lý    Thuật toán Prim:  Chọn đỉnh G làm đỉnh ban đầu  Chọn đỉnh với chi phí đường thấp so với đỉnh ban đầu  Nối đỉnh vừa tìm vào khung  Lặp lại việc tìm kiếm tất đỉnh chọn Xét đồ thị trọng số G(V, E, w) với ma trận kề trọng số A(ai,j)  Sử dụng mảng VT đỉnh khung bé  Một mảng d [1 n] Tương ứng với đỉnh v (V – VT), d [v] trọng số cạnh có giá trị bé trọng số đỉnh v đỉnh lại VT Cụ thể:  Đỉnh r chọn lúc đầu gọi gốc khung: d [r] =  Tất đỉnh v (V – VT), d [v] = w(r, v) đường từ r đến v tồn d [v] =  đường từ r đến v không tồn  Trong q trình tính lặp, đỉnh u thêm vào mảng VT chi phí đường d[u] = min{d[v]|v (V - VT)} @2009, Ngô Văn Thanh - Viện Vật Lý      Chọn đỉnh b : VT = {b} Dựa vào ma trận trọng số, đưa mảng d[1, 0, 5, 1, , ] (d, b) = 1, (c, b) = (a, b) =1, (e, b) = , (f, b) =  Có hai giá trị trọng số bé tương ứng với đỉnh a d Chọn đỉnh d, VT = {b,d}, đưa mảng trọng số d[1, 0, 2, 1, 4, ] d[a] = trọng số (b, a) = 1, (a, d) =  d[b] = : gốc // không cần tính d[c] = : trọng số (c, b) = 5, (c, d) = d[d] = : khơng đổi d[e] = : trọng số (e, b) = , (e, d) = d[f] =  : trọng số (f, b) =  (f, d)=  Chọn đỉnh a d[a] = có chi phí thấp @2009, Ngơ Văn Thanh - Viện Vật Lý  Chọn đỉnh a; VT = {b,d,a}, đưa mảng trọng số d [1, 0, 2, 1, 4, 3] d[a] = : không đổi d[b] = : gốc // không cần tính d[c] = : trọng số (c, b) = 5, (c, d) = (c, a) = d[d] = : không đổi d[e] = : trọng số (e, b) = , (e, a) =  (e, d) = d[f] = : trọng số (f, b) = , (f, a) = (f, d)=   Cuối chọn đỉnh c đưa vào khung @2009, Ngô Văn Thanh - Viện Vật Lý  Chọn đỉnh c; VT = {b,d,a,c}, đưa mảng trọng số d [1, 0, 2, 1, 1, 3] d[a] = : không đổi d[b] = : gốc // khơng cần tính d[c] = : không đổi d[d] = : khơng đổi d[e] = : trọng số (e, b) = , (e, a) =  , (e, d) = 4, (e, c) = d[f] = : trọng số (f, b) = , (f, a) = (f, d)= , (f, c) =   Cuối chọn đỉnh e đưa vào khung, tất nhiên phần tử cuối f @2009, Ngô Văn Thanh - Viện Vật Lý Thuật giải Prim: procedure PRIM_MST(V, E, w, r) { VT = {r}; d[r] = 0; for all v (V - VT) if (cạnh (r, v) tồn_tại) d[v] = w(r, v); else d[v] = ; while VT  V { Tìm đỉnh u cho d[u] = min{d[v]|v (V - VT)}; VT = VT  {u}; for all v (V - VT) d[v] = min{d[v], w(u, v)}; } }  @2009, Ngô Văn Thanh - Viện Vật Lý  Tính song song cho thuật tốn Prim:  Giả thiết hệ có n đỉnh, chương trình song song thực p processors  Tập hợp đỉnh V chia thành tập gồm n/p phần tử       Mỗi tập gán để tính processor Mỗi processor Pi giữ tập di, di[u] = min{d[v]|v (V - VT)  Vi}; Sử dụng hàm reduction để tìm giá trị bé di[u], kết lưu P0 Processor P0 nhận đỉnh u tìm chèn vào mảng VT Sau sử dụng broadcast để gửi đỉnh u cho tất processor khác Mỗi processor phải lưu cột tương ứng ma trận trọng số @2009, Ngô Văn Thanh - Viện Vật Lý 4.5.1 Tìm đường ngắn (Dijkstra's Algorithm) Đường ngắn từ đỉnh đơn:    Xét đồ thị trọng số G(V, E, w) Đường ngắn từ đỉnh v  V đến tất đỉnh khác V đường có chi phí trọng số thấp Thuật toán Dijkstra: procedure DIJKSTRA_SP(V, E, w, s){ VT = {s}; // tập hợp đỉnh đường ngắn for all v (V - VT) if (cạnh(s, v) tồn tại) l[v] = w(s, v); else l[v] = ; // chi phi từ v đến s while VT  V { tìm đỉnh u cho l[u]= min{l[v]|v (V - VT)}; VT = VT  {u}; for all v (V - VT) l[v] = min{l[v], l[u] + w(u, v)}; } } @2009, Ngô Văn Thanh - Viện Vật Lý 4.6 Các thuật tốn song song tìm kiếm tổ hợp @2009, Ngô Văn Thanh - Viện Vật Lý ... forall Pi,j,k, where  i, j, k  n in parallel C[i,j,k]  A[i,k]*B[k,j] endfor /* Step */ for m = to log n forall Pi,j,k, where  i, j  n &  k  n/2 in parallel if (2k modulo 2m)=0 then C[i,j,2k]... forall Pi,j, where  i, j  n in parallel if A[i] > A[j] or (A[i] = A[j] and i > j) then C[i]  else C[i]  endif endfor /* Step */ forall Pi,1, where  i  n in parallel A[C[i] + 1]  A[i] endfor... sử dụng : Số vòng lặp : log n Algorithm Sum_EREW for i=1 to log n forall Pj, where  j  n/2 in parallel if (2j modulo 2i)=0 then A[2j]  A[2j] + A[2j-2i-1] endif endfor endfor  @2009, Ngô Văn

Ngày đăng: 21/02/2019, 23:22

TỪ KHÓA LIÊN QUAN

w