.1 Thuật toỏn nhõn ma trận thưa với vộc tơ tuần 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 38 - 44)

Bài toỏn nhõn ma trận thưa với vộc tơ gần như là tầm thường trong tớnh toỏn tuần tự, nhưng khi ma trận cú kớch thước lớn, phải thực hiện nhõn ma trận với vộc tơ lặp đi lặp lại nhiều lần, khối lượng tớnh toỏn khổng lồ thỡ việc thực hiện nhõn ma trận thưa với vộc tơ song song cú vai trũ cực kỳ quan trọng. Trong cỏc lời giải lặp của hệ phương trỡnh tuyến tớnh, hệ phương trỡnh giỏ trị riờng, trong cỏc bài toỏn mụ phỏng, ta thường phải thực hiện

Input: A ma trận thưa cấp m n ,

v vộc tơ dày độ dài n.

Output: u vộc tơ dày độ dài m, u = Av.

for i := 0 to m - 1 do

ui := 0;

for all (i,j): 0im0 jnaij 0 do

nhõn ma trận thưa với vộc tơ lặp đi lặp lại. Trong cỏc phương phỏp giải lặp, bắt đầu với ước đoỏn ban đầu của nghiệm x0 và sau đú tiếp tục cải thiện nú bằng việc tỡm xấp xỉ tụt

hơn xk , k = 1, 2,…, cho tới khi hội tụ với sai số cho trước. Vớ dụ, phương phỏp gradient

liờn hợp cho hệ phương trỡnh tuyến tớnh hữu hạn dương, đối xứng Ax = b và phương phỏp Lanczos [11] cho hệ phương trỡnh đối xứng Ax = x. Trong chương này trỡnh bày bài

toỏn nhõn ma trận thưa với vộc tơ song song, tớnh thưa của ma trận cú thể là bất thường, khụng cú qui tắc. Nhưng thật may mắn trong bài toỏn nhõn ma trận với vộc tơ thỡ ma trận là khụng thay đổi trong quỏ trỡnh tớnh toỏn.

Nghiờn cứu nhõn ma trận thưa với vộc tơ cũng đưa ra cỏi nhỡn sõu sắc hơn trong cỏc lĩnh vực khỏc của tớnh toỏn khoa học. Trong mụ phỏng động lực học, lực tương tỏc giữa cỏc hạt i và j cú thể mụ tả bằng một lực fij. Cho khoảng tương tỏc ngắn, lực bằng 0 nếu cỏc hạt này là cỏch xa nhau. Ở đõy cho ta ma trận lực F là ma trận thưa. Tớnh toỏn cỏc vị trớ mới của cỏc hạt di chuyển dưới lực của hai hạt tương tự như nhõn một vộc tơ với ma trận F. Miền hạt hai chiều và ma trận tương ứng được chỉ ra trong hỡnh 2.1.

Hỡnh 2.1 Mụ phỏng động lực học bằng ma trận lực thưa

Trong hỡnh 2.1, (a) miền động lực học phõn tử hai chiều kớch thước 1.0 1.0 với 10 hạt. Mỗi vũng trũn ký hiệu vựng tương tỏc của một hạt, và được xỏc định bởi bỏn kớnh rc

= 0.1. (b) Ma trận thưa F kớch thước 10 10 tương ứng. Nếu cỏc vũng trũn của hạt i và hạt

j giao nhau thỡ hai hạt này tương tỏc lẫn nhau và giỏ trị fij và fji khỏc 0 xuất hiện trong (b). Cỏc bài toỏn về ma trận thưa đó được đề cập, cựng với cỏc bộ dữ liệu từ những bài toỏn thực tế đó được tập hợp bởi cỏc nhúm nghiờn cứu như: Matrix maket, Harwell- Boeing [20] ngày nay gọi là Rutherford-Boeing… Mục tiờu cho việc xõy dựng cỏc bộ sưu tập này đú là cỏc nhà nghiờn cứu kiểm nghiệm cỏc bộ dữ liệu, cho cỏc thuật toỏn khỏc nhau trờn cỏc mỏy khỏc nhau, để cú thể sử dụng như một tập phổ biến cỏc bộ thử nghiệm cho trường hợp đặc biệt như ma trận thưa.

Cỏc kết quả đó đạt được

Trong những năm gần đõy, đó cú nhiều kết quả đạt được từ bài toỏn nhõn ma trận thưa với vộc tơ song song. Trước tiờn, bài toỏn phõn hoạch ma trận được giải quyết như một bài toỏn phõn hoạch đồ thị. Đõy là phương phỏp phõn hoạch một chiều, là cơ sở của cỏc thuật toỏn phõn hoạch được cài đặt trong cỏc phần mềm Chaco [4] và Metis [12] được sử dụng rộng rói từ những năm 1995-1998. Thành cụng của cỏc chương trỡnh phõn hoạch này là sự kết hợp hiệu quả cỏc thuật toỏn phõn đụi nhiều mức, được đề xuất bởi Bui và Jones [19] từ những năm 1993.

