Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 22 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
22
Dung lượng
845,65 KB
Nội dung
20 CÂU HỎI - MƠN TÍNH TỐN SONG SONG ( Fix) Vẽ trình bày máy tính kiểu MISD • Một dòng liệu đưa vào đơn vị đa xử lý • Mỗi đơn vị xử lý hoạt động liệu cách độc lập thông qua luồng thị độc lập khác - Kiến trúc MISD chia làm nhóm bản: Thứ nhất, nhóm máy tính u cầu có cơng việc khác nhau, phân tử xử lý khác nhận lệnh khác để thực mục liệu Thứ hai, nhóm máy tính có luồng liệu chuyển theo dãy PE ( Processing Element- phần tử xử lý) liên tiếp.Hoạt động máy tính theo kiến trúc giống hệ tuần hồn nên cịn gọi hệ tâm thu, hình Vấn đề tính tốn song song khả thi, điều kết luận dựa yếu tố nào? - Giá thành CPU giảm mạnh , tạo lập hệ thống đa vi xử lý với chi phí hợp lý - Sự phát triển mạc tích hợp VLSI ( Very Large Scale Integration – độ tích hợp cao) cho phép tạo hệ phức hợp với hàng triệu tranzito mơt chip - Tốc độ tính tốn xử lý kiểu bị hạn chế, nên phải tìm cách tính tốn song song Hai vec tơ A B có 20 phần tử kiểu liệu số xử lý Hãy chương trình tính tổng hai véc tơ theo tiến trình dùng cấu trúc Forall Cho hai vec tơ A B có N phần tử kiểu liệu số Chương trình tính tổng hai véc tơ là: forall (i = ; i < N; i++) { C[i] = A[i] + B[i]; //(1) } Thực song song hóa đoạn chương trình nào? Tương tự ví dụ nêu trên, giả sử ta có M tiến trình Chúng ta chia N phần tử thành M phần (thường ta giả thiết N chia hết cho M, nghĩa N/M số nguyên) gán phần cho tiến trình Chu trình viết thành: forall (j = id * N/M ; j < (id+1) * N/M ; j++){ C(j) = A[j] + B[j] ; } Trong đó, id số hiệu tiến trình, chạy từ đến M-1 Tiến trình thứ i xử lý N/M phần tử liên tiếp kể từ i * N/M +1, ví dụ hình 4.4-1(a) Hoặc ta cho phép tiến trình truy cập xen kẽ vào phần tử mảng sau: Tiến trình Pi phần tử thứ i, sau bỏ qua M phần tử để xử lý phần tử tiếp theo, nghĩa truy cập đến i, i+M, i+2M , , ví dụ hình 4.1-1(b) Chu trình (1) viết sau: forall (j=id ; j < N ; j+ = M) { C[j] = A[j] + B[j]; } Ví dụ: Khi N = 20 M = việc gán phần tử vector cho tiến trình thực theo cách sau: P1 P2 P3 P4 P5 P1 P2 P3 P4 13 17 10 14 18 11 15 19 11 12 13 14 12 16 20 16 17 18 19 (a) (b) Hình 4.1-1 Các cách phân chia chu trình mảng P5 10 15 20 Cho bảng sau ba xử lí Hãy cân bàng tải cho q trình tính tốn song song tn 0.23s xn 0.2s 0.3s 0.1s 0.21s 0.13s 0.15s 0.3s 0.1s 0.11s 0.28s 10 11 Nhận thấy : Tổng thời gian hồn thành cơng việc 11 tiến trình : 2.11s có xử lý xử lý xử lý tổng thời gian xấp sỉ 0.7s ( cụ thể tg trung bình XL : 0.703333s) Chia tiến trình cho Process sau: ( Tự làm nhé….) P1 = P2 = P3 = Vẽ trình bày nhớ hỗn hợp Bộ nhớ hỗn hợp - HDSM (Hybrid Distributed-Shared Memory) - Các thành phần nhớ chia sẻ thường máy SMP với nhớ cache coherency Các xử lý SMP cho địa hóa nhớ máy địa tồn cục - Bộ nhớ dùng mạng nối nhiều SMPs - Các SMPs biết nhớ riêng – mà khơng biết nhớ SMPs khác Vì cần đến mạng truyền thông để chuyển liệu SMPs - Các xu hướng cho thấy kiến trúc nhớ kiểu tiếp tục thắng tăng lên tương lai - Những thuận lợi nhược điểm: Những thuận lợi nhược điểm HDSM giống kiến trúc nhớ chia sẻ lẫn phân phối Bộ nhớ chia sẻ truy cập ngang quyền (Uniform Memory Access (UMA)) (hay SMP (Symmetric Multi-Processor)) Ưu điểm nhớ chia sẻ: - Khơng gian địa tồn cục cung cấp cho người lập trình thân thiện với nhớ - Chia sẻ liệu tác vụ vừa nhanh vừa thống cho CPUs gần gũi nhớ cục Nhược điểm bổ nhớ chia sẻ : - Thiếu khả mở rộng nhớ CPUs Thêm nhiều CPU làm tăng lưu lượng truy cập vào nhớ chia sẻ nhớ đệm cho hệ thống Card coherent, tăng lưu lượng với quản lý nhớ cache - Người lập trình phải xây dựng đồng hóa đảm bảo truy cập "đúng" vào nhớ toàn cục vấn đề dễ - cần truy cập chéo - Thiết kế sản xuất máy có nhớ chia sẻ với việc gia tăng số lượng vi xử lý làm tăng chi phí Ưu điểm nhớ phân tán -DM - Cho khả mở rộng tuỳ ý số lượng vi xử lý Khi tăng số lượng vi xử lý kích thước nhớ tăng tương ứng - Mỗi xử lý truy cập nhanh chóng nhớ riêng mà khơng cần can thiệp khơng có thêm chi phí phát sinh để trì Cache Coherency - Có thể sử dụng thiết bị sẵn có rẻ tiền như: vi xử lý off-the-shelf kết nối mạng Nhược điểm nhớ phân tán DM - Gây khó khăn cho lập trình viên, chương trình liên đới với nhiều chi tiết liên quan đến liệu giao tiếp vi xử lý - Các lần truy cập nhớ không đồng Viết cấu trúc lệnh song song cho ví dụ Các cấu trúc lệnh song song 6.1 Cấu trúc Parbegin Parend, Cobegin Coend Trong chương trình, tiến trình khơng sử dụng liệu chung hay đơacj lập với thực đồng thời Giả thiết lệnh S1, S2, …, Sn thực song song n tiến trình ( hay n xử lý) riêng biệt viết thành khối song song sau: Hoặc Cobegin Parbegin S1; S1; S2; S2; Sn; Sn; Parend Coend a Cấu trúc forall (parfor) in Par Nhiều số tiến trình (câu lệnh) tương tự cần phải bắt đầu thực lặp lại số lần Điều thực cấu trúc forall: forall (i = 0; i < n; i++) { S1; S2; Sn; } Hoặc sử dụng cấu trúc for (i = 0; i < n; i++){ S1; S2; Sn; } In Parrallel +> Cho ví dụ : ????? VD: Giải pháp song song thứ Trình bày loại máy tính SIMD (Single Instruction, Multiple Data) - Đơn thị, Đa liệu - Đơn thị: Tất vị xử lý p1, p2, …, pn thực thi thị chu kỳ đồng hồ cho Chẳng hạn, hình B, chu kỳ đồng hồ thứ nhất, n xử lý có thị load, chu kỳ đồng hồ thứ hai, n xử lý có thị load, … , chu kỳ đồng hồ thứ 4, n xử lý có thị Store,… - Đa luồng liệu: Mỗi xử lý hoạt động phần tử liệu khác với liệu xử lý khác - có nhiều liệu sử dụng đầu vào chu kỳ đồng hồ Chẳng hạn, hình B, chu kỳ đồng hồ thứ A(1), A(2), …, A(n); chu kỳ đồng hồ thứ hai B(1), B(2), …, B(n) ; … , chu kỳ đồng hồ thứ C(1), C(2), …, C(n); … - Loại máy tính phù hợp cho vấn đề chuyên ngành đặc trưng mức đồng cao, chẳng hạn xử lý đồ họa hình ảnh,… - Đồng thực tiền định - Hai kiến trúc xử lý hay sử dụng trường hợp là: Bộ xử lý mảng xử lý kiểu đường ống vectơ (Processor Arrays and Vector Pipelines) *Máy tính kiến trúc SIMD có CU (Control Unit) để điều khiển nhiều PE (Procesing Elements - phần tử xử lý) thực theo luồng lệnh CU phát lệnh điều khiển tới tất PE, PE thực phép toán mục liệu khác nhau, nghĩa PE có luồng liệu riêng Như SIMD cho phép Pi khác (hoặc ALU khác nhau) làm phép tính tốn hạng khác Máy tính SIMD có hỗ trợ cách xử lý vector, nghĩa gán thành phần vector cho Pi để thực tính tốn đồng thời Cấu trúc SIMD hình 1-9 Hình B Giả sử có n = 16, xử lí kết nối xáo trộn với xử lí: p3, p8, p11 p15 Giả sử có n xử lý p0, p1,…pn-1, với n = 2m , m N* Khi đường liên kết chiều từ i đến j xác định sau: J= 2i i 1 n n i 1 (1) n i n 1 (2) Theo đề ta có n=16 n/2=8 a Với P3 P3 tương ứng với i = < n/2 - = nằm trường hợp (1) 2i=2*3=6 Vậy P3 nối với P6 b Với P8 P8 tương ứng với i = = n/2 = nằm trường hợp (2) 2i+1-n = 2*8+1-16=1 Vậy P8 nối với P1 c Với P11 P11 tương ứng với i = 11 > n/2 = nằm trường hợp (2) 2i+1-n = 2*11+1-16=7 Vậy P11 nối với P7 d Với P15 P15 tương ứng với i = 15 > n/2=8 nằm trường hợp( 2) 2i+1-n = 2*15+1-16=15 Vậy P15 nối với Trình bày phương thức truy cập nhớ Các phương thức để xử lý đọc/ghi liệu: - CR (Concurrent Read) - Đọc đồng thời Nhiều xử lý đọc đồng thời vùng nhớ - ER (Exclusive Read)- Đọc loại trừ Giả sử có p xử lý, p xử lý đọc p vùng nhớ khác Tuy nhiên xử lý đọc vùng nhớ ngược lại - CW (Concurrent Write)- Ghi đồng thời Nhiều xử lý ghi đồng thời vào vùng nhớ thời điểm - EW (Exclusive Write)- Ghi loại trừ Giả sử có p xử lý, p xử lý ghi vào p vùng nhớ khác Tuy nhiên xử lý ghi vào vùng nhớ ngược lại Đặc biệt CW lại chia loại sau: a) Priority CW – ghi đồng thời có ưu tiên Các xử lý gắn mức ưu tiên có nhiều xử lý muốn ghi liệu vào vùng nhớ thứ tự ghi thực từ xử lý có ưu tiên cao đến xử lý có mức ưu tiên thấp Các mức ưu tiên gắn tĩnh động b) Common CW- ghi đồng thời chung Trường hợp thực tất xử lý ghi vào vùng nhớ ghi liệu giống Khi xử lý định để ghi liệu chung c) Arbitrary CW – ghi đồng thời tự Một số xử lý muốn ghi liệu lúc vào vùng nhớ, số định ghi liệu vào vùng nhớ d) Random CW – ghi liệu ngẫu nhiên Một xử lý phép ghi vào vùng nhớ ngẫu nhiên e) Combining CW- ghi đồng thời tổ hợp Tất liệu mà xử lý định ghi đồng thời vào nhớ tổ hợp lại thành giá trị ghi vào nhớ (chẳng hạn ghi mảng liệu, ghi quan hệ, danh sách kiểu Enumeration,…) 10.Vẽ trình bày nhớ chia sẻ truy cập ngang quyền (Uniform Memory Access (UMA)) Bộ nhớ chia sẻ truy cập ngang quyền (Uniform Memory Access (UMA)) (hay SMP(Symmetric Multi-Processor)) Hình 2.2 Shared Memory (UMA) + UMA hay SMP có nhiều xử lý, xử lý giải công việc riêng, ví dụ nhập xuất liệu, in thơng tin ra, + Các vi xử lý đồng - giống hệt phương diện + Các xử lý có quyền bình đẳng truy cập số lần truy cập vào nhớ + Loại CC-UMA (Cache Coherent UMA) UMA có lắp thêm Cache Coherent xử lý cập nhật vị trí nhớ chia sẻ, tất xử lý khác biết cập nhật Cache Coherent thực cấp phần cứng Tất xử lý làm việc nhờ vào chế chuyển mạch tập trung (Central Switching) để điều khiển việc truy cập tới nhớ chia sẻ Thời gian để truy cập vào nhớ cho nhớ xử lý nên có tên gọi mơ hình UMA nhớ chia sẻ Các chế chuyển mạch thể phương pháp sau: - Sử dụng chung đường dẫn (Common Bus) Dùng cách chuyển mạch chéo (Crossbar Switch) Dùng mạng đa giai đoạn (Multi Stage Network) 11.Viết đoạn gỉa mã thể việc biến đổi mã lệnh chương trình biến quy nạp làm tăng mức độ song song chương trình Xét đoạn chương trình sau: m=0 FOR i = to N m=m+k (m biến quy nạp) x[m] = a[i] ENDFOR Hiển nhiên hai câu lệnh có phụ thuộc liệu m sử dụng chéo vịng lặp Khi vịng lặp trước tính giá trị m giá trị sử dụng lệnh thứ hai vịng lặp thời khơng biết giá trị m Do đó, chúng phải thực Tuy nhiên, xét xảy m? Nếu với vòng lặp dự báo giá trị m loại bỏ phụ thuộc liệu liên quan đến m Lưu ý: Giá trị k bất biến vòng lặp cộng liên tiếp vào sau vòng lặp, vậy, vịng lặp thứ i, m = i*k Đoạn chương trình viết thành: FOR i = to N x[i*k] = a[i] ENDFOR Ta nhận thấy ngay, vòng lặp chu trình khơng phụ thuộc vào nhau, thực song song Cách biến đổi loại cho phép chuyển chương trình thành chương trình song song 12.Trình bày Xử lý mảng - Đề án nhiệm vụ tập trung Hai quy trình sử dụng : + Quy trình ( Chủ ): - Chia công việc cho quy trình để làm - Gửi cơng việc cho quy trình yêu cầu - Thu thập kết từ quy trình + Quy trình : - Nhận cơng việc từ quy trình chủ - Thực tính tốn - Gửi kết đến quy trình chủ 10 - Các quy trình khơng biết trước kh thực thi phần mảng cúng xử lý công việc chúng phải thực - Cân tải động xảy vào thời gian chạy : quy trình nhanh nhận nhiều việc để làm - Giải mã phương pháp: Các dịng chữ đậm thay đổi để xử lý song song Find out if I am MASTER or WORKER If I am MASTER Do until no more jobs Send to WORKER next job Receive results from WORKER End Tell WORKER no more jobs Else If I am WORKER Do until no more jobs Receive from MASTER next job calculate array element: a(i,j) = fcn(i,j) Send results to MASTER End Endif - Nhận xét: + Trong ví dụ đề án nhiệm vụ tập trung trên, tác vụ tính tốn phần tử riêng biệt mảng công việc tính tốn tỷ lệ truyền dạng mịn + Các giải pháp dạng mịn phải chịu thêm chi phí truyền thống khơng ( ngồi trời ) nhằm làm giảm thời gian nhàn rỗi + giải pháp tối ưu để phân phối việc làm nhiều với công việc số lượng công việc vấn đề phụ thuộc 11 13.Các loại phụ thuộc liệu dịng lệnh đơn Ví dụ 3.7 Xét dịng lệnh sau: S1: A := B + C S2: B := A + E S3: A := A + B Đồ thị phụ thuộc liệu ba dòng lệnh cho hình 3-3 Để nghiên cứu tiếp ký hiệu DEF (S) - Tập tất biến có giá trị bị thay đổi thực câu lệnh S, nghĩa biến nằm bên trái lệnh gán USE (S) - Tập tất biến sử dụng thực câu lệnh S, nghĩa biến tham gia vào biểu thức tính tốn Ví dụ3.9 C1: X = N + C2: Y = SQRT(M) C3: AREA = Pi+R*R Thì DEF (C1) = {X } DEF (C2) = {Y } DEF (C3) = {AREA } USE (C1) = {N } USE (C2) = {M } USE (C3) = {R } Hoặc S: B = A + C - 2.0 Thì DEF (S) = {B}, USE = {A, C} Phụ thuộc dòng liệu Lệnh S2 gọi phụ thuộc dòng liệu vào S1 DEF(S1) Phản phụ thuộc liệu Lệnh S2 gọi phản phụ thuộc dòng liệu vào S1 DEF(S2)USE (S1) Phản phụ thuộc liệu làm cho câu lệnh không thực song song Ví dụ phụ thuộc d4, d6, d7 loại phản phụ thuộc liệu Cạnh biểu diễn quan hệ phụ thuộc dòng liệu ký hiệu là: USE (S2) ≠ biến sử dụng dòng lệnh sau S2 phải tính lệnh S1 trước lệnh S2 Đây loại phụ thuộc hay xuất khó loại bỏ để thực song song 12 Chẳng hạn ví dụ 3.7 phụ thuộc d1, d2, d3 loại phụ thuộc dòng liệu Quan hệ phụ thuộc dòng liệu ký hiệu cạnh: Phản phụ thuộc liệu Lệnh S2 gọi phản phụ thuộc dòng liệu vào S1 DEF(S2) USE (S1) ≠ Phản phụ thuộc liệu làm cho câu lệnh khơng thực song song Ví dụ phụ thuộc d4, d6, d7 loại phản phụ thuộc liệu Cạnh biểu diễn quan hệ phụ thuộc dòng liệu ký hiệu là: Phụ thuộc liệu Hai lệnh S1và S2 gọi phụ thuộc liệu DEF(S1)DEF(S2) Sự phụ thuộc xuất hai nguyên nhân: 1- Do sử dụng lại tên biến có 2- Khi tăng giá trị biến dạng x += chẳng hạn Nếu lệnh thực đồng thời chúng ghi đè giá trị vào ô nhớ Do vậy, cần phải xác định xác thứ tự thực để ngăn ngừa việc sử dụng giá trị không Ví dụ phụ thuộc d5 loại phụ thuộc liệu Quan hệ phụ thuộc dòng liệu ký hiệu là: Phụ thuộc liệu vào Hai lệnh S1và S2 gọi phụ thuộc liệu vào USE (S2)USE (S1) Bởi lệnh truy cập không làm thay đổi giá trị biến đó, lệnh thực theo thứ tự được, nghĩa thực song song Quan hệ phụ thuộc dòng liệu ký hiệu là: Phụ thuộc điều khiển liệu Hai lệnh S1và S2 gọi phụ thuộc liệu việc thực lệnh phụ thuộc vào giá biến tính lệnh Quan hệ phụ thuộc dòng liệu ký hiệu là: 13 14.Cho n = Hãy xử lí nối hình với P42135 P21354 Ta lấy số n số tự nhiên sử dụng n! (n giai thừa ) xử lý, số xử lý tường ứng với hoán vị 123…n Bộ xử lý Pi liên kết với xử lý Pj j nhận từ i cách thay ký hiệu đầu i ký hiệu thứ k ( 2 0, b > 0, nhập góc , < < 3.1415; chức đưa cho tác vụ thực Phân chia theo chức năng, cho biết vấn đề chia thành tác vụ khác hay khơng Hình 5-5 Phân hoạch theo chức 20 20.*Cho hai vec tơ A B có 15 phần tử kiểu liệu số xử lý Hãy chương trình tính song song tổng hai véc tơ dùng tiến trình, theo hai cách Cho hai vec tơ A B có N phần tử kiểu liệu số Chương trình tính tổng hai véc tơ là: FOR (i = ; i < N; i++) { C[i] = A[i] + B[i]; //(1) } Thực song song hóa đoạn chương trình nào? Tương tự ví dụ nêu trên, giả sử ta có M tiến trình Chúng ta chia N phần tử thành M phần (thường ta giả thiết N chia hết cho M, nghĩa N/M số nguyên) gán phần cho tiến trình Cach 1: Chu trình viết thành: FOR (j = id * N/M ; j < (id+1) * N/M ; j++) { C(j) = A[j] + B[j] ; } Trong đó, id số hiệu tiến trình, chạy từ đến M-1 Tiến trình thứ i xử lý N/M phần tử liên tiếp kể từ i * N/M +1, ví dụ hình 4.4-1(a) Cach 2: Hoặc ta cho phép tiến trình truy cập xen kẽ vào phần tử mảng sau: Tiến trình Pi phần tử thứ i, sau bỏ qua M phần tử để xử lý phần tử tiếp theo, nghĩa truy cập đến i, i+M, i+2M , , ví dụ hình 4.1-1(b) Chu trình (1) viết sau: FOR (j=id ; j < N ; j+ = M) { C[j] = A[j] + B[j]; } Ví dụ: Khi N = 15 M = việc gán phần tử vector cho tiến trình thực theo cách sau: P1 P2 P3 P4 P5 P1 P2 P3 P4 10 13 11 14 9 12 15 11 12 13 14 (a) (b) Hình 4.1-1 Các cách phân chia chu trình mảng 21 P5 10 15 MỤC LỤC Vẽ trình bày máy tính kiểu MISD Vấn đề tính tốn song song khả thi, điều kết luận dựa yếu tố nào? Hai vec tơ A B có 20 phần tử kiểu liệu số xử lý Hãy chương trình tính tổng hai véc tơ theo tiến trình dùng cấu trúc Forall Cho bảng sau ba xử lí Hãy cân bàng tải cho q trình tính tốn song song Vẽ trình bày nhớ hỗn hợp Viết cấu trúc lệnh song song cho ví dụ Trình bày loại máy tính SIMD (Single Instruction, Multiple Data) - Đơn thị, Đa liệu Giả sử có n = 16, xử lí kết nối xáo trộn với xử lí: p3, p8, p11 p15 Trình bày phương thức truy cập nhớ 10 Vẽ trình bày nhớ chia sẻ truy cập ngang quyền (Uniform Memory Access (UMA)) 11 Viết đoạn gỉa mã thể việc biến đổi mã lệnh chương trình biến quy nạp làm tăng mức độ song song chương trình 10 12 Trình bày Xử lý mảng - Đề án nhiệm vụ tập trung 10 13 Các loại phụ thuộc liệu dòng lệnh đơn 12 14 Cho n = Hãy xử lí nối hình với P42135 P21354 14 15 Trình bày cách xử lý theo PHA xử lý có nhiều đơn vị chức Cho ví dụ 14 16 Trình bày lệnh tạo lập tiến trình huỷ bỏ tiến trình! 15 17 Viết đoạn gỉa mã thể việc đổi số tên biến để tránh phụ thuộc dòng liệu chu trình, nhằm tăng mức độ song song chương trình 16 18 Bộ nhớ phân tán giống khác nhớ chia sẻ truy cập không ngang quyền chỗ nào? …………………………………………………………………………………………17 19 Trình bày cách để phân hoạch tính toán tác vụ song song 19 20 *Cho hai vec tơ A B có 15 phần tử kiểu liệu số xử lý.Hãy chương trình tính song song tổng hai véc tơ dùng tiến trình, theo hai cách có thể.21 22