Upload
soicon-karo
View
101
Download
0
Embed Size (px)
Citation preview
MULTITHREADED ALGORITHMS
TRƯỜNG ĐẠI HỌC SƯ PHẠM HÀ NỘIKHOA CÔNG NGHỆ THÔNG TIN
Lê Chí ChungVũ Đình Thuấn
Bùi Đắc TúK25 – 2015
Phân tích và thiết kế thuật toán 1
Nội dung
2
Ý tưởng
Cơ sở của xử lí đa luồng
Minh họa thuật toán
Phân tích và thiết kế thuật toán
Bài toán Fibonaci (TT 1)
Thuật toán 1:• Int Fib(n)• Begin
If N = 0 then return 1;If N = 1 then return 1;If N >1 then Begin
x = Fib(n-1);y = Fib(n-2);return x+y;
End;• end;
3Phân tích và thiết kế thuật toán
Mô hình xử lí tuần tự
4Phân tích và thiết kế thuật toán
Bài toán Fibonaci (TT 2)
• Int Fib(n)• Begin
F = F1 = F2 = 1;For i := 2 to n do
Begin F = F1+F2;F1 = F2;F2 = F;
End;Return F;
• end;
5Phân tích và thiết kế thuật toán
Bài toán Fibonaci (TT 3)
• P-FIB(n)• if n ≤ 1 return n• else x = spawn P-FIB(n – 1)• y = P-FIB(n – 2)• sync• return x + y
6Phân tích và thiết kế thuật toán
Mô hình xử lí song song
7Phân tích và thiết kế thuật toán
Đánh giá
• T1 là thời gian thực hiện thuật toán theo phương pháp tuần tự ( work)
• T∞ : thời gian thực hiện thuật toán theo phương pháp song song (span)
• Tp : thời gian thực hiện thuật toán trên một bộ xử lí P
TP T1/P TP
8Phân tích và thiết kế thuật toán
Mô hình đánh giá
9Phân tích và thiết kế thuật toán
Multithreaded matrix multiplication
10
SQUARE-MATRIX-MULTIPLY nhân hai ma trận A và B cỡ nxn, kết quả đưa vào ma trận C nxn
Multithreaded matrix multiplication
11
Multithreaded matrix multiplication
12
Như vậy thời gian song song của P-MATRIX-MULTIPLY-RECURSIVE
Multithreaded merge sort
13
MERGE-SORT’ sắp xếp các mảng con A[p..r]. Sau khi hai chương trình con đệ quy trong dòng 3 và 4 đã hoàn thành, được đảm bảo bởi tuyên bố đồng bộ trong dòng 5, MERGE-SORT’ gọi đến thủ tục MERGE
Multithreaded merge sort
14
Bởi vì MERGE là tuần tự, cả work và span của nó là Θ(n). Như vậy, sự tái phát sau đặc trưng cho work MS1' và spancủa MERGE-SORT’ trên n các yếu tố
Như vậy thời gian song song của MERGE-SORT’ là / =
Multithreaded merge sort
15
Ý tưởng sáp nhập đa luồng của hai mảng con đã sắp xếp T[p1..r1] và T[p2..r2] vào mảng con A[p3..r3].
Multithreaded merge sort
16
Đầu tiên tìm các yếu tố giữa x = T[q1] của
mảng con T[p1..r1] , với q1=.
Mọi phần tử trong T[p1.. q1-1] là không lớn hơn
x, và mọi phần tử trong T[q1+1.. r1] là không nhỏ
hơn x. Sau đó sử dụng TT tìm kiếm nhị phân để tìm
chỉ số q2 trong mảng con T[p2..r2] để các mảng
con sẽ vẫn được sắp xếp nếu chúng ta chèn x
giữa T[q2-1] và T[q2]
Multithreaded merge sort
17
Tiếp theo chúng ta trộn các subarrays gốc T[p1..r1]
và T[p2..r2]vào A[p3..r3] như sau:
1. Đặt q3 = p3 + (q1 -p1) +(q2 - p2).
2. Copy x vào A[q3]
3. Đệ quy sáp nhập T[p1.. q1-1] và T[p2.. q2-1] và
đặt kết quả vào mảng con A[p3.. q3-1] .
4. Đệ quy sáp nhập T[q1+1.. r1] và T[q2.. r2] và đặt
kết quả vào mảng con A[q3+1.. r3].
Multithreaded merge sort
18
Multithreaded merge sort
19
Thời gian xử lý song song của P-MERGE là
/ =
=
=
Multithreaded merge sort
20
Xét một thủ tục sáp nhập đa luồng song song độc
đáo, chúng ta có thể kết hợp nó vào một sắp xếp
trộn đa luồng. P-MERGE-SORT(A, p, r, B, s) sắp
xếp các yếu tố trong A[p .. r] và lưu trữ chúng trong
B[s .. s+r-p].
Multithreaded merge sort
21
Multithreaded merge sort
22
Thời gian xử lý song song của P-MERGE-SORT là
23
Nhóm 5 trân trọng cảm ơn thầy và các bạn đã lắng nghe!
Phân tích và thiết kế thuật toán