Phõn phối vộc tơ

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 59)

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

2.2.3Phõn phối vộc tơ

Giả sử sau khi thực hiện phõn phối ma trận cho P bộ xử lý, sử dụng thuật toỏn phõn phối ma trận thưa của Mondrian. Tiếp theo ta phõn phối hai vộc tơ v và u cho P bộ xử lý sao cho số cực đại gửi và nhận của cỏc bộ xử lý trong bước (1) và (3) là nhỏ nhất. Bởi vỡ truyền thụng của u và v trong bước (1) và (3) tương ứng thao tỏc theo cỏch tương tự nhau, nờn thuật toỏn để cực tiểu húa truyền thụng cho v cú thể được sử dụng để cực tiểu húa

truyền thụng cho u. Do đú ở đõy chỉ đề cập tới phõn phối của v. Ở đõy khụng quan tõm số phần tử khỏc khụng trong mỗi cột, mà chỉ quan tõm tới những bộ xử lý mà sở hữu cỏc

phần tử khỏc khụng này. Và chỳng ta đưa ma trận A cấp m n về ma trận A~ cấp P n với

1 ~sc

a nếu bộ xử lý s sở hứu ớt nhất một phần tử khỏc khụng trong cột c, và a~sc 0 khụng sở hữu phần tử khỏc khụng nào trong cột c. Ma trận A~ được gọi là ma trận truyền thụng.

Chỳng ta cú một số định nghĩa như sau: 1 1 0 0 p n sc c s nz a      là số phần tử khỏc khụng của A~.      1 0 ~ p s sc a c k là số bộ xử lý trờn cột c. B(s), 0 s P, là tập tất cả cỏc cột c mà k c 2 và bộ xử lý s xử lý cột c.

C(s) là tập cỏc cột từ B(s) được sở hữu bởi bộ xử lý s.

) (s

C là tập cỏc cột từ B(s) khụng được sở hữu bởi bộ xử lý s.

   1. ) ( ) (     s C c c k s Ns . ) ( ) ( ) ( ) (s B s C s C s Nr    0 max s P ( ). Nsend   Ns s 0 max s P ( ). Nreceive   Nr s

Một bộ xử lý gọi là „trờn cột c‟ hay „xử lý cột c‟, nếu a~sc 1. Nếu bộ xử lý „sở hữu dữ liệu‟, cú nghĩa là dữ liệu được lưu trữ trong bộ nhớ của nú và khụng lưu trữ trong bất kỳ bộ xử lý nào khỏc. Nếu ta núi rằng bộ xử lý s sở hữu cột c, tức là bộ xử lý s sở hữu thành

phần vộc tơ vc. Ns(s) là số lần bộ xử lý s gửi một thành phần vộc tơ tới một bộ xử lý khỏc.

Nr(s) là số lần bộ xử lý s nhận một thành phần vộc tơ từ bộ xử lý khỏc. Chỳng ta giả sử

rằng một bộ xử lý chỉ cú thể sở hữu một cột nếu nú xử lý trờn cột đú hoặc cột đú là rỗng. Ta cú C(s)C(s) và C(s)C(s)B(s). Bõy giờ ta cần phõn mỗi thành phần vộc tơ

vj của v cho một bộ xử lý sao cho max(Nsend, Nreceive)là nhỏ nhất.

0 1 2 3 4 5 6 7 8 9 0 0 0 0 1 1 1 0 0 0 1 1 1 0 0 1 1 1 1 0 1 0 2 1 1 0 0 1 0 1 1 0 0 3 1 0 0 0 1 1 1 0 1 1 k 3 1 0 2 4 3 3 1 2 2

Từ bảng trờn cho cỏc B(s) như sau:

B(0) = {3, 4, 5, 9} B(1) = {0, 3, 4, 5, 6, 8} B(2) = {0, 4, 6} B(3) = {0, 4, 5, 6, 8, 9}

Giả thiết cú một phõn phối như sau:

C(0) = {3, 5} C(1) = {0, 4, 8} C(2) = {6} C(3) = {9}.

Bộ xử lý 1 sở hữu cỏc cột 0, 4 và 8. Thỡ Ns(1) = k(0) - 1 + k(4) – 1 + k(8) - 1 = 2 + 3 + 1

= 6 và Nr(1) = |B(1)| - |C(1)| = 6 – 3 = 3.

Tương tự ta cú cỏc giỏ trị Ns(s) và Nr(s) như sau: Ns(0) = 3, Nr(0) = 2; Ns(1) = 6, Nr(1) = 3; Ns(2) = 2,Nr(2) = 2; Ns(3) = 1, Nr(3) = 5. Do đú Nsend = 6 và Nreceive = 5.

Chi phớ của phõn phối này là max(Nsend, Nreceive)=6. Ta thấy cỏc cột 1, 2 và 7 khụng phải phõn bố vỡ cú ớt hơn hai bộ xử lý trờn chỳng. Nếu chỳng ta cho cột 1 và 7 sở hữu bởi hai bộ xử lý và cột 2 bởi bộ xử lý bất kỳ, chỳng ta sẽ khụng làm tăng

max(Nsend, Nreceive).

2.2.3.1 Cận dƣới địa phƣơng cho số truyền thụng cực đại

Dưới đõy là một số cận dưới cho giỏ trị max(Nsend, Nreceive) ở trờn. Cận dưới trực quan nhất cho giỏ trị max(Nsend, Nreceive)trong mỗi phõn phối vộc tơ như sau:

Định lý 2.4 (Cận dưới 1): Cho một phõn phối của ma trận A trờn P bộ xử lý, khi đú max(Nsend, Nreceive) V/P. (2.15) Trong đú 1 1 1 0 0 0 max( ( ) 1, 0) ( ) ( ), p p n c s s V k c Ns s Nr s      

    và cũng được gọi là dung lượng truyền thụng.

Giả sử rằng cỏc bộ xử lý cú thể chỉ sở hữu cỏc cột mà nú xử lý, hoặc cỏc cột rỗng. Từ bõy giờ chỳng ta sẽ cố gắng để đạt được cận dưới tốt hơn cho max(Nsend, Nreceive), cú thể cận dưới này khụng thể đạt được trong nhiều trường hợp. Nếu chỳng ta lấy nhiều thụng tin về phõn phối ma trận của A để xột, thờm thụng tin cho V, chỳng ta cú thể cú cận dưới tốt hơn. Cải tiến trước tiờn của cận dưới 1 đạt được bằng việc xem xột thực tế rằng khụng phải tất cả cỏc bộ xử lý phải truyền thụng bởi vỡ chỳng cú thể sở hữu toàn bộ cột (theo nghĩa tất cả cỏc phần tử khỏc khụng của cột đú chỉ thuộc vào một bộ xử lý). Giả sử cho trường họp bộ xử lý s khi đú B(s) là rỗng.

Định lý 2.5 (Cận dưới 2): Ma trận A đó được phõn phối trờn P bộ xử lý, cú Pa bộ xử lý kớch hoạt, cú ớt nhất một cột được phõn cho nhiều hơn hai bộ xử lý, tức là B(s) 0,thỡ cận dưới tốt hơn cho giỏ trị max(Nsend, Nreceive)cho bởi: (adsbygoogle = window.adsbygoogle || []).push({});

V/P . Nreceive)

