- USE(S) = {A, C}
USE(S2) ∩ USE(S1) ∅
- Sự thực hiện của lệnh này phụ thuộc vào giá trị của các biến được tính ở lệnh kia
4.4. L p trình song song và các thu t toán song songậ ậ
4.4.1. L p trình song songậ
CHƯƠNG 4: M T S KI N TRÚC HI N Đ IỘ Ố Ế Ệ Ạ
* Sự phụ thuộc dữ liệu và đồ thị ưu tiên:
+ Loại bỏ phản phụ thuộc:
- Có thể loại bỏ phản phụ thuộc dữ liệu và phụ thuộc dữ liệu ra bằng cách đặt lại tên các biến
+ Ví dụ: A = B + C A = C * X A = B + C A1 = C * X Loại bỏ phụ thuộc dữ liệu ra
4.4. L p trình song song và các thu t toán song songậ ậ
4.4.1. L p trình song songậ
CHƯƠNG 4: M T S KI N TRÚC HI N Đ IỘ Ố Ế Ệ Ạ
* Sự phụ thuộc dữ liệu và đồ thị ưu tiên:
+ Ví dụ: A = B + C B = C * X A = B + C B1 = C * X Loại bỏ phản phụ thuộc dữ liệu For i=1,n,1 X = A[i] + B[i] Y[i] = 2 * X X= C[i] * D[i] P = X + 15 Endfor Loại bỏ phản phụ thuộc dữ liệu For i=1,n,1 X = A[i] + B[i] Y[i] = 2 * X XX= C[i] * D[i] P = XX + 15 Endfor
4.4. L p trình song song và các thu t toán song songậ ậ
4.4.1. L p trình song songậ
CHƯƠNG 4: M T S KI N TRÚC HI N Đ IỘ Ố Ế Ệ Ạ
* Sự phụ thuộc dữ liệu và đồ thị ưu tiên:
+ Ví dụ: Xét dãy câu lệnh sau S1: A = B + C S2: B = A * 3 S3: A = 2 * C S4: P = B >= 0 if (P is true) S5: then D = 1 S6: else D = 2 endif S1 S2 S3 S4 S6 S5
4.4. L p trình song song và các thu t toán song songậ ậ
4.4.1. L p trình song songậ
CHƯƠNG 4: M T S KI N TRÚC HI N Đ IỘ Ố Ế Ệ Ạ
* Sự phụ thuộc dữ liệu và đồ thị ưu tiên:
+ Ví dụ: Các câu lệnh sau khi biến đổi S2’: B = (B + C) * 3 S3: A = 2 * C S4: P = B >= 0 if (P is true) S5: then D = 1 S6: else D = 2 endif S2’ S3 S4 S6 S5
4.4. L p trình song song và các thu t toán song songậ ậ
4.4.1. L p trình song songậ
CHƯƠNG 4: M T S KI N TRÚC HI N Đ IỘ Ố Ế Ệ Ạ
* Biến đổi chương trình:
+ Các biến quy nạp m = 0; DO i = 1 to N m = m + k; x[m] = a[i]; END DO i = 1 to N x[i * k] = a[i]; END
4.4. L p trình song song và các thu t toán song songậ ậ
4.4.1. L p trình song songậ
CHƯƠNG 4: M T S KI N TRÚC HI N Đ IỘ Ố Ế Ệ Ạ
* Biến đổi chương trình:
+ Sự phụ thuộc tiến DO i = 1 to N x[i] = x[i+1]; END DO i = 1 to N x1[i] = x[i]; END DO i = 1 to N x[i] = x1[i+1]; END
4.4. L p trình song song và các thu t toán song songậ ậ
4.4.1. L p trình song songậ
CHƯƠNG 4: M T S KI N TRÚC HI N Đ IỘ Ố Ế Ệ Ạ
* Biến đổi chương trình:
+ Sự phụ thuộc lùi
DO i = 1 to N
x[i] = x[i-1] + y[i]; END
DO i = 1 to N
x[i] = x[0] + y[1] + y[2] + … + y[i]; END
4.4. L p trình song song và các thu t toán song songậ ậ
4.4.1. L p trình song songậ
CHƯƠNG 4: M T S KI N TRÚC HI N Đ IỘ Ố Ế Ệ Ạ
* Biến đổi chương trình:
+ Sự phân tách chu trình
DO i = 1 to N
a[i] = b[i] + c[i]; c[i] = a[i -1]; END
DO i = 1 to N
a[i] = b[i] + c[i]; END
DO i = 1 to N
c[i] = a[i -1]; END
4.4. L p trình song song và các thu t toán song songậ ậ
4.4.1. L p trình song songậ
CHƯƠNG 4: M T S KI N TRÚC HI N Đ IỘ Ố Ế Ệ Ạ
* Biến đổi chương trình:
+ Sự phân tách chu trình
DO i = 1 to N
a[i] = b[i] + c[i]; c[i] = a[i +1]; END DO i = 1 to N x[i] = c[i]; c[i] = a[i+1]; END DO i = 1 to N
a[i] = b[i] + x[i]; END
4.4. L p trình song song và các thu t toán song songậ ậ
4.4.2. Thu t toán song songậ
CHƯƠNG 4: M T S KI N TRÚC HI N Đ IỘ Ố Ế Ệ Ạ
* Nguyên lý thiết kế thuật toán song song:
+ Xử lý song song Kiến trúc máy tính
Thuật toán song song + Chương trình song song
Thuật toán song song Cấu trúc dữ liệu
+ Thuật toán song song: tập các tiến trình (hay tác vụ) - Có thể trao đổi dữ liệu với nhau
- Có thể thực hiện đồng thời
4.4. L p trình song song và các thu t toán song songậ ậ
4.4.2. Thu t toán song songậ
CHƯƠNG 4: M T S KI N TRÚC HI N Đ IỘ Ố Ế Ệ Ạ
* Nguyên lý thiết kế thuật toán song song:
+ Cần trả lời các câu hỏi:
- Việc phân chia dữ liệu cho các tác vụ như thế nào? - Dữ liệu được truy cập như thế nào?
- Những dữ liệu nào cần chia sẻ?
- Phân các tác vụ cho các bộ xử lý như thế nào? - Các tiến trình được đồng bộ ra sao?
4.4. L p trình song song và các thu t toán song songậ ậ
4.4.2. Thu t toán song songậ
CHƯƠNG 4: M T S KI N TRÚC HI N Đ IỘ Ố Ế Ệ Ạ
* Nguyên lý thiết kế thuật toán song song:
+ Năm nguyên lý chính trong thiết kế thuật toán song song: - Các nguyên lý lập lịch (độ phức tạp thuật toán)
- Nguyên lý hình ống - Nguyên lý chia để trị
- Nguyên lý đồ thị phụ thuộc dữ liệu - Nguyên lý điều kiện tranh đua
4.4. L p trình song song và các thu t toán song songậ ậ
4.4.2. Thu t toán song songậ
CHƯƠNG 4: M T S KI N TRÚC HI N Đ IỘ Ố Ế Ệ Ạ
* Nguyên lý thiết kế thuật toán song song:
+ Một số điểm cần quan tâm:
- Yếu tố quan trọng nhất ảnh hưởng đến độ phức tạp tính toán là cấu hình tôpô liên kết mạng
- Thuật toán song song phải được thiết kế dựa trên:
Kiến thức về kiến trúc máy tính
Ngôn ngữ lập trình song song
4.4. L p trình song song và các thu t toán song songậ ậ
4.4.2. Thu t toán song songậ
CHƯƠNG 4: M T S KI N TRÚC HI N Đ IỘ Ố Ế Ệ Ạ
* Các thuật toán sắp xếp song song:
+ Thuật toán sắp xếp theo hạng:
- Số những số nhỏ hơn một số đã chọn sẽ được đếm - Số đếm được sẽ xác định vị trí của phần tử đã được chọn trong danh sách cần sắp xếp
- Ví dụ: Cho mảng các phần tử 5, 3, 7, 6, 9, 10, 8, 12
4.4. L p trình song song và các thu t toán song songậ ậ
4.4.2. Thu t toán song songậ
CHƯƠNG 4: M T S KI N TRÚC HI N Đ IỘ Ố Ế Ệ Ạ
* Các thuật toán sắp xếp song song:
+ Thuật toán sắp xếp theo hạng:
- Thuật toán tuần tự được viết như sau: for (i = 0; i < n; i ++) { x = 0; for (j = 0; j < n; j ++) if (a[i] > a[j]) x++; b[x] = a[i]; } for i := 0 to n do begin x := 0; for j := 0 to n do if (a[i] > a[j]) then
x := x + 1; b[x] := a[i];
4.4. L p trình song song và các thu t toán song songậ ậ
4.4.2. Thu t toán song songậ
CHƯƠNG 4: M T S KI N TRÚC HI N Đ IỘ Ố Ế Ệ Ạ
* Các thuật toán sắp xếp song song:
+ Thuật toán sắp xếp theo hạng:
- Thuật toán song song được viết cho n bộ xử lý:
forall (i = 0; i < n; i ++) //n bộ xử lý thực hiện song song
{ x = 0;
for (j = 0; j < n; j ++) //đếm số phần tử nhỏ hơn if (a[i] > a[j]) x++;
b[x] = a[i]; //Sao sang bảng được sắp xếp }
4.4. L p trình song song và các thu t toán song songậ ậ
4.4.2. Thu t toán song songậ
CHƯƠNG 4: M T S KI N TRÚC HI N Đ IỘ Ố Ế Ệ Ạ
* Các thuật toán sắp xếp song song:
+ Thuật toán sắp xếp so sánh và đổi chỗ: - Thuật toán tuần tự được viết như sau: for (i = n-1; i > 0; i --) for (j = 0; j < i; j ++) { k = j + 1; if (a[j] > a[k]) { temp = a[j]; a[j] = a[k]; a[k] = temp; } }
4.4. L p trình song song và các thu t toán song songậ ậ
4.4.2. Thu t toán song songậ
CHƯƠNG 4: M T S KI N TRÚC HI N Đ IỘ Ố Ế Ệ Ạ
* Các thuật toán sắp xếp song song:
+ Thuật toán sắp xếp so sánh và đổi chỗ:
- Thuật toán song song sử dụng n tiến trình kết hợp theo nguyên lý hình ống, chia làm 2 pha: chẵn và lẻ
Pha chẵn: các tiến trình được đánh số chẵn so sánh với những tiến trình tiếp theo (tiến trình có số lẻ)
Pha lẻ: các tiến trình có số lẻ hoạt động tương tự như trên
4.4. L p trình song song và các thu t toán song songậ ậ
4.4.2. Thu t toán song songậ
CHƯƠNG 4: M T S KI N TRÚC HI N Đ IỘ Ố Ế Ệ Ạ
* Các thuật toán sắp xếp song song:
- Ví dụ: n= 8 và dãy số ban đầu: 4, 2, 7, 8, 5, 1, 3, 6
4.4. L p trình song song và các thu t toán song songậ ậ
4.4.2. Thu t toán song songậ
CHƯƠNG 4: M T S KI N TRÚC HI N Đ IỘ Ố Ế Ệ Ạ
* Các thuật toán sắp xếp song song:
+ Thuật toán sắp xếp MergeSort:
- Sử dụng cách tiếp cận “chia để trị”
Danh sách ban đầu được chia thành 2 phần
Mỗi phần lại chia đôi tiếp
Mỗi phần nhỏ chỉ còn là một phần tử
4.4. L p trình song song và các thu t toán song songậ ậ
4.4.2. Thu t toán song songậ
CHƯƠNG 4: M T S KI N TRÚC HI N Đ IỘ Ố Ế Ệ Ạ
* Các thuật toán sắp xếp song song:
4 2 7 8 5 1 3 6 4 2 7 8 5 1 3 6 4 2 7 8 4 2 7 8 5 1 3 6 5 1 3 6 2 4 7 8 1 5 3 6 2 4 7 8 1 3 5 6 1 2 3 4 5 6 7 8
4.4. L p trình song song và các thu t toán song songậ ậ
4.4.2. Thu t toán song songậ
CHƯƠNG 4: M T S KI N TRÚC HI N Đ IỘ Ố Ế Ệ Ạ
* Các thuật toán sắp xếp song song:
P0P0 P4