Giải thuật khử Gauss dựa trên các phép đổi sơ cấp đối với hàng của ma trận hệ số không làm thay đổi hệ nh sau:
Nhân các phần tử của hàng j với một số λkhác không
Đổi chỗ hai hàng i và j cho nhau.
Trong giải thuật khử Gauss, đối với mỗi cột i khử các phần tử dới đờng chéo chính bằng cách cộng với bội số của hàng i với các hàng phía dới. Giải thuật khử tuần tự nh sau:
Công việc tính toán trong một bớc đợc minh hoạ nh hình vẽ dới đây:
Hình 5. 1 Mô tả tính toán trong giải thuật khử Guass
Giải thuật tách ma trận A = L * U dựa theo giải thuật khử Gauss ta sẽ đ- ợc L là ma trận tam giác dới với các phần tử nằm trên đờng chéo chính =1 và U là ma trận tam giác trên. Sau khi kết thúc thủ tục tách, thì L đợc lu trữ trong phần dới đờng chéo chính và U đợc lu trữ trong phần trên của A.
Giải thuật tách tuần tự đợc trình bày nh sau:
Trong giải thuật tuần tự, công việc tính toán lik đợc đợc ra ngoài vòng lặp trong để giảm chi phí tính toán trong mỗi bớc lặp.
For k = 1 to n-1 For j= k + 1 to n For i = k+1 to n aij = aij – (aik / akk )*akj For k = 1 to n-1 For i= k + 1 to n lik = aik /akk end for j = k +1 to n For i = k +1 to n a ij = a ij- lik . akj end end end (k, k) (k, i) (j, k) cột k cột i hàng k hàng j i (i, j) Khử Cập nhật A = L U
Thông thờng, giải thuật khử Gauss có sự hoán đổi giữa các hàng để tìm ra phần tử xoay có giá trị tuyệt đối lớn nhất. Tuy nhiên, để đơn giản hoá bài toán, tạm thời bỏ qua vấn đề tìm phần tử xoay có giá trị lớn nhất. Xem xét độ phức tạp của giải thuật.
Giải thuật khử Gauss tuần tự yêu cầu khoảng n3/3 cặp phép toán cộng nhân, bởi vậy thời gian yêu cầu thực hiện là T1= tc n3/3 với tc là thời gian yêu cầu thực hiện phép cộng -nhân.
Quá trình thiết kế giải thuật song song đợc trình bày nh sau:
a. Phân rã
Đối với 2 vòng for i, j = 1, . , n sẽ hình thành lên ma trận có n… 2 phần tử Một cách tự nhiên, ta phân rã ma trận thành n2 tác vụ, mỗi tác vụ tại vị trí (i, j) sẽ lu trữ hệ số aij, tính toán và lu trữ các phần tử sau:
uij nếu i ≤ j lij nếu i > j
Các phần tử 0 dới đờng chéo chính trong ma trận U, phần tử =0 phía trên đờng chéo chính và các phần tử =1 trên đờng chéo chính không cần phải tính toán và lu trữ, ta mặc định trong kết quả.
b. Truyền thông
Các bớc tính toán có sự phụ thuộc dữ liệu lẫn nhau nên truyền thông là cần thiết giữa các tác vụ. Truyền thông giữa các tác vụ đợc mô tả nh hình dới đây.
Hình 5. 2 Mô tả truyền thông giữa các tác vụ
Khi đó ta có chơng trình mô phỏng cho từng tác vụ nh sau:
Program for task(i, j) For k= 1 to min (i, j) –1
Recv akj Recv lik aij = aij - lik * akj end if i ≤ j then broadcast aij to task(k, j), k = i +1, . , n… else recv a jj lij = aij/ a jj broadcast lij to tasks(i, j), k = j+1, , … n end c. Tích tụ
Với mảng hai chiều n ì n các tác vụ, các chiến lợc kết hợp tác vụ nh sau:
1-D: kết hợp n/p hàng hoặc cột
2-D: kết hợp các tác vụ thành mảng con 2 chiều (n/ p ) ì(n/ p
)
với các chiến lợc này, công đoạn tích tụ đều tạo ra p tác vụ lớn hơn.
d. ánh xạ
Mỗi tác vụ tạo ra từ công đoạn kết hợp sẽ đợc ấn định vào một trong p bộ xử lý.
Với mỗi chiến lợc tích tụ, ta có một giải thuật song song song tơng ứng.