max(Nsend,  a . (2.16)

Chứng minh:

Theo định nghĩa, cho cỏc bộ xử lý khụng kớch hoạt trờn s là bằng 0, tức là| ( ) | 0C s.

Vỡ vậy Nr(s)= 0. Do đú tổng số cuộc nhận được phõn phối giữa Pa bộ xử lý với |B(s)|> 0. Mà số cuộc nhận bằng V, bởi vậy NreceiveV/Pa, và max(Nsend,Nreceive)V/Pa..

Cỏc cận dưới tiếp theo dưới đõy khụng phải là một cải tiến của cận dưới 1 hay cận dưới 2, nú cú thể cao hơn hoặc thấp hơn V /Pa hay V /P phụ thuộc vào phõn phối ma trận. Nếu giả sử rằng tất cả cỏc cột được phõn phối đều khắp trờn cỏc bộ xử lý. Để cực

tiểu max(Ns(s),Nr(s)) của bộ xử lý s mà khụng xem xột tới cỏc bộ xử lý khỏc, chỳng ta phải đạt được Ns(s) = Nr(s), bởi vỡ khi Ns(s) đạt được bằng việc di chuyển một cột tới

một bộ xử lý khỏc, Nr(s) lại tăng lờn và ngược lại. Mục tiờu cõn bằng Ns(s) và Nr(s) trong khi chỳng là nhỏ nhất. Với Nr(s) khụng quan trọng xem bao nhiờu bộ xử lý cựng trờn cỏc cột mà xử lý bởi s: mỗi cột sở hữu giảm Nr(s) đi 1. Vỡ vậy để giảm Nr(s) tốt nhất là sở

hữu nhiều cột cú thể, khụng liờn quan tới số bộ xử lý trờn nú. Tuy nhiờn với Ns(s) thỡ vấn

Thuật toỏn 2.6 Xõy dựng cận dưới địa phương của bộ xử lý s

đề lại là bao nhiờu bộ xử lý trờn cỏc cột mà s sở hữu: và nú càng ớt thỡ càng tốt. Vỡ vậy, khi chỳng ta khởi tạo với tất cả cỏc cột được sở hữu bởi cỏc bộ xử lý khỏc (chẳng hạn,

Nr(s)=|B(s)|, C(s) và C(s)B(s)), tốt nhất cho s trước tiờn sở hữu tất cả cỏc cột

trong C(s)với hai bộ xử lý, rồi tất cả cỏc cột trong C(s)với ba bộ xử lý,…, cho tới khi

Ns(s)=Nr(s). Trong hầu hết cỏc trường hợp thường khụng đạt được dấu bằng mà chỉ tăng

Input : B(s)

Output: C(s) và biờn dưới địa phương local(s)

C(s) := ;

while not marked

chọn jC(s) với k(j) nhỏ nhất j s C s C( ): ( ) ; if Ns(s)Nr(s)then C(s) := C(s); else local(s) := max(Ns(s), Nr(s)); marked

Ns(s) nhiều nhất cú thể nhưng vẫn thoả món Ns(s) Nr(s). Giỏ trị đạt được theo cỏch này sẽ cho ta giỏ trị max(Ns(s),Nr(s)) và được gọi là local(s). Ta cú thuật toỏn 2.6.

Ta thấy rằng tập cỏc cột C(s) đạt được luụn thoả món hai tớnh chất cơ bản sau: (i) k(c1)k c2 , với mọi c1C(s)và c2C s,

(ii) Nr(s)kC,min 1Ns(s)Nr(s),

với kC,min mincC(s)k(c). Nếu chỳng ta định nghĩa local max0splocal(s)thỡ chỳng ta đạt được cận dưới tiếp theo dưới đõy.

Định lý 2.6 (Cận dưới 3): Với mỗi phõn phối vộc tơ thỡ cận dưới cho giỏ trị

max(Nsend, Nreceive)như sau:

. )

