.3 Thuật toỏn tuần tự nhõn ma trận thưa với vộc tơ sử dụng ICRS

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 45 - 49)

Input: A ma trận thưa cấp m n , v vộc tơ dày độ dài n. Ouput: u vộc tơ dày độ dài m, u = Av.

j := inc[0]; k := 0;

for i := 0 to m - 1 do

u[i] := 0;

while j < n do

u[i] := u[i] + a[k].v[j]; k := k+1;

j := j + inc[k]; j := j – n;

Cấu trỳc dữ liệu ICRS hay được sử dụng trong cỏc lời giải lặp của cỏc hệ phương trỡnh tuyến tớnh thưa. Sử dụng ICRS khụng cần mảng start và cài đặt của nú trong C được thấy là cú một vài điểm nhanh hơn đối với CRS. Thuật toỏn 2.3 chỉ ra nhõn ma trận thưa với vộc tơ tuần tự sử dụng ICRS. Ta thấy rằng thuật toỏn này trỏnh được việc truy cập địa chỉ giỏn tiếp của vộc tơ v trong cấu trỳc dữ liệu CRS, việc truy cập tới v[j[k]] được thay

bằng truy cập tới v[j].

Lƣu trữ theo đƣờng chộo (JDS-Jagged Diagonal Storage). Ma trận A được thay

đổi trật tự hàng hay cột (hoỏn vị) thành ma trận mới bằng cỏch sắp xếp cỏc hàng giảm dần số cỏc phần tử khỏc 0. Đường chộo đầu tiờn được tạo bằng cỏch lấy phần tử khỏc 0 đầu tiờn của mỗi hàng trong ma trận mới. Nếu ma trận khụng cú hàng rỗng, độ dài của đường chộo là n. Đường chộo thứ hai tạo ra bằng cỏch lấy số khỏc 0 thứ hai của mỗi hàng. Độ dài bõy giờ cú thể nhỏ hơn n. Quỏ trỡnh này được tiếp tục cho tới khi tất cả cú c0 đường

chộo được tạo, trong đú c0 là số cỏc phần tử khỏc 0 của hàng 0. Như trong CRS, mỗi phần tử ma trận cú giỏ trị số và chỉ số cột được lưu trữ. Lợi ớch chớnh của JDS là độ dài trung bỡnh của cỏc đường chộo lớn chỉ khi số cỏc phần tử khỏc 0 trờn mỗi hàng khụng khỏc nhau quỏ nhiều. Trong trường hợp này, nhõn ma trận thưa với vộc tơ cú thể được thực hiện sử dụng cỏc phộp toỏn hiệu quả trờn vộc tơ kớch thước lớn.

Danh sỏch liờn kết kộp. Mỗi phần tử khỏc khụng được biểu diễn bởi một bộ, bao

gồm i, j, aij, và liờn kết tới phần tử khỏc khụng tiếp theo và trước đú trong cựng hàng và

cột. Cỏc phần tử trong một hàng hay cột khụng cần sắp thứ tự. Cấu trỳc dữ liệu này cú tớnh phức tạp cực đại, nhưng cho phộp truy cập theo hàng và cột là dễ dàng và cỏc phần tử cú thể được chốn và xoỏ với độ phức tạp O(1) (hằng số). Vỡ vậy nú cú thể ứng dụng trong cỏc tớnh toỏn động, là cấu trỳc dữ liệu tốt nhất cho phõn tớch LU song song [18]. ở đú cỏc hàng hay cột thường xuyờn phải di chuyển từ một bộ xử lý sang một bộ xử lý khỏc. Bất lợi của cấu trỳc danh sỏch liờn kết là khối lượng lưu trữ yờu cầu, vớ dụ bảy ụ nhớ cho mỗi số khỏc 0 với CRS. Một bất lợi đú là cỏc danh sỏch liờn kết sau đú gõy ra cỏc bước nhảy tuỳ ý trong bộ nhớ mỏy tớnh, do đú thường gõy ra lỗi cache.

