Nh đ 5.1 (định đề tính toán song song): Lớp các bài toán

Một phần của tài liệu Bài giảng xử lý song song (Trang 50)

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 (adsbygoogle = window.adsbygoogle || []).push({});

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); (adsbygoogle = window.adsbygoogle || []).push({});

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 P0P4

• tstartup+ (n/4)tdata P0P2; P4P6 (adsbygoogle = window.adsbygoogle || []).push({});

• tstartup+ (n/8)tdata P0P1; P2P3; P4P5; P6P7

b. Trong giaiđo n ghép k t h p có nh ng s traođ i d li u:

• tstartup+ (n/8)tdata P0P1; P2P3; P4P5; P6P7

• tstartup+ (n/4)tdata P0P2; P4P6

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

Một phần của tài liệu Bài giảng xử lý song song (Trang 50)