,

max(Nsend Nreceivelocal (2.17)

Chứng minh:

Để chứng minh điều này chỳng ta sẽ chỉ ra rằng max(Ns(s),Nr(s))local(s) với mọi (adsbygoogle = window.adsbygoogle || []).push({});

s. Trước tiờn chỳng ta cú cỏc định nghĩa:

) ( ),

(s C C s B

B  , với C được xõy dựng như trong thuật toỏn 2.6. Ns(s) Ns(C) Nr(s) Nr(C) Ns(C),Nr(C) max N(C)

Sắp xếp cỏc cột của B khụng giảm theo số bộ xử lý trờn cột k(j). Đỏnh số lại cho cỏc cột của B sao cho k(0)k(1)...kB 1.và C 0,1,2,...C 1.. Cho C0,...,B 1 là tập cỏc cột tuỳ ý. Chỳng ta sẽ biến đổi C thành C sao cho khụng tăng N(C). Và chỳng

Chỳng ta sẽ chuyển tập cỏc cột tuỳ ý C thành tập được sắp C0,...,C1 với cựng kớch thước.

Thuật toỏn 2.7 Chuyển tập C thành C0,...,C1

(Chứng minh tại mỗi thời điểm C  C jC1. Với i thoả món iC1. Vỡ vậy ) ( ) (i k j k j

i   , là vỡ cỏc cột được sắp theo số cỏc bộ xử lý). Vậy Ns(C) Ns(C)và ).

( )

(C Nr C

Nr    Như là một kết quả N C N C.

Bõy giờ chỳng ta sắp xếp tập C, chỳng ta cú thể phải bỏ hoặc thờm vào cỏc cột từ/tới Ccho tới khi C  C. Cho mCm C,và chỳng ta cú cỏc trường hợp sau:

1. mm:C0,...,m1 và C0,...,m1. Vỡ vậy CC.

2. mm:C0,...,m1 và C0,...,m1,...,m1.Cho CC. Chỳng ta sẽ bỏ đi cỏc cột từ m1 tới m khỏi C Như một kết quả C0,...,m1C. Cho Cold

new

C là cỏc tập trước và sau khi bỏ một cột. Nếu mmthỡ Ns Cold  Nr Cold . Hơn nữa, NrCnewNr Cold 1 Ns(Cold )và NsCnew Ns Cold . Vỡ vậy

C newNs Cold N(Cold).

N     

3. mm:C0,...,m1,...,m1 và C0,...,m1. Cho CC. Chỳng ta sẽ chuyển C thành C bằng việc thờm vào cỏc cột mtới m-1 vào C . Như là một kết quả C0,...,m1C. Theo cỏch xõy dựng Ns(C) Nr(C). Bởi vỡ mm,

C C: ; for i:= 0 to C 1 if iCthen chọn jCmà j lớn nhất   C j  i C: \  ;

1 ) ( ) ( )