Hendrickson [5], năm 1998, chỉ trớch phương phỏp phõn hoạch đồ thị bởi vỡ nú chỉ xử lý với cỏc ma trận vuụng đối xứng và ỏp đặt cỏch phõn hoạch ma trận để phõn hoạch cho cỏc vộc tơ đầu vào và đầu ra, và bởi vỡ nú khụng nhất thiết để cực tiểu dung lượng truyền thụng, số thụng điệp gửi đi, cũng như cõn bằng tải truyền thụng cực đại của mỗi bộ xử lý. Hendrickson và Kolda [5], chỉ ra những bất lợi đối với tất cả cỏc ứng dụng của phõn hoạch đồ thị trong tớnh toỏn song song, khụng chỉ riờng với việc nhõn ma trận thưa với vộc tơ. Hendrickson và Kolda [7], năm 2000, đó trỡnh ra phương ỏn thay thế, mụ hỡnh chia đụi đồ thị. Mụ hỡnh này cú thể xử lý được cả ma trận vuụng khụng đối xứng và ma trận hỡnh chữ nhật và nú khụng ỏp đặt cỏch phõn phối ma trận cho cỏc vộc tơ đầu vào và đầu ra.

Catalyiirek và Aykanat [21], năm 1999, chỉ ra thuật toỏn phõn hoạch đa mức, họ tớnh được dung lượng truyền thụng chớnh xỏc bằng việc sử dụng phương phỏp siờu đồ thị. Một

siờu đồ thị H = (V, N) bao gồm một tập cỏc đỉnh V = {0, …, n - 1} và một tập cỏc siờu

cạnh N = {n0,…, nm-1} và cũng được gọi là một mạng. Catalyiirek và Aykanat giả thiết

rằng m = n, và việc phõn phối vộc tơ được thực hiện như cỏch phõn phối ma trận. Lợi ớch của phương phỏp này là nú cố gắng cực tiểu dung lượng truyền thụng thực sự.

Cả hai phương phỏp phõn hoạch đồ thị chuẩn và phõn hoạch siờu đồ thị đều là cỏc phương phỏp phõn hoạch ma trận một chiều. Phõn hoạch ma trận hai chiều cũng được đề xuất, và mới được sử dụng với cỏc phiờn bản nhõn ma trận với vộc tơ nhằm khai thỏc trong tớnh toỏn mà chưa khai thỏc cho truyền thụng.

Berger và Bokhari [15], năm 1987, trỡnh bày chiến lược dựa trờn chia đụi đệ quy cho việc phõn hoạch khụng đồng bộ lưới hai chiều. Việc phõn hoạch chia lưới lần lượt theo chiều dọc, chiều ngang, với mục tiờu đạt cõn bằng tải tốt trong tớnh toỏn. Chia đụi đệ quy là kỹ thuật tối ưu đó được biết đến, đó được sử dụng trong mụ phỏng mạch song song. Kỹ thuật này cũng được sử dụng để phõn hoạch ma trận, đó được thực hiện bởi Romero và Zapata [14], năm 1995, để đạt được cõn bằng tải tốt trong bài toỏn nhõn ma trận thưa với vộc tơ.

Bisseling [16], năm 1993, trỡnh bày thuật toỏn hai chiều nhằm khai thỏc tớnh thưa của ma trận ở cả tớnh toỏn và truyền thụng. Bisseling và McColl [17], năm 1994, cải tiến thuật toỏn chỉ những truyền thụng thực sự cần thiết mới được thực hiện; họ đạt được điều này bằng việc chuyển thuật toỏn từ mụ hỡnh lưới vuụng hạn chế với định tuyến store-and- forward sang mụ hỡnh song song đồng bộ khối chung. Họ phõn tớch truyền thụng của một loạt phõn phối sử dụng số gửi hay nhận cực đại trờn một bộ xử lý như hàm chi phớ. Phõn phối ma trận là phõn phối đề cỏc, xỏc định bằng việc phõn hoạch cỏc hàng ma trận thành

M tập Is và cỏc cột thành N tập Jt và phõn P = M.N tớch đề cỏc Is x Jt cho P bộ xử lý. Phõn phối vộc tơ giống như ma trận đường chộo.

Pinar và Aykanat [3], năm 1997, chia ma trận trước tiờn thành cỏc khối hàng và rồi chia mỗi khối độc lập thành cỏc khối cột. Phõn hoạch của họ chỉ tớnh đến cõn bằng tải tớnh toỏn.

Gần đõy, Catalyurek và Aykanat [22], năm 2001, mở rộng phương phỏp phõn hoạch siờu đồ thị một chiều cho ma trận vuụng cho phương phỏp phõn hoạch hai chiều. Họ đó

tạo ra phõn hoạch ma trận đề cỏc bằng cỏch phõn hoạch cỏc hàng thành M tặp cú số phần tử khỏc khụng gần bằng nhau, rồi phõn hoạch cỏc cột sao cho phõn đều cỏc phần tử khỏc khụng trờn cỏc tập hàng. Họ đó chỳ ý đi vào xử lý cỏc vấn đề phõn hoạch cũn hạn chế trong phương phỏp phõn hoạch một chiều. Phõn phối cỏc vộc tơ như phõn phối ma trận đường chộo. Lựa chọn M = N = p, với p là số bộ xử lý của mỏy tớnh song song, khi đú số thụng điệp cực đại trờn bộ xử lý giảm là 2 p1, so với p – 1 thụng điệp của phõn

