Phõn phối cỏc vộc tơ đồng thời

Một phần của tài liệu thiết kế nhân ma trận thưa với véctơ trong tính toán song song và ứng dụng (Trang 77 - 82)

2.2 Nhõn ma trận thưa với vộc tơ song song

2.2.3.3Phõn phối cỏc vộc tơ đồng thời

Ở đõy xột cho trường hợp ma trận vuụng, cỏc thành phần của hai vộc tơ ui và vi được phõn cho cựng bộ xử lý. Ta núi phõn phối của hai vộc tơ u và v là đồng thời.

a) Thuật toỏn biờn địa phƣơng

Mục tiờu ở đõy là cực tiểu hoỏ max(Nsendr,Nreceiver)+max(Nsendc,Nreceivec), ở

đõy „r‟ và „c‟ cú nghĩa chỉ hàng và cột tương ứng. Và trong thuật toỏn này cũng cú một số thay đổi. Thay vỡ phõn một cột cho một bộ xử lý thỡ chỳng ta sẽ phõn một cặp gồm hàng i và cột i cho một bộ xử lý và ta gọi là cặp rowcol. Thay vỡ giỏ trị L(s) thỡ sẽ cần cỏc giỏ trị

1. Chỳng ta muốn tỡm bộ xử lý cú biờn địa phương cao nhất, nhưng bộ xử lý cú Lr(s)

cao nhất và bộ xử lý cú Lc(s) cao nhất cú thể khụng cựng một bộ xử lý.

2. Chỳng ta muốn tỡm cặp rowcol cú số bộ xử lý trờn nú là ớt nhất. Nhưng số bộ xử lý trong một cặp rowcol là khụng xỏc định.

3. Với hai tiờu chớ Lsendr = Nsr(s) hay Lsendc = Nsc(s).

Cho vấn đề 1, cú thể sử dụng giỏ trị địa phương trung bỡnh của cỏc giỏ trị địa phương hàng và cột. Tuy nhiờn cú thể sử dụng giỏ trị cao nhất trong Lr(s) và Lc(s). Vấn đề

thứ hai, xỏc định số bộ xử lý trong cặp rowcol là kr(c) + kc(c). Và vẫn đề thứ ba cú thể bỏ

qua vỡ giải phỏp giảm nhẹ tiờu chớ, chỉ ỏp dụng cả hai tiờu chớ với một bộ xử lý thỡ như vậy cú thể cho kết quả khụng tốt. Một số định nghĩa như sau:

cs

a

~ = 1 nếu bộ xử lý s sở hữu ớt nhất một phần tử khỏc khụng trong hàng c, và a~cs= 0 nếu s khụng sở hữu phần tử khỏc khụng nào trong hàng c.

    1 0 ~ ) ( Ps cs r c a k ) (s Br là tập cỏc hàng c mà cBr(s):kr(c)2và s xử lý c. B(s) là tập tất cả cỏc cặp rowcol c mà kr c 2kc c 2và s xử lý trờn hàng c hoặc cột c.

C(s) tập cỏc cặp rowcol hiện tại được sở hữu bởi s từ B(s).

( )

C s tập cỏc cặp từ B(s) hiện tại chưa được s sở hữu.

  ( ) ( ) (( ( ) 1) 1) ( ( ) 0) r r cs r cs c C s Ns s k c if a or k c if a           ( ) ( ) (1 1) (0 0) r cs cs c C s Nr s a a         . 0 max ( ( )) r s P r Nsend    Ns s 0 max ( ( )) r s P r Nreceive    Nr s   ( ) ( ) (( ( ) 1) 1) ( ( ) 0) Lr r r cs r cs c C s Ls s k c if a or k c if a         ( ) ( ) ( ) . r r Lr Lr sB sC s

( ) max( ( ), ( )).

r r r

L sLs s Lr s

CLr(s) là tập cỏc hàng mà s sẽ đạt cận dưới địa phương tổng quỏt Lr(s).

Định nghĩa của kc(s), Bc(s), Nsc(s), Nrc(s), Nsendc, Nreceivec, Lsc(s), Lrc(s), Lc(s) và CLc(s) cũng được định nghĩa tương tự chỉ thay „r‟ bằng „c‟, „hàng‟ bởi „cột‟ và asc bằng

ˆsc

a trong cỏc định nghĩa trờn.

Thuật toỏn 2.10 Thuật toỏn phõn phối vộc tơ đồng thời (LAvu)

Input: Ma trận thưa A cấpn n phõn cho P bộ xử lý và hai vộc tơ v và u độ dài n Output: Mỗi thành phần của vộc tơ v và u được phõn cho một trong P bộ xử lý mà vi

và ui thuộc cựng một bộ xử lý, i:0in.

Pha 1:

1. Mỗi bộ sử lý s: khởi tạo CLr(s), CLc(s) và B(s) và cho C s . 2. Lần lượt cho x = r và x =c. (adsbygoogle = window.adsbygoogle || []).push({});

3. Chọn bộ xử lý mà Nsr(s) > Lsr(s) và Nsc(s) > Lsc(s) với giỏ trị Lx(s) là lớn nhất.

Gọi bộ xử lý này là p.

4. Chọn cặp rowcol chưa được sở hữu cB(p)mà kr(c) + kc(c) nhỏ nhất, và thờm c vào C(p).

5. Với tất cả cỏc bộ xử lý trờn hàng c hoặc cột c, khởi tạo lại CLr(s), CLc(s).

6. Lặp lại bước 2 -> 5: Nsr(s) = Lsr(s) và Nsc(s) > Lsc(s) với mỗi bộ xử lý s.

Pha 2:

1. Với mỗi cặp rowcol=c chưa được sở hữu: kr(c) + kc(c) 1, thờm c vào C(p),

với p là bộ xử lý trờn c cú max(Nsr(p),Nrr(p)) + max(Nsc(p),Nrc(p)) nhỏ nhất

sau khi phõn c cho p.

2. Với mỗi cột chưa được sở hữu c mà kr(c) + kc(c) = 0, chốn c vào C(p), ở đõy p

Thuật toỏn dựa trờn biờn địa phương phõn phối cỏc vộc tơ đồng thời được chỉ ra trong thuật toỏn 2.10. Trong bước 5 của pha 1, cả CLr(p) và CLc(p) phải được khởi tạo lại,

bởi vỡ nú khụng xỏc định, hàng và cột c thực tế trờn hai tập khỏc nhau, bởi vỡ c được chọn từ tập B(p).

b) Cài đặt