(Cnew Nr Cnew Nr Cold 

NsNs(Cold )Nr(Cold ). Vỡ vậy

CnewNr Cold N Cold .

N     

Bõy giờ chỳng ta chỉ ra rằng mỗi tập Ccú thể chuyển thành tập C mà khụng làm

tăng N C. Vỡ vậy C là tối ưu, vỡ nếu khụng sẽ phải cú một tập C~ màN C~  N C , cỏi này cũng cú thể được chuyển thành C mà khụng làm tăng N C~ . Điều này là mõu thuẫn.

Như vậy chỳng ta đó chứng minh được rằng cận dưới địa phương là cực tiểu, nếu một tập cỏc cột thoả món điều kiện xỏc định thỡ chi phớ của nú là cực tiểu. Điều kiện này sẽ được duy trỡ trong suốt thuật toỏn dựa trờn cận dưới địa phương, thảo luận ở phần tiếp theo.

Bổ đề 2.1: Nếu Clà tập thoả món (i) và (ii), thỡ N C N ,C với C là tập cỏc cột được (adsbygoogle = window.adsbygoogle || []).push({});

tạo bởi thuật toỏn 2.6, N(C) = max(Ns(C), Nr(C)).

Chứng minh:

Chuyển tập Cthành tập C với C0,1,...,C1sử dụng thuật toỏn 2.7.

Ở đõy k i   k j với mọi hoỏn vị cột trong thuật toỏn 2.7. (Vỡ, nếu k i   k j , thỡ sẽ cú cột iCvới k(i) thấp hơn một cột trong C, bởi vậy khụng thoả món (i), dẫn tới mõu thuẫn. Trong chứng minh phần trước đó chỉ ra rằng k i k j  thỡ khụng thể. Vậy

   

k ik j . Bởi vỡ k i   k j với mỗi hoỏn vị, Ns(C)=Ns(C), Nr(C)=Nr(C), suy ra N(C)=N(C) và C thoả món (i) và (ii).

Bõy giờ chỳng ta cú tập được sắp C, thoả món (i) và (ii), cú ba khả năng: 1. mm: C C N C  N C  N C .

2. mm: C = {0,…,m - 1} và C0,...,m1,...,m1 . Với C thoả món ,min

( ) C 1 ( ) ( ),

món Ns C  Ns C( )kC,min 1 và Nr C  Nr C( ) 1. Do đú ,min

( ) ( ) C 1 ( ) ( )

Ns C Ns Ck  Nr CNr C C khụng thoả món (ii), dẫn tới mõu thuẫn. 3. mm: C0,...,m1,...,m1và C0,...,m1 . Với C thoả món ( ) ( ) ( 1) 1 Ns C Ns Ck m  vàNr C(  ) Nr C( ) 1. ( ) ( 1) 1 ( ) ( ) ( ) Ns C k m  Ns CNr CNr C Ns C( )Nr C( )k m(  1) 1. Lưu ý rằng kC,min k m( 1), bởi vỡ cột m 1 C. Do đú, ,min ( ) ( ) C 1

Ns C  Nr C k   Ckhụng thoả món (ii), dẫn tới mõu thuẫn. Điều này cú nghĩa rằng N C  N C  N C( ).

Với cỏc ma trận phõn phối tốt cú thể đạt local V /Pa, bởi vỡ cỏc giỏ trị địa phương của cỏc bộ xử lý xem xột cỏc cột chi phớ rẻ (chẳng hạn cỏc cột cú ớt bộ xử lý) để sở hữu chỳng và trỏnh cỏc cột chi phớ đắt hơn. Vỡ vậy cận dưới tốt nhất là:

Định lý 2.7 (Cận dưới 4): Với mỗi phõn phối vộc tơ thỡ cận dưới cho giỏ trị max(Nsend, Nreceive)như sau:

 / , ).

max( )

,

max(Nsend NreceiveV Pa local (2.18) Trong đú V là dung lượng truyền thụng, Pa là số bộ xử lý kớch hoạt khi phõn phối dữ liệu của ma trận.

Đõy là cận tốt để xỏc định cận dưới địa phương tổng quỏt, thuật toỏn 2.8. Sự khỏc nhau giữa cận dưới 3 và cận dưới 4 là cận dưới địa phương tổng quỏt cho phộp cỏc cột đó sở hữu, tức là |C(s)| > 0. Như một kết quả, trước khi phõn phối cỏc cột chưa được sở hữu

Ns(s) > 0 và Nr(s) < |B(s)|. Bõy giờ cận dưới tổng quỏt localgen(s) cho bộ xử lý s đạt được

bằng việc phõn trước tiờn cỏc cột chưa sở hữu c từ C(s) vào C(s) với k(c)=2, rồi k(c)=3,… Nhưng thoả món Ns(s) Nr(s). Thuật toỏn cho cận dưới tổng quỏt như sau:

Thuật toỏn 2.8 Tạo cận dưới địa phương tổng quỏt cho bộ xử lý s

Định lý 2.8 (Cận dưới 5): Cho tập cỏc cột đó sở hữu C(s) với mỗi bộ xử lý s cận dưới

tổng quỏt cho giỏ trị max(Nsend, Nreceive)sẽ là:

 ,  max / , ,

max Nsend NreceiveV Pa localgen (2.19) Trong đú localgen max0splocalgen(s).

Tớnh chất (i) sẽ cho cận dưới địa phương tổng quỏt, ngoại trừ c1c2 khụng nờn là cỏc cột đó sở hữu. Tớnh chất (ii) thỡ khụng thay đổi. Chứng minh phần này tương tự như chứng minh của cận dưới 3.

Vớ dự 2.5: Xột ma trận A~ trong vớ dụ 1, và tớnh cỏc cận dưới. Trước tiờn tớnh tổng số nhận và gửi của vớ dụ 1 cho ta ( ) 3 ( ) 12.

0 3 0   sNs ssNr s V P = 4 nờn V P/ 3. Bởi Input: C(t), 0 t P đó được phõn (adsbygoogle = window.adsbygoogle || []).push({});

Output: C(s) với cận dưới địa phương tổng quỏt

( ) ( ) \ t s ( )

C sB s  C t ;

while not marked

chọn jC(s) với k(j) nhỏ nhất  s j C s C( )  ; if Ns(s)Nr(s)then ) ( ) (s C s C   ; else )) ( ), ( max( ) (s Ns s Nr s localgen  ; marked

vỡ tất cả cỏc bộ xử lý khụng cú tập B(s) nào rỗng nờn chỳng ta cú Pa = 4, do đú

V /Pa3.

Để tớnh cận dưới địa phương local chỳng ta phải tớnh bốn giỏ trị local(s) của bốn bộ

xử lý. Sử dụng thuật toỏn 2.6: Tớnh C(0), trước tiờn cú Nr(0) = |B(0)| = 4, C(0) = , C(0)3, 4,5,9, chọn j = 3, Ns = k(3) – 1 = 1, Nr = 4 - 1 = 3, Ns <Nr => C(0) = {3}. chọn j = 9, Ns = 2, Nr = 2 => Kết thỳc C(0) = {3, 9}. Tương tự cho cỏc bộ xử lý khỏc, ta cú: C(0) ={3,9}Ns(0) = 2, Nr(0) = 2 local(0) = 2 C(1) ={3,8}Ns(1) = 2, Nr(1) = 4 local(1) = 4 C(2) ={0}Ns(0) = 2, Nr(2) = 2 local(2) = 2 C(3) ={8,9}Ns(0) = 2, Nr(3) = 2 local(3) = 4

Bởi vậy local = 4. Giỏ trị này cho ta cận dưới 4: maxV/Pa,local4. Lưu ý cỏc tập

C(s) cú thể chứa cỏc cột khỏc nhau, nhưng Ns(s) và Nr(s) là xỏc định.

Sử dụng thuật toỏn 2.8 để tớnh cận dưới địa phương tổng quỏt localgen trong trường hợp C(0) = {3}, C(1) = {8}, C(2) = {4} và C(3) = {9}, chỳng ta cú thể cú được:

Tớnh cho C(1), khởi tạo C(1) = {8}, Ns(1) = k(1) – 1 = 0, Nr(1) = |B(1)| - |C(1)| = 5,

  (1) (1) (0, 2,3) 0,5, 6 CBC  ta cú: chọn j = 0, Ns(1) = 2, Nr(1) = 2 => dừng, C(1) = {8, 0}. Tương tự cho cỏc bộ xử lý khỏc, ta cú: C(0) ={3}Ns(0) = 1, Nr(0) = 3 local(0) = 3

C(1) ={8,0}Ns(1) = 3, Nr(1) = 4 local(1) = 4 C(2) ={4}Ns(0) = 3, Nr(2) = 2 local(2) = 3 C(3) ={9,5}Ns(0) = 3, Nr(3) = 4 local(3) = 4.

Vậy localgen = 4 và cận dưới 5 bằng 4.

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 59)