giải được trong th i gian T(n)O(1)b i mô hình PRAM bằng lớp tất cả các bài toán giải được trong không gian T(n)O(1) b i mô hình RAM (máy tính tuần tự với bộ nhớ ngẫu nhiên) nếu T(n)logn.
Từ định đề nàysuy ra: PRAMcó thể giải được những bài toánNP-đầy đ trongth igianđa th c.
See also: pages 45-48 Parallel computing by Michael J. Quinn
301
1.Kh i các l nhsong song:
ParbeginvàParend (CobeginvàCoend):Giả sử các lệnhS1, S2,…Snđược thực hiện trênntiến trình riêng biệt
5.5 CỄC C U TRÚC L NH SONG SONG Parbegin Parbegin S1; S2; ... Sn; Parend Cobegin S1; S2; ... Sn; Coend 302 2. C u trúc forall (parfor)
Nhiều khi một số tiến trình (câu lệnh) tương tự nhau cần phải bắt đầu thực hiện và cùng lặp lại một số lần. Điều này có thể thực hiện được bằng cấu trúc forall
5.5 CỄC C U TRÚC L NH SONG SONG Forall(i=0;i<n; i++){ Forall(i=0;i<n; i++){ S1; S2; ... Sn; } Parend For(i=0;i<n;i++){ S1; S2; ... Sn; } In parallel Hoặc 303
1. Thu t toán s p x p theo h ng
BƠi toán: chomảnga[n]các số nguyên.Hãy sắp xếp tăng dần các phần tử c a mảng.
ụ t ng thu t toán: Trongcách sắp xếp này, số những số nhỏ hơn một số đã chọn sẽ được đếm.Số đếm được sẽ xác định vị trí c a phần tử đã được chọntrong danhsách cần sắp xếp.Giả sử cónsố được lưu giữtrongmảnga[n]
và kết quảsau khisắp xếp làb[n].
Thu t toán tu n t :
5.6 CỄC THU T TOỄN S P X P SONG SONG
for(i = 0; i < n; i++){ x = o; for(j = 0; i < n; j++) if(a[i] > a[j]) x++; b[x] = a[i]; } Độ ph c tạp O(n2) 304
Thu t toán song song-S d ng n b x lỦ
Giả sửtacónbộ xử lý.Mỗi bộ xử lý được cấp một sốtrong
dãy sốchotrước và nó phải tìm vị trí c a số đótrongdãy được sắp xếp.
5.6 CỄC THU T TOỄN S P X P SONG SONG
for(i=0; i<n; i++){ // n bộ xử lý thực hiện song song
x = o;
for(j=0; i<n; j++)
if(a[i]>a[j]) x++; // đếm số phần tử nhỏ hơn
b[x] = a[i]; // Sao sang bảng được sắp xếp
}
Nhận xét:Tất cảnbộ xử lý thực hiệnsong songnên thuật toán cóđộ phức tạp làO(n)(tuyến tính).
(Xemtài liệu Thuật toánsong song-Sử dụngn2bộ xử lý)
305
2. Thu t toán s p x p so sánh vƠ đ i ch
BƠi toán: cho mảng a[n] các số nguyên. Hãy sắp xếp tăng
dần các phần tử c a mảng.
ụ t ng thu t toán: so sánh hai phần tử liền kề nhau. Nếu
chưa theo th tự thì đổi chổ nhau. Quá trình lặp lại cho đến khi nào không còn cặp nào không thỏa mãn thì dừng.
Thu t toán tu n t :
5.6 CỄC THU T TOỄN S P X P SONG SONG
for(i=n-1; i > 0; i--){ for(j=0; j < i; i++){ k = j + 1; if(a[j] > a[k]){ temp = a[j]; a[j] = a[k]; a[k] = temp; } } } 306
2. Thu t toán s p x p so sánh vƠ đ i chThu t toán song song: Thu t toán song song:
ụ t ng thu t toán
• Dùng n tiến trình kết hợp theo nguyên lý hình ống để sắp xếp mảng a[n]
• Hệ thống được chia thành 2 pha: pha chẵn và pha lẻ
-Pha chẵn: gồm các tiến trình được đánh số chẵn so sánh
với những tiến trình tiếp theo (số lẻ), nếu nó giữ phần tử lớp hơn thì trao đổi dữ liệu với tiến trình đó.
-Pha l : các tiến trình được đánh số lẻ hoạt động tương tự như trên
307
Ví d : n=8 vƠ a = (4 , 2 , 7 , 8 , 5 , 1 , 3 , 6)
5.6 CỄC THU T TOỄN S P X P SONG SONG
Pha/TT P0 P1 P2 P3 P4 P5 P6 P7 0 4 2 7 8 5 1 3 6 1 2 4 7 8 1 5 3 6 2 2 4 7 1 8 3 5 6 3 2 4 1 7 3 8 5 6 4 2 1 4 3 7 5 8 6 5 1 2 3 4 5 7 6 8 6 1 2 3 4 5 6 7 8 7 1 2 3 4 5 6 7 8 S p x p theo nguyên lỦ hình ng Đ i ch Không đ i ch 308
Thu t toán song song:
Giả sử A lưu dữ liệu tiến trình lẻ và B lưu dữ liệu tiến trình chẵn Thuật toán song song theo hình ống được mô tả theo MPI như sau:
5.6 CỄC THU T TOỄN S P X P SONG SONG
Pha chẵn
Pi, i = 0, 2, ..., n-2 Pi, i = 1, 3, ..., n-3
recv(&A, Pi+1); send(&A, Pi-1); send(&B, Pi+1); recv(&B, Pi-1); if (A>B) B=A ; if (A>B) A=B ;
Pha l
Pi, i = 1, 3, ..., n-3 Pi, i = 0, 2, ..., n-2
send (&A, Pi+1); recv (&A, Pi-1); recv (&B, Pi+1); send(&B, Pi-1); if (A>B) A=B ; if (A>B) B=A ;
309
K t h p 2 pha ta đ c thu t toán song song:5.6 CỄC THU T TOỄN S P X P SONG SONG 5.6 CỄC THU T TOỄN S P X P SONG SONG
Pi, i = 1, 3, ..., n-3 Pi, i = 0, 2, ..., n-2
send(&A,Pi-1); recv(&A,Pi+1); recv(&B,Pi-1); send(&B,Pi-1);
if (A>B) A=B ; if (A>B) B=A ;
if (i<=n-3){ if (i=>2){
send(&A,Pi+1); recv(&A,Pi-1); recv(&B,Pi+1); send(&B,Pi-1);
if (A>B) A=B; if (A>B) B=A;
} }
Nhận xét:thuật toán cóđộ phức tạp làO(n).
310
3. Thu t toán s p x p MergeSort
BƠi toán: cho mảng a[n] các số nguyên. Hãy sắp xếp tăng
dần các phần tử c a mảng.
ụ t ng thu t toán (dùng nguyên tắc chia để trị)
• Chia mảng a thành 2 phần
• Mỗi phần lại chia đôi tiếp cho đến khi mỗi phần nhỏ chỉ có 1 phần tử
• Từng cặp được ghép lại theo th tự sắp xếp
Ví d
M ng a = (4, 2, 7, 8, 5, 1, 3, 6)
5.6 CỄC THU T TOỄN S P X P SONG SONG
311
5.6 CỄC THU T TOỄN S P X P SONG SONG
63 3 1 5 8 7 2 4 8 7 2 4 5 1 3 6 2 4 7 8 5 1 3 6 4 2 7 8 5 1 3 6 4 2 7 8 1 5 3 6 8 7 4 2 1 3 5 6 8 7 6 5 4 3 2 1 Chia đôi danh sach Ghép k t h p 312
5.6 CỄC THU T TOỄN S P X P SONG SONG
Chia danhsách thành từng cặp và phân côngchocácBXL
(4, 2, 7, 8, 5, 1, 3, 6) P0 P0 P4 P0 P2 P4 P6 P0 P1 P2 P3 P4 P5 P6 P7 P0 P2 P4 P6 P0 P4 P0 Nh n xét:
313
5.6 CỄC THU T TOỄN S P X P SONG SONG
Xác định th igiantruyền thông: tcomm
a. Trong giaiđo n phơnchiad li u
Truy n d li u Truy n thông c aBXL
• tstartup+ (n/2)tdata P0P4
• tstartup+ (n/4)tdata P0P2; P4P6
• tstartup+ (n/8)tdata P0P1; P2P3; P4P5; P6P7
b. Trong giaiđo n ghép k t h p có nh ng s traođ i d li u:
• tstartup+ (n/8)tdata P0P1; P2P3; P4P5; P6P7
• tstartup+ (n/4)tdata P0P2; P4P6
Gi s cóp BXLthì c hai giaiđo n s th c hi n đ clog pb c.
Vậychiphí truyền thông c a cảhai giaiđoạn là:
tcomm= 2(tstartup+ (n/2)tdata+ tstartup+ (n/4)tdata+tstartup+ (n/8)tdata…)
= 2(log p)tstartup+ 2ntdata
Nh c l i:
+ tstartuplà th igian cần thiết để gửi những thông điệp
không phải là dữ liệu.Nóbaogồm cả th igianđể đóng gói thông điệp nơi gửi và th igianm gói nơi nhận.Để đơn giản chúngtagiả thiết th igiannày làhằng số.
+ tdatalà th igiancần thiết để chuyển một mục dữ liệu
(data item)từ nơi gửi tới nơi nhận, được giả thiết là hàng
số vànlà số mục dữ liệu đượctraođổitronghệ thống.
314• Việc tính toán chỉ thực hiện việc ghép các danh sách con • Việc tính toán chỉ thực hiện việc ghép các danh sách con
để tạo danh sách lớn hơn.
• Việc ghép 2 danh sách con được thực hiện bằng cách duyệt lần lượt từ đầu hai danh sách để tìm phần tử nhỏ hơn đưa vào danh sách mới.
• Để ghép 2 danh sách con có n phần tử thì cần nhiều nhất
2n-1 bước so sánh. c. Xác đ nh th i gian tính toán: tcomp Nh n xét 315 Xác định th igiantính toán Tcomp=1 P0, P2, P4, P6 Tcomp=3 P0, P2 Tcomp=7 P0 T ng quát,
Tcomp= 1 + 3 + ... + (2i - 1), i = 1, ..., logn