Sau khi thực hiện phân rã A= L*U, ta sẽ thu đợc:
• L là ma trận tam giác dới ( lower triangular ) bởi vì tất cả các phần tử phía trên đờng chéo chính đều = 0, lij= 0 với i < j.
• U là ma trận tam giác trên ( upper triangular) bởi vì tất cả các phần tử phía dới đờng chéo chính đều = 0, uij = 0 với i> j.
Đối với các giải thuật trực tiếp giải hệ phơng trình tuyến tính thì việc đa ma trận hệ số về ma trận tam giác là điều quan trọng bởi vì hệ tuyến tính ma trận hệ số tam giác thờng dễ giải bằng các bớc khử liên tiếp.
Giải thuật tuần tự giải L* y = b.
Đối với hệ phơng trình tam giác thấp, y có thể tìm đợc bằng giải thuật rút gọn tiến. Giải thuật đợc trình bày nh sau:
xi =(bi - ∑− = 1 1 / ) i j ii j ijx l l , i=1, , n… for j=1 to n x j= b j/l jj for i = j+1 to n bi = bi - lij xj end end
Giải thuật tuần tự giải U * x = y
Đối với hệ phơng trình tam giác trên, x có thể tìm đợc bằng giải thuật rút gọn quay lui. Giải thuật đợc trình bày nh sau:
xi =(bi - ∑−=1 1 / ) n j ii j ijx u u , i=1, , n… for j=1 to n x j= b j/u jj for i = 1 to j-1
bi = bi - uij x j
end end
Phân tích độ phức tạp của giải thuật tuần tự.
Giải thuật rút gọn tiến và rút gọn quay lui yêu cầu khoảng n2/2 phép nhân và số lợng tơng tự đối với phép cộng, bởi vậy thời gian tính toán đối với mô hình tuần tự là:
T1= tc n2/2
Với tc là thời gian tính toán cho cặp phép nhân và cộng.
Trong mục này chỉ xem xét xây dựng giải thuật song song đối với hệ ph- ơng trình tam giác dới, hệ phơng trình tam giác trên sẽ đợc giải tơng tự.
a. Phân rã
Phân rã bài toán thành các tác vụ, mỗi tác vụ tơng ứng với một phần tử trong ma trận L cần cập nhật.
- For i=2, , n, j= 1, , i-1 tác vụ (i, j). Mỗi tác vụ sẽ … …
+ lu trữ lij
+ tính toán lijx j
- For i = 1, , n, tác vụ (i, i). Mỗi tác vụ sẽ …
+ lu trữ lii và bi + tính tổng ti=∑− = 1 1 i j j ijx l + tính toán và lu trữ xi= (bi - ti )/lii
Với việc phân chia này dẫn đến mảng 2 chiều tam giác n( n-1)/2 tác vụ.
b. Truyền thông
Đối với các tác vụ for j=1, , n-1, mỗi tác vụ task(j, j) sẽ broadcast x… j
tới task(j, j), i=j+1, . . , n.
for i=2, . . , n tính tổng các kết quả thu gọn lij xj từ các tác vụ task(i, j), j=1, , i-1. tới task(i, i).
…
Hình 5. 6 Mô tả truyền thông giữa các tác vụ
Program for task (i, j), i≥j
If i=j then If i> 1 then
Recv sum reduction t else t=0 end xi =(bi -t)/lii
broadcast xi to tasks(k, i), k=i+1, . . , n else
recv x j
t = lij x j
send t for sum reduction across tasks (i, k), k=1, . , i-1, to task(i, i)…
end
c. Tích tụ
Với mảng hai chiều tác vụ, các chiến lợc tích tụ tự nhiên là :
Kết hợp n/p hàng hoặc cột
Kết hợp hàng cột với ma trận con kích thớc (n/ p ) ì(n/ p ) trong cả hai trờng hợp đều đem lại p tác vụ
d. ánh xạ
Mỗi tác vụ sẽ đợc ấn định vào một trong p bộ xử lý.