phối một chiều. Đõy là một lợi thế, đặc biệt với ma trận tương đối nhỏ. Theo kết quả thực nghiệm của họ, số cỏc thụng điệp giảm đỏng kể và dung lượng truyền thụng thỡ như nhau.

Để khai thỏc tớnh thưa của ma trận thưa, trước tiờn chỳng ta phải lựa chọn được cấu trỳc dữ liệu thớch hợp, thường chỉ lưu cỏc phần tử khỏc khụng của ma trận. Tiếp theo, đi vào thiết kế thuật toỏn nhõn ma trận thưa với vộc tơ song song với mục tiờu đề ra là cực tiểu hoỏ chi phớ truyền thụng và đạt cõn bằng tải tốt.

2.1.2 Cấu trỳc dữ liệu cho ma trận thƣa

Lợi ớch chớnh của việc khai thỏc tớnh thưa là làm giảm bộ nhớ sử dụng (cỏc phần tử 0 khụng được lưu trữ) và thời gian tớnh toỏn (cỏc phộp toỏn với 0 được bỏ qua hoặc được làm cho đơn giản). Tuy nhiờn, cú một giỏ phải trả là cỏc thuật toỏn ma trận thưa phức tạp hơn so với ma trận dày tương ứng. Việc phỏt triển và cài đặt cỏc ma trận thưa chi phớ nhiều thời gian và cụng sức hơn. Ma trận thưa cú thể lưu trữ sử dụng nhiều cấu trỳc dữ liệu khỏc nhau, lựa chọn cấu trỳc nào là tốt nhất phụ thuộc vào bài toỏn cụ thể. Dưới đõy là một số cấu trỳc thường gặp [18]:

Lƣợc đồ tọa độ (coordinate scheme), hay lược đồ bộ ba (triple scheme). Mỗi phần

tử khỏc khụng aij được biểu diễn lại bằng bộ ba (i, j, aij), ở đõy i là chỉ số dũng, j là chỉ số

cột và aij là giỏ trị số. Bộ ba được lưu trữ theo thứ tự tuỳ ý trong mảng. Cấu trỳc dữ liệu này là dễ hiểu nhất và chỳng được sử dụng cho cỏc bộ dữ liệu trong Matrix Market. Đõy là cấu trỳc phự hợp cho đầu vào tớnh toỏn song song, tất cả cỏc thụng tin về phần tử khỏc khụng được chứa trong bộ ba, ta cú thể gửi trực tiếp và độc lập cỏc bộ ba này tới cỏc bộ xử lý. Tuy nhiờn sẽ khú để thực hiện cỏc thao tỏc hàng hay cột thụng minh (row-wise,

column-wise) trờn cấu trỳc dữ liệu này, tức là việc lấy ra từng hàng hay từng cột để tớnh

toỏn thỡ khụng thuận tiện lắm.

Lƣu trữ hàng nộn (CRS-Compressed Row Storage). Mỗi hàng i của ma trận được

lưu trữ như một vộc tơ thưa chứa cỏc cặp (j, aij) biểu diễn cỏc giỏ trị khỏc 0. Trong cấu

trỳc dữ liệu, a[k] biểu thị giỏ trị của phần tử khỏc khụng aij được đỏnh chỉ số k, và j[k] là chỉ số cột của aij. Cỏc hàng được lưu trữ liờn tục, theo thứ tự tăng của chỉ số hàng. Vị trớ

của phần tử khỏc khụng đầu tiờn của hàng i được cho bởi start[i]; số cỏc phần tử khỏc

khụng của hàng i bằng start[i+1] - start[i], ở đõy qui ước start[m] = nz(A).

Vớ dụ 2.1: cho ma trận 0 3 0 0 1 4 1 0 0 0 , 5, ( ) 13. 0 5 9 2 0 6 0 0 5 3 0 0 5 8 9 A n nz A                   

Cấu trỳc dữ liệu CRS của ma trận A như sau:

a[k]= 3 1 4 1 5 9 2 6 5 3 5 8 9

j[k]= 1 4 0 1 1 2 3 0 3 4 2 3 4

k = 0 1 2 3 4 5 6 7 8 9 10 11 12

Cấu trỳc dữ liệu CRS cú lợi thế đú là cỏc phần tử của hàng được lưu trữ liờn tiếp, bởi vậy cỏc thao tỏc hàng là dễ dàng. Nếu chỳng ta tớnh u = Av, thỡ cỏc phần tử khỏc khụng aij cần thiết để tớnh ui được nhúm lại với nhau thuận tiện. Thuật toỏn 2.2 chỉ ra nhõn ma trận thưa với vộc tơ tuần tự sử dụng CRS.

start[i] = 0 2 4 7 10 13

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 38 - 44)

Tải bản đầy đủ (PDF)

(102 trang)