Phân phối các véc tơ đồng thời

Một phần của tài liệu (LUẬN văn THẠC sĩ) 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 luận văn ths toán học 60 46 35 (Trang 77 - 82)

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

2.2.3.3 Phâ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 tố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.

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 tố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 tồn bộ thuật tố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.

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 tố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 (LUẬN văn THẠC sĩ) 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 luận văn ths toán học 60 46 35 (Trang 77 - 82)