2.2 Nhõn ma trận thƣa với vộc tơ song song 2.2.1 Thuật toỏn song song

Để thực hiện nhõn ma trận thưa với vộc tơ song song hiệu quả đũi hỏi phõn phối dữ liệu phải phự hợp với tớnh toỏn trờn đú. Cụ thể, yờu cầu phõn phối ma trận và cỏc vộc tơ đều khắp trờn cỏc bộ xử lý của mỏy tớnh song song, cú nghĩa là mỗi bộ xử lý sẽ cú số phần tử khỏc khụng gần như nhau. Phương phỏp phõn hoạch dữ liệu cho bài toỏn nhõn ma trận thưa với vộc tơ song song trỡnh bày ở đõy gồm hai bước như sau: trước tiờn, ma trận sẽ được phõn phối, ở đõy sẽ xỏc định được truyền thụng và cõn bằng tải tớnh toỏn. Sau đú cỏc vộc tơ đầu vào và đầu ra sẽ được phõn phối, ở bước này xỏc định được cõn bằng tải truyền thụng. Sự độc lập, riờng rẽ của hai bước sẽ giỳp cho chỳng ta dẽ dàng hơn trong việc tối ưu phõn phối dữ liệu.

Trước tiờn thực hiện phõn phối dữ liệu ma trận thưa, mỗi một tập con cỏc phần tử khỏc khụng của ma trận được phõn cho một bộ xử lý, sao cho cỏc tập này là rời nhau và hợp của chỳng là tập tất cả cỏc phần tử khỏc khụng của ma trận, đõy chớnh là xõy dựng một phõn hoạch cho tập cỏc phần tử khỏc khụng của ma trận thưa. Mỗi tập con đú cũng là một ma trận thưa, cú thể lưu trữ sử dụng cấu trỳc ma trận thưa như đó trỡnh bày ở phần trước.

Giả sử chỳng ta cú lược đồ ỏnh xạ cỏc phần tử khỏc 0 tới P bộ xử lý như sau: ( ( , ))

ij

aPi j , với 0i j, n a, ij 0. (2.5) Trong đú 0 ( , )i jP. Để thuận tiện, chỳng ta định nghĩa  cho cỏc phần tử 0:

1 ) , ( 

i j nếu aij= 0. Mỗi phần tử khỏc khụng aij chỉ được sử dụng một lần trong phộp nhõn ma trận với vộc tơ. Hơn thế nữa, thường ma trận cú số cỏc phần tử khỏc khụng nhiều hơn số thành phần vộc tơ (độ dài vộc tơ), nờn chỳng ta thực hiện tớnh tớch aij.vj trờn bộ xử lý mà xử lý phần tử khỏc khụng aij. Vỡ vậy, chỳng ta gửi thành phần vộc tơ vj tới bộ xử lý chứa phần tử aij, mà khụng phải là chiều ngược lại. Chỳng ta cộng cỏc tớch aij.vj thuộc cựng hàng i; cỏc tổng địa phương được tổng hợp để tớnh ui. Như vậy chỳng ta khụng phải

truyền thụng cỏc phần tử của ma trận, mà chỉ cỏc thành phần của vộc tơ v và vộc tơ u

truyền thụng.

Cho một vộc tơ u cú độ dài m, cỏc thành phần của vộc tơ cú thể phõn phối tới P bộ

xử lý theo ỏnh xạ như sau: )), ( ( i P

ui  u với 0 i m, (2.6) ở đõy 0 u( )iP. Cỏc vộc tơ v và u cú thể được phõn phối theo cựng cỏch hoặc theo cỏc cỏch khỏc nhau. Tổng quỏt, chỳng ta giả thiết rằng cú hai ỏnh xạ uvà vlần lượt cho hai vộc tơ u và v, minh hoạ như hỡnh 2.2.

Hỡnh 2.2 Minh hoạ nhõn ma trận thưa với vộc tơ song song

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)

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 45 - 49)