Trong hình 2.2, (a) Phân bố của một ma trận thưa A và hai véc tơ v và u độ dài 5 trên các bộ xử lý. Các phần tử khác 0 của ma trận và các thành phần véc tơ của bộ xử lý P(0) được chỉ trong các ô xám, của P(1) là các ô màu đen. Các số trong các ô ký hiệu các giá trị số aij. Ma trận như trong ví dụ 2.1. Thành phần véc tơ ui được chỉ ra bên trái hàng ma trận mà thực hiện tính tích; thành phần véc tơ vj được chỉ ra ở trên cột của ma trận cần nó. (b) các thành phần ma trận địa phương của các bộ xử lý. Bộ xử lý P(0) có 6 phần tử khác 0; tập chỉ số hàng là I0 = {0, 1, 2, 3} và tập chỉ số cột của nó J0 = {0, 1, 2}. Bộ xử lý P(1)
Thuật toán 2.4 Nhân ma trận thưa với véc tơ song song
Thuật toán song song nhân ma trận thưa với véc tơ tổng quát, thuật toán 2.4. Thành phần véc tơ vj cần thiết cho tính tốn aij.vj phải đạt được trước khi bắt đầu bước (2). Điều
Input: A là ma trận thưa cấp m n , distr(A) = , v véc tơ dày độ dài n, distr(v) = v.
Output: u véc tơ dày độ dài m, u = Av, distr(u) = u.
: 0 ( : 0 ( , ) ) : 0 ( : 0 ( , ) ) s s I i i m j j n i j s J j j n i i m i j s (1) {Nhận vj về} for all jJsdo receive vj fromP(v(j));
(2) {Nhân ma trận thưa với véc tơ cục bộ}
for all iIsdo ; 0 : is u for all j:0 jn(i,j)s do uis := uis + aijvj; (3) {Gửi uis cho bộ xử lý tính ui} for all iIsdo send uis to P(u( ));i (4) {Tổng kết các tổng thành phần khác 0} for all i: 0 i m u( )i s do ui := 0; for all t: 0 t P uit 0 do ui := ui + uit;
này được thực hiện trong bước truyền thông (1), xem minh hoạ hình 2.3. Bộ xử lý mà phải nhận vj được nhận biết từ ma trận thưa địa phương mà cần thành phần vj này. Thành phần vi phải nhận về mỗi bộ xử lý mà cần nó, nó có thể được sử dụng nhiều lần cho các phần tử khác 0 địa phương aij trong cùng cột j của ma trận. Nếu cột j chứa ít nhất một
phần tử khác 0 địa phương thì vj là cần thiết; ngược lại vj không cần thiết. Do đó, để thuận tiện ta xác định tập chỉ số Js các cột khác rỗng địa phương, tương tự tập chỉ số hàng khác rỗng Is. Chúng ta nhận về vj nếu và chỉ nếu jJs, thực hiện ở bước (1) của thuật tốn 2.4. Tập Js có thể được biểu diễn bằng mảng colindex độ dài |Js|, tương tự rowindex cho tập Is. Minh hoạ tập chỉ số cột trong hình 2.2(b). Chúng ta xem các mảng rowindex và colindex như phần cấu trúc dữ liệu cho ma trận thưa địa phương. Tổng thành phần uis mà khác 0 phải được gửi tới ui nếu hàng i địa phương là không rỗng, tức là, nếu iIs, thực hiện trong bước (3). Cuối cùng, bộ xử lý chịu trách nhiệm tính ui sẽ cộng các giá trị khác 0 đã nhận được trước đó uit, 0 t P t, s,thực hiện ở bước (4).
Các bộ xử lý được giả thiết đồng bộ hóa tồn cục giữa các bước.
Hình 2.3 Minh hoạ truyền thơng nhân ma trận thưa với véc tơ
Hình 2.3 minh hoạ truyền thơng trong quá trình nhân ma trận thưa với véc tơ như trong hình 2.2, mũi tên đứng ký hiệu truyền thông của các thành phần vj: v0 phải gửi từ bộ xử lí sở hữu nó P(1) cho P(0) đang sở hữu các phần tử khác không a10 = 4 và a30 = 6; v2
ngang ký hiệu truyền thông các tổng thành phần uis: P(1) gửi u01 = 3 mà nó tính được tới P(0) để tính u0; P(0) gửi u20 = 14 tới P(1) để tính u2; và P(1) gửi u31 = 29 tới P(0) để tính u3; u1 và u4 được tính cục bộ, khơng có truyền thơng với bộ xử lý khác. Tổng truyền thông V = 5 từ dữ liệu.
Từ thuật toán 2.4, mục tiêu cụ thể được đưa ra như sau:
Cố gắng rải các phần tử khác không của ma trận đều khắp trên các bộ xử lý, cực tiểu hóa lượng cơng việc cực đại của một bộ xử lý trong bước (2).
Cố gắng cực tiểu hóa tổng số truyền thơng, dung lượng truyền thông.
Cố gắng dải đều truyền thông trên các bộ xử lý, cả việc gửi và nhận, để cực tiểu hóa số thao tác truyền thơng cực đại của bộ xử lý trong bước (1) và (3).
Cố gắng phân hoạch ma trận theo cả hai chiều, chẳng hạn bằng việc chia nó thành các khối hình chữ nhật. Như một kết quả, các phần tử của cột cần để phân phối trên chỉ Pbộ xử lý (giả thiết P là số chính phương) thay vì trên P bộ xử lý của máy tính song song. Ở đây giới hạn số bộ xử lý đích và vì vậy truyền thơng của thành phần véc tơ vj trong bước (1) là P1, vj được cung cấp cho một trong các bộ xử lý mà cần nó. Theo cách này, nó cũng hạn chế số truyền thơng trong bước (3). Mặc dù phân phối một chiều có lợi ích là bỏ qua một hoặc hai bước, chẳng hạn bước (3) hoặc (4) trong trường hợp phân phối theo hàng, chi phí phải trả sẽ cao: các hàng (các cột) phải được phân phối trên một số lượng lớn các bộ xử lý và số truyền thơng cho một thành phần véc tơ có thể đạt P - 1.
Dưới đây trình bày phương pháp phân hoạch hai chiều cho ma trận thưa tổng quát [8] và phương pháp phân hoạch các véc tơ dựa trên biên địa phương [18] nhằm đạt được các mục tiêu đề ra.
Dung lượng truyền thơng của thuật tốn song song cho bài toán nhân ma trận thưa với véc tơ là tổng số phần tử dữ liệu được gửi đi trong bước (1) và bước (3). Giá trị này phụ thuộc vào việc lựa chọn phân phối dữ liệu cho ma trận và các véc tơ. Ta giả thiết rằng thành phần véc tơ vj của véc tơ đầu vào v sẽ phân cho một trong các bộ xử lý mà sở hữu
thành phần khác không aij trong cột j của ma trận, nếu như tồn tại phần tử khác không, cịn ngược lại khơng tồn tại phần tử khác không trong cột j, cột j là rỗng thì sẽ khơng gây ra truyền thơng. Cách phân như vậy sẽ cho kết quả tốt hơn khi phân cho các bộ xử lý khác. Ta cũng thực hiện phân các thành phần ui của véc tơ đầu ra u cho một trong các bộ xử lý mà sở hữu phần tử khác không aij trong hàng i của ma trận. Theo cách phân như vậy thì dung lượng truyền thơng là độc lập với phân phối của các véc tơ.
2.2.2 Phân phối ma trận
Giả sử ma trận thưaAcó kích thước m n với m n, 1, các phần tử aij, với 0 i m
và 0 j n. Véc tơ đầu vào v là véc tơ độ dài n và véc tơ đầu ra u là véc tơ độ dài m.
Chúng ta khơng tính khả năng thưa có thể có của các véc tơ. Máy tính song song có số bộ xử lý dạng P2q bộ xử lý, q0,mỗi bộ xử lý có bộ nhớ cục bộ riêng.
Một phân hoạch k chiều của A là một tập A0,...,Ak1 khác rỗng, các tập con của A rời nhau đôi một và thỏa mãn 1
0 . k r r A A
Dưới đây là một số định nghĩa:
Định nghĩa 2.1. Cho A là ma trận thưa m n và cho A0,...,Ak1là các tập con của A, k 1. Số tập con mà có phần tử khác khơng trong hàng i của ma trận A, với 0im,
0,..., 1
i k
i p A A
p
r:0rkj:0 j naij 1 i,j Ar, (2.7) Số tập con mà có phần tử khác khơng trong cột j của ma trận A, với 0 j n.
0,..., 1
j k
j q A A
q
Ký hiệu pimaxpi 1,0, qj maxqj 1,0. Khi đó dung lượng truyền thơng cho các tập 1 0,...,Ak A xác định như sau: 1 0 1 0 1 0,..., n j j m i i k p q A A V (2.9)
Đặc biệt hàm dung lượng truyền thông V vẫn xác định khi k tập con rời nhau đôi một mà không tạo nên phân hoạch k chiều. Nếu k = P và các tập con tạo nên phân hoạch P
chiều và nếu chúng ta phân mỗi tập con cho một bộ xử lý, thì V A( 0,...,AP1) chính là dung lượng truyền thơng trong thuật tốn song song nhân ma trận thưa với véc tơ ở trên. Đó là bởi vì mỗi vjđược gửi từ chính bộ xử lý sở hữu nó tới qj bộ xử lý khác mà xử lý phần tử khác không của cột j và mỗi ui là tổng của một giá trị cục bộ (từ chính nó) và các giá trị nhận được từpi bộ xử lý khác. Một tính chất quan trọng nữa của dung lượng truyền thông như sau.
Định lý 2.2. Cho A là ma trận cấp m n và A0,...,Ak1là các tập con của A, k 2. Khi đó dung lượng truyền thông giữa k tập,
0 1 0 3 2 1 2 1
( ,..., k ) ,..., k , k k k , k
V A A V A A A A V A A (2.10)
Chứng minh:
Để chứng minh (2.10) thay V bởi pi, với 0im và qjvới 0 jn. Chúng ta chỉ cần chứng minh cho trường hợp pi, còn trường hợp qj là tương tự. Cho i là chỉ số
hàng, ta phải chứng minh rằng 0 3 2 1 2 1 1 0,..., ) ,..., , , ( k i k k k i k k i A A p A A A A p A A p . (2.11)
Nếu Ak-2 hoặc Ak-1 có phần tử khác 0 trong hàng i, chúng ta có thể thaypi pi 1. Ta có vế phải bằng
,..., , , 1 1 , 1 1 ,..., 1 , 1 , ,..., 1 2 3 0 1 2 3 0 1 2 1 2 3 0 k k k i k k i k i k k i k k k i A A A A p A A p A A p A A p A A A A p
chính bằng vế trái. Nếu Ak-2 và Ak-1 khơng có phần tử khác khơng trên hàng i, thì ta có vế phải và vế trái cùng bằng piA0,...,Ak3.
Định lý trên là khái quát cho các tập con tùy ý, nhận xét bởi Catalyurek và Aykanat [19], trong trường hợp mà mỗi tập con Ar bao gồm các cột (nguyên vẹn) của ma trận. Định lý chỉ ra rằng để xem xét truyền thông tăng thêm từ việc phân chia một tập con của ma trận, chúng ta chỉ cần xem xét trên chính tập con này.
Chúng ta cũng định nghĩa hàm tính lượng cơng việc tính tốn cực đại của một bộ xử lý khi nhân ma trận cục bộ với véc tơ. Để đơn giản chúng ta biểu diễn bằng số lượng phép nhân (liên quan tới các phần tử khác không của ma trận), bỏ qua các phép cộng.
Định nghĩa 2.3. Cho A là ma trận cấp m n và A0,...,Ak1 là các tập con rời nhau đơi một của A, với k 1. Thì lượng tính tốn cực đại cho các tập con A0,...,Ak1 là:
0 1 0 ,..., k max ( r). r k W A A nz A (2.12) Hàm V mơ tả chi phí của bước (1) và (3) trong thuật tốn 2.4, hàm W thì mơ tả chi phí của bước (2). Chi phí của bước (4) ở đây bỏ qua, thường thì chi phí này nhỏ hơn nhiều so với chi phí của các bước khác, tổng số phép cộng của tất cả các bộ xử lý trong bước (4) được bao bởi V, bởi vì mỗi giá trị cộng thêm vào đã được nhận trước đấy trong bước (3), và chi phí phép cộng thường rẻ hơn nhiều so với chi phí truyền thơng. Việc cực tiểu V vì vậy chính là cực tiểu hóa cận trên chi phí của bước (4). Việc cân bằng tải truyền thơng trong bước (3) sẽ cân bằng được tải tính tốn trong bước (4).
Mục tiêu đề ra là đưa ra thuật toán phân hoạch ma trận A, phân hoạch P chiều, thỏa mãn tiêu trí cân bằng tải:
0,..., P1 1 W A
W A A
P
, (2.13)
và có dung lượng truyền thơng V A( 0,...,AP1) thấp. Ở đây, 0là tham số mất cân bằng tải cho phép. Giá trị nhỏ có nghĩa rằng cân bằng tải phải gần như hoàn hảo.
Trước tiên chúng ta xem xét bài toán phân hoạch đơn giản nhất, trường hợp P = 2.
Một cách để phân chia ma trận là phân hoàn toàn cột cho A0 hoặc A1. Khi đó qj 0với mọi j, vì vậy khơng gây truyền thơng cho thành phần véc tơ vj. (Việc phân chia một cột j bằng cách phân các phần tử khác không cho các bộ xử lý khác nhau sẽ gây nên truyền thông.) Nếu hai cột j và jcó một phần tử khác không trong cùng hàng i, chẳng hạn
1 ij
ij a
a , thì các cột này tốt hơn phân cho cùng một bộ xử lý; ngược lại pi1.Bài toán phân các cột của ma trận thành hai tập chính là bài toán phân hoạch siêu đồ thị hai chiều, siêu đồ thị H = (V, N), với V = {0,…, n-1} là tập các đỉnh, N = {n0,…, nm-1} là tập các siêu
cạnh, ni j: 0 j n aij 1. Hàm split chia ma trận đầu vào A thành hai tập A0 và A1
như sau:
A A0, 1split A sign , ,.
Đầu ra là cặp tập con rời nhau A0,A1 với A0A1 A thỏa mãn
A0,A1 1 W A /2.
W Nếu sign = 1, các cột được phân hoạch; nếu sign = -1, các hàng được phân hoạch.
Thông thường chúng ta chỉ xét với giả thiết P = 2q, nhưng chúng ta có thể tính tốn với trường hợp tổng quát. Chẳng hạn, cho trường hợp P = 3 ta có thể chia ma trận thành hai tập theo tỷ lệ các phần tử khác không, chẳng hạn với tỷ lệ 2:1.
Việc chia một ma trận thành hai phần bằng cách phân tồn bộ cột (hay hàng) có lợi là đơn giản và khơng có truyền thơng trong bước (1). Tuy nhiên, trong trường hợp chia theo cột, chẳng hạn cột j với hai nửa (nửa đầu và nửa cuối) lần lượt là jvà j. Phân hai
nửa này cho hai bộ xử lý có thể tiết kiệm được truyền thơng trong bước (3). Theo phương pháp này từng phần tử được phân cho các bộ xử lý thay vì tồn bộ cột (hay hàng).
Tiếp theo chúng ta xem xét trường hợp P = 4. Mục đích phân hoạch hai chiều là
chúng ta có thể phân các cột vào hai tập J0và J1 và rồi các hàng vào hai tập I0và I1. Như vậy sẽ phân ma trận thành bốn ma trận con, xác định bởi các tích đề các I0J0, I0J1,
0 1 J
I và I1J1. Phân phối này, hiện nay vẫn sử dụng cho hầu hết các ma trận, được gọi là phân phối đề các. Trường hợp bốn bộ xử lý cho thấy một loạt bất lợi của phân bố đề các: việc phân hoạch của các hàng mà phải áp dụng cho cả các cột. Một phân hoạch hàng tốt cho các cột của J0có thể là xấu cho các cột của J1, và ngược lại. Điều này dẫn đến phải xem xét việc phân hoạch theo hàng hay theo cột. Hạn chế lượng lớn các tập phân hoạch có thể thì sẽ cho lời giải tốt hơn. Do đó chúng ta có thể phân hoạch cho từng phần riêng biệt. Định lý 2.2 cho thấy có thể thực hiện một cách độc lập, bởi vì:
A0,A1,A2,A3 VA0 A1,A2 A3 V A0,A1 V A2,A3,
V (2.14)
ở đây các phần được ký hiệu bởi A0,A1,A2,A3 với A0A1là phần đầu của cột và A2A3là phần sau của cột. Ta có thể phân hoạch A0A1mà không cần xem xét phân hoạch của