Giống như thuật toỏn biờn địa phương khụng đồng thời (một chiều), chỳng ta sẽ sử dụng cỏc biến needed và avail trong thuật toỏn biờn địa phương đồng thời (hai chiều):

Cr(s,k) là số hàng cC s( )với kr(c) = k.

( , )

r

C s k là số hàng chưa được sở hữu cC s( )với kr(c) = k. neededr(s,k) là số hàng cCLr( )s với kr(c) = k.

availr(s,k) = Cr(s,k) + C s kr( , ).

Phần cài đặt thuật toỏn biờn địa phương cho trường hợp đồng thời cũng tương tự như trong trường hợp khụng đồng thời chỉ khỏc ở bước 5 của pha 1. Bước 5 sẽ được chia làm hai phần: theo hướng hàng và theo hướng cột. Ở đõy sẽ đưa ra cho trường hợp theo hướng hàng. Để cú trường hợp theo hướng cột chỉ việc thay „r‟ bởi „c‟, „hàng‟ bởi „cột‟.

Cấu trỳc dữ liệu như sau: Cấu trỳc cột c: owner(c), ownerindex(c) procindex(c)[ ] k(c, kr(c), kc(c) Cấu trỳc bộ xử lý s: Nsr(s), Nrr(s), Nsc(s), Nrc(s), Nvector(s) Lsr(s), Lrr(s), Lsc(s), Lrc(s) B(s)[ ], nB(s), Bcount(s)

Cr(s)[ ], Cc(s)[ ], neededr(s)[ ], neededc(s)[ ], availr(s)[ ], availc(s)[ ] Với 1 0( ˆ ) P sc sc s

k  a a là số bộ xử lý khỏc nhau trờn hàng hay cột. procindex(c)[] là mảng cú độ dài k(c), Cr(s)[] và Cc(s)[] tương ứng với Cr(s,k) và Cc(s,k).

c) Đỏnh giỏ thuật toỏn Thời gian:

Pha 1:

Bước 1, giống như thuật toỏn LA, việc khởi tạo sẽ mất O(nz) thời gian. Bước 2, sẽ mất O(1) thời gian.

Bước 3, tương ứng với bước 2 thuật toỏn LA, sẽ mất O(nz + P2) thời gian.

Bước 4, độ dài tất cả cỏc mảng B(s)[] của tất cả cỏc bộ xử lý cộng lại dài nhất là 2nz, nờn bước này mất O(nz) thời gian.

Bước 5, như thảo luận ở phần trờn, mất O(nz . P) thời gian. Pha 2: giống như trong thuật toỏn LA, mất O(nz + P. logP) thời gian.

Như vậy thời gian cho toàn bộ thuật toỏn biờn địa phương cho trường hợp phõn phối đồng thời là O(nz . P) thời gian. (adsbygoogle = window.adsbygoogle || []).push({});

Bộ nhớ: Cỏc mảng procindex(c)[] và B(s)[] cả hai mất O(nz) bộ nhớ. Cỏc mảng Cr(s)[], Cc(s)[], neededr(s)[], neededc(s)[], availr(s)[], availc(s)[] mất O(P2). Như vậy toàn

Chƣơng 3 – KẾT QUẢ THỰC NGHIỆM

Chương này nhằm đưa ra một số kết quả khi chạy chương trỡnh nhõn ma trận thưa với vộc tơ song song từ một số bộ dữ liệu được lấy từ cỏc bộ sưu tập ma trận thưa trực tuyến [20], như Matrix Maket, Rutherford-Boeing, …, từ đú so sỏnh và đỏnh giỏ lại cỏc thuật toỏn đó trỡnh bày. Chương trỡnh cài đặt chỉ mới thực hiện nhõn ma trận thưa với vộc tơ song song, nhưng về sau chỳng ta cú thể sử dụng nú cho việc thiết kế và cài đặt cỏc bài toỏn giải cỏc hệ phương trỡnh tuyến tớnh và cỏc hệ phương trỡnh giỏ trị riờng, và mức cao hơn, giải cho hệ phi tuyến, hệ phương trỡnh vi phõn từng phần, và cỏc bài toỏn khỏc [18].

Một phần của tài liệu thiết kế nhân ma trận thưa với véctơ trong tính toán song song và ứng dụng (Trang 77 - 82)