2.2 Nhân ma trận thưa với véc tơ song song
2.2.3 Phâ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 tố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 tồ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:
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 NreceiveV/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 tố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 tốn 2.6.
Ta thấy rằng tập các cột C(s) đạt được ln thoả mãn hai tính chất cơ bản sau: (i) k(c1)k c2 , với mọi c1C(s)và c2C s,
(ii) Nr(s)kC,min 1Ns(s)Nr(s),
với kC,min mincC(s)k(c). Nếu chúng ta định nghĩa local max0splocal(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 Nreceive local (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
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 C0,...,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 C0,...,C1 với cùng kích thước.
Thuật tốn 2.7 Chuyển tập C thành C0,...,C1
(Chứng minh tại mỗi thời điểm C C j C1. Với i thoả mãn i C1. 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 Ccho tới khi C C. Cho m C m C,và chúng ta có các trường hợp sau:
1. mm:C0,...,m1 và C0,...,m1. Vì vậy CC.
2. mm:C0,...,m1 và C0,...,m1,...,m1.Cho CC. Chúng ta sẽ bỏ đi các cột từ m1 tới m khỏi C Như một kết quả C0,...,m1C. Cho Coldvà
new
C là các tập trước và sau khi bỏ một cột. Nếu mmthì Ns Cold Nr Cold . Hơn nữa, NrCnewNr Cold 1 Ns(Cold )và NsCnew Ns Cold . Vì vậy
C new Ns Cold N(Cold).
N
3. mm:C0,...,m1,...,m1 và C0,...,m1. Cho CC. Chúng ta sẽ chuyển C thành C bằng việc thêm vào các cột mtới m-1 vào C . Như là một kết quả C0,...,m1C. Theo cách xây dựng Ns(C) Nr(C). Bởi vì mm,
C C: ; for i:= 0 to C 1 if iCthen chọn jCmà j lớn nhất C j i C: \ ;
1 ) ( ) ( )
(Cnew Nr Cnew Nr Cold
Ns và Ns(Cold )Nr(Cold ). Vì vậy
Cnew Nr Cold N Cold .
N
Bây giờ chúng ta chỉ ra rằng mỗi tập Ccó 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 tố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 Clà tập thoả mãn (i) và (ii), thì N C N ,C với C là tập các cột được
tạo bởi thuật toán 2.6, N(C) = max(Ns(C), Nr(C)).
Chứng minh:
Chuyển tập Cthành tập C với C0,1,...,C1sử dụng thuật toán 2.7.
Ở đây k i k j với mọi hốn vị cột trong thuật tốn 2.7. (Vì, nếu k i k j , thì sẽ có cột iCvớ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 i k 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à C0,...,m1,...,m1 . 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 C k Nr C Nr C C không thoả mãn (ii), dẫn tới mâu thuẫn. 3. mm: C0,...,m1,...,m1và C0,...,m1 . Với C thoả mãn ( ) ( ) ( 1) 1 Ns C Ns C k m vàNr C( ) Nr C( ) 1. ( ) ( 1) 1 ( ) ( ) ( ) Ns C k m Ns C Nr C Nr 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 Ckhô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 Nreceive V 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 Nreceive V Pa localgen (2.19) Trong đó localgen max0splocalgen(s).
Tính chất (i) sẽ cho cận dưới địa phương tổng quát, ngoại trừ c1 và c2 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
s Ns s s Nr s
V P = 4 nên V P/ 3. Bởi Input: C(t), 0 t P đã được phân
Output: C(s) với cận dưới địa phương tổng quát
( ) ( ) \ t s ( )
C s B 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 /Pa3.
Để 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 tố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: maxV/Pa,local4. 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 tố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 C B C 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.