Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 17 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
17
Dung lượng
210,77 KB
Nội dung
TÍNH TỐN SONG SONG Mục đích: Tổng quan xử lý song song Các phương pháp thiết kế thuật toán song song Các vấn đề xử lý song song Một số công cụ xử lý song song (Pthread POSIX, MPI, …) Yêu cầu: Có kiến thức hệ thống: HĐH mạng; Có khả tư thuật tốn Biết sử dụng ngơn ngữ lập trình C++ Tài liệu tham khảo: [1] Al Geist, Adam Bequelin, et al., PVM: Parallel Virtual Machine, A User's Guide and Toturial for NetWorked Parallel Computing, http://www.netbib.org/pvm3/book/pvm-book.html [2] Introduction to Parallel computing http://www.llnl.gov/computing/tutorials/parallel_comp/index.html [3] IBM Parallel Enviroment Manuals http://www_1.ibm.com/servers/eserver/pseries/library/sp_books [4] MPI Tutorial http://www.llnl.gov/computing/mpi [5] Programming with POSIX pthreads http://www.awl.com/cseng/titles/0-201-63392-2 [6] POSIX pthreads programming http://www.llnl.gov/computing/tutorials/pthreads [7]Al Geist, Adam Bequelin, et al., PVM: Parallel Virtual Machine, A User's Guide and Toturial for NetWorked Parallel Computing, http://www.netbib.org/pvm3/book/pvm-book.html -1- Chương 1: Tổng quan tính tốn song song I Phân loại kiến trúc máy tính song song 1) Giới thiệu chung Tại phải xử lý song song? Yêu cầu thực tế cần thực khối lượng tính tốn lớn: tốn xử lý ảnh 3D, thăm dị dầu khí, dự báo thời tiết, (máy tính xử lý kiểu von Neumann khơng đáp ứng yêu cầu) Xử lý song song trình xử lý gồm nhiều tiến trình kích hoạt đồng thời tham gia giải tồn, nói chung xử lý song song thực hệ thống đa xử lý Phân biệt xử lý song song với tuần tự: Trong tính tốn với BXL thời điểm thực phép tốn Trong tính tốn song song nhiều BXL kết hợp với để giải toán giảm thời gian xử lý thời điểm thực đồng thời nhiều phép tốn Mục đích xử lý song song: thực tính tốn nhanh sở sử dụng nhiều BXL đồng thời Cùng với tốc độ xử lý nhanh hơn, việc xử lý song song giải toán phức tạp u cầu khối lượng tính tốn lớn Ba yếu tố dẫn đến việc xây dựng hệ thống xử lý song song: Tốc độ xử lý BXL theo kiểu von Neumann dần tiến tới giới hạn, cải tiến thêm dẫn tới đòi hỏi phải thực xử lý song song Hiện giá thành phần cứng (CPU) giảm mạnh, tạo điều kiện để xây dựng hệ thống có nhiều BXL với giá thành hợp lý Sự phát triển cơng nghệ mạch tích hợp (VLSI) cho phép tạo hệ thống có hàng triệu transistor chip Vấn đề xử lý song song liên quan trực tiếp đến: kiến trúc máy tính, phần mềm hệ thống (hệ điều hành), thuật tốn ngơn ngữ lập trình, v.v Hệ thống tính song song: tập BXL (thường loại) kết nối với theo kiến trúc để hợp tác với hoạt động trao đổi liệu với Chúng ta dễ nhận thấy độ phức tạp xử lý song song lớn xử lý nhiều, tập trung chủ yếu phương diện trao đổi liệu đồng tiến trình Để cài đặt thuật tốn song song máy tính song song phải sử dụng ngơn ngữ lập trình song song Nhiều ngơn ngữ lập trình song song sử dụng như: Fortran 90, Pthread với Fortran/C++, MPI với C/C++, PVM với C/C++, OpenMP với C/C++, v.v -2- 2) Kiến trúc máy tính Máy tính xây dựng từ khối sở: Bộ nhớ: để lưu trữ liệu Các đơn vị logic số học: thực phép toán ký hiệu ALU Các phần tử điểu khiển:Bộ điều khiển CU thiết bị vào/ra liệu Các Bus trao đổi liệu Cách thức liên kết khối với cho ta biết kiến trúc máy tính Trong hệ thống máy tính thơng thường có hai khối quan trọng nhớ BXL BXL xử lý liệu lưu trữ nhớ thông qua thị (các câu lệnh) Các câu lệnh lưu nhớ Trong hệ thống liệu thực theo hai chiều, đọc ghi vào nhớ Hình 1-1 mơ tả hoạt động mơ hình máy tính kiểu von Neumann Bộ nhớ Câu lệnh Ghi liệu Đọc liệu Bộ xử lý Hình 1-1 Sự liên kết nhớ xử lý 3) Phân loại kiến trúc máy tính Dựa vào đặc tính số lượng BXL, số chương trình thực hiện, cấu trúc nhớ, v.v., Michael Flynn (1966) phân máy tính thành loại sau: Mơ hình SISD (Simple Instruction Simple Data): Đơn lệnh, đơn liệu Máy tính loại SISD có CPU, thời điểm thực lệnh đọc, ghi mục liệu Tất máy tính SISD có ghi register gọi đếm chương trình (program counter) sử dụng để nạp địa lệnh kết thực theo thứ tự xác định câu lệnh Hình 1-2 mơ tả hoạt động máy tính theo mơ hình SISD Đơn vị điều khiển Tín hiệu điều khiển BXL Luồng kết Luồng lệnh Bộ nhớ Hình 1-2 Mơ hình kiến trúc SISD -3- Luồng liệu Mơ hình SISD cịn gọi SPSD (Simple Program Simple Data), đơn chương trình đơn liệu Đây mơ hình máy tính kiểu von Neumann Mơ hình SIMD (Simple Instruction Multiple Data ): Đơn lệnh, đa liệu Máy tính loại SIMD có đơn vị điều khiển để điều khiển nhiều đơn vị xử lý (nhiều đơn vị) thực theo luồng câu lệnh CU phát sinh tín hiệu điều khiển tới tất phần tử xử lý, BXL thực phép toán mục liệu khác nhau, nghĩa BXL có luồng liệu riêng Hình 1-3 mơ tả hoạt động máy tính theo mơ hình SIMD, cịn gọi SPMD Đơn vị điều khiển (CU) Tín hiệu điều khiển Phần tử xử lý Phần tử xử lý Tín hiệu điều khiển Phần tử xử lý n Hình 1-3 Mơ hình kiến trúc SIMD Mơ hình SIMD cịn gọi SPMD, đơn chương trình đa liệu Đây mơ hình máy tính phổ biến có thị trường như: DAP Connection Machine CM-2 -4- Mơ hình MISD (Multiple Instruction Simple Data): Đa lệnh, đơn liệu Máy tính loại MISD ngược lại với SIMD Máy tính MISD thực nhiều chương trình (nhiều lệnh) mục liệu, nên cịn gọi MPSD (đa chương trình, đơn liệu) Kiến trúc kiểu chia thành hai nhóm: Lớp máy tính gồm nhiều đơn vị xử lý (PU) khác nhận lệnh khác để thực mục liệu Đây kiến trúc khó chưa có loại máy tính sản xuất theo loại Mơ hình kiến trúc MISD mơ tả hình 1-4 Luồng lệnh CU Luồng lệnh CU Luồng lệnh n CU n Phần tử xử lý Phần tử xử lý Luồng liệu Phần tử xử lý n Hình 1-4 Mơ hình kiến trúc MISD Lớp máy tính có luồng liệu gửi theo dãy CPU liên tiếp Đây loại kiến trúc hình ống, xem xét sau: Nguyên lý hình ống (pipelined) dựa vào phương pháp phân đoạn chia nhỏ tiến trình tính toán thành số đoạn nhỏ để thực pha liên tiếp Tất giai đoạn tiến trình thực tuần tự, thực xong bắt đầu thực tiến trình Mỗi pha thực xong gửi kết cho pha Như vậy, cách thực theo nguyên lý hình ống, giai đoạn cơng việc thực giai đoạn khác nạp liệu vào, liệu vào giai đoạn kết giai đoạn trước Ví dụ, hình 1-5 mơ tả tiến trình phân thành giai đoạn thực tuần tự, thực song song theo nguyên lý hình ống để tăng tốc độ tính tốn phải thực nhiều tiến trình Một tiến trình chia thành giai đoạn: Pha Pha Pha Pha Thực hai tiến trình phải qua giai đoạn: Pha Pha Pha Pha Pha -5- Pha Pha Pha Thực theo hình ống hai tiến trình cần trải qua giai đoạn: Pha Pha Pha Pha Pha Pha Pha Pha Hình 1-5 Thực hình ống hai tiến trình gồm giai đoạn Nếu ký hiệu Si thời gian cần thiết để thực giai đoạn thứ i thì: Tổng thời gian tính tốn là: 2*(S1 + S2 + S3+ S4) Tổng thời gian tính tốn hình ống là: S1 + S2 + S3+ S4 + S4 CU ALU ALU ALU Bộ nhớ Hình 1-6 Xử lý hình ống theo ALU *) Các xử lý mảng tâm thu SAP (Systolic Array Processor) Năm 1978 Kung Leiserson đề xuất loại kiến trúc gọi mảng tâm thu (Systolic Array) cho tính tốn đặc biệt Mảng tâm thu viết tắt SA, mảng đơn vị xử lý kết nối cục với Trong mảng tâm thu SA, PE (Processing Element) xem tế bào (một ô mảng) bao gồm: Một số ghi (register) Một cộng (adder) Các mạch điều khiển Đơn vị logic-số học ALU Các ô lân cận trao đổi liệu với Dựa vào SA người ta xây dựng kiến trúc SAP -6- Dữ liệu vào Systolic Array Tín hiệu Host Processor Controller Kết Hình 1-7 Kiến trúc xử lý mảng tâm thu Trong kiến trúc SAP nêu trên: điều khiển (Controller) làm nhiệm vụ giao diện cho BXL (Host Processor) gửi tín hiệu điều khiển q trình vào/ra liệu cho SA Hoạt động hệ thống theo nhịp lặp lại cách đặn để tận dụng khả song song tất phần tử xử lý SA tổ chức theo nhiều cấu hình tơpơ khác Hình 1-8 mơ tả số cấu hình phổ biến SA (a) (c) (b) Hình 1-8 Một số cấu hình phổ biến mảng tâm thu: (a) mảng tuyến tính, (b) mảng hình tam giác, (c) mảng hai chiều hình vng Hiệu SA phụ thuộc nhiều vào đặc tính vào/ra liệu Nó hiệu toán mà số liệu đọc/ghi thực với nhịp độ cao, đều liên tục toán xử lý ảnh, qui hoạch tuyến tính, v.v Ví dụ, xét tốn nhân hai ma trận cỡ × 2: A * B = C a11 a12 a21 a22 * b11 b12 c11 c12 b21 b22 = c21 c22 Hiển nhiên Cij = ∑aik*bkj (k=1,2) -7- Chúng ta thiết kế SA có PE () để thực nhân hai ma trận sau: Nhập theo hàng a11 b11 b12 b21 Nhập theo cột a22 a21 a12 b22 c21 c22 c12 c11 Hình 1-9 Kiến trúc SA để thực nhân hai ma trận Năm 1986 Intel kết hợp với Kung xây dựng hệ máy tính kiểu SAP đặt tên iWrap System, version sau cải tiến vào năm 1990 Trong năm 1990 cịn có seri máy tính loại mini-super Convex Computer Corporation xây dựng từ CPU 64 bit gắn với nhớ chung Mơ hình MIMD (Multiple Instruction Multiple Data): Đa luồng lệnh, đa luồng liệu Máy tính loại MIMD cịn gọi đa BXL, BXL thực luồng lệnh (chương trình) khác luồng liệu riêng Hầu hết hệ thống MIMD có nhớ riêng truy cập vào nhớ chung (global) cần, giảm thiểu thời gian trao đổi liệu BXL hệ thống Đây kiến trúc phức tạp nhất, mơ hình hỗ trợ xử lý song song cao có nhiều máy tính sản xuất theo kiến trúc này, ví dụ: BBN Butterfly, Alliant FX, iSPC Intel, v.v Mơ hình kiến trúc MIMD mơ tả hình 1-10 Hình 1-10 Mơ hình kiến trúc MIMD Luồng lệnh CU CU Luồng lệnh CU n Luồng lệnh n -8- Phần tử xử lý Phần tử xử lý Phần tử xử lý n Luồng liệu Luồng liệu Luồng liệu n 4) Song song hóa máy tính Các hệ thống nhớ phân cấp Tốc độ thực phép toán BXL nhanh nhiều so với việc truy cập vào nhớ; Tốc độ truy cập vào nhớ (RAM) nhanh nhiều so với việc truy cập vào nhớ Hệ thống nhớ phân cấp mơ tả hình 1-11 CPU (Registers) Cache Tăng tốc độ truy cập Main Memory Fixed Disks Tăng khả lưu trữ Magnetic Tapes Hình 1-11 Hệ thống nhớ phân cấp Các ghi sử dụng trực tiếp cho ALU Bộ nhớ cache xem vùng đệm BXL nhớ Sự song song hóa trao đổi liệu theo cấu trúc phân cấp cách khai thác chung để cải tiến hiệu xử lý hệ thống Ví dụ, liệu lấy từ nhớ vào nhớ đồng thời gửi liệu từ cache vào cho CPU Đa chương trình chia sẻ thời gian Các hệ điều hành máy tính đơn xử lý cho phép thực song song dựa vào cách tiếp cận phần mềm Trong khoảng thời gian, có nhiều tiến trình truy cập vào liệu từ thiết bị vào/ra chung (VD:Cổng giao tiếp, Đĩa cứng, CD, …) Chúng ta biết phần lớn chương trình có hai phần: phần vào/ra thành phần tính tốn q trình xử lý Các hệ điều hành đa chương trình luân phiên thực chương trình khác Để thực việc HĐH sử dụng Bộ lập lịch chia sẻ thời gian làm nhiệm vụ phân chia CPU cho tiến trình khoảng thời gian cố định theo phương pháp quay vịng trịn Bằng cách đó, tất tiến trình sẵn sàng để thực sở phép sử dụng CPU tài nguyên khác hệ thống -9- Do vậy, nguyên tắc việc phát triển chương trình song song máy đơn BXL thực có hệ điều hành cho phép nhiều tiến trình thực hiện, nghĩa xem hệ thống đa xử lý Bài tập 1.1 Nêu đặc trưng kiến trúc máy tính von Neumann 1.2 Các kiến trúc máy tính phân loại nào? dựa vào yếu tố để phân loại? 1.3 Một hệ thống gọi máy tính song song? 1.4 Máy tính kiểu MIMD khác với mạng máy tính nào? 1.5 Nêu nguyên lý xử lý theo hình ống Những tốn có tính chất thích hợp với kiến trúc xử lý hình ống? 1.6 Cần nhịp để thực nhân hai ma trận 100×100 SAP có 100×100 phần tử xử lý? Nếu sử dụng hệ 1000×1000 PE hệ tốt (nhanh hơn)? 1.7 Một công việc chia thành m công việc con, cơng việc địi hỏi đơn vị thời gian để thưc Hỏi cần đơn vị thời gian để hệ thống hình ống gồm k-bộ xử lý tuyến tính (gồm m-pha thực hiện) thực n nhiệm vụ cho trước? - 10 - II Thiết kế thuật toán song song Nguyên lý thiết kế thuật toán song song Như nêu trên, xử lý song song ta phải xét kiến trúc máy tính thuật tốn song song Những thuật tốn, có số thao tác thực đồng thời gọi thuật toán song song Để thiết kế thuật toán song song cần phải thực hiện: - Phân chia liệu cho tác vụ - Chỉ cách truy cập chia sẻ liệu - Phân tác vụ cho tiến trình (bộ xử lý) - Các tiến trình đồng Có ngun lý thiết kế thuật tốn song song: Các nguyên lý lập lịch: mục đích giảm tối thiểu xử lý sử dụng thuật toán cho thời gian tính tốn khơng tăng (xét theo khía cạnh độ phức tạp) Ngun lý hình ống: Nguyên lý áp dụng toán xuất dãy thao tác {T1, T2, , Tn}, Ti+1 thực sau Ti kết thúc Nguyên lý chia để trị: Chia toán thành phần nhỏ tương đối độc lập với giải chúng cách song song Nguyên lý đồ thị phụ thuộc liệu: Phân tích mối quan hệ liệu tính tốn để xây dựng đồ thị phụ thuộc liệu dựa vào để xây dựng thuật toán song song Nguyên lý điều kiện tranh đua: Nếu hai tiến trình muốn truy cập vào mục liệu chia sẻ chúng phải tương tranh với nhau, nghĩa chúng cản trở lẫn Ngoài nguyên lý nêu trên, thiết kế thuật tốn song song ta cịn phải ý đến kiến trúc hệ thống tính tốn: Kiến trúc tính tốn phù hợp với toán? Những toán loại xử lý hiệu kiến trúc song song cho trước? Ví dụ: Những máy tính kiểu SIMD khơng thích hợp để giải tốn, có nhiều tiến trình dị Ngược lại, máy tính kiểu MIMD lại khơng hiệu để giải tốn có nhiều tiến trình cần phải đồng - 11 - Ví dụ thiết kế thuật tốn song song phân rã phụ thuộc liệu Quay trở lại vấn đề đặt ban đầu, muốn tận dụng khả tính tốn song song nhiều máy tính, điều quan trọng tìm thuật tốn thích hợp Nhiều phụ thuộc tính tốn “giá trị sau tính dựa vào giá trị trước” “bền”, ta “tách” để chia cho nhiều máy thực Sau ví dụ minh họa: Bài tốn: Cho biết a α k ,β k với k = 1,2,3 , n = m => tính a n = α n a n −1 + β n (1) với số BXL không giới hạn Việc giá trị a n phải tính tốn qua a n −1 khiến có cảm giác việc tìm giá trị a n định phải thực qua n bước Tức phải n= m bước tính cho dù ta huy động nhiều máy tính Tuy nhiên việc lại không hẳn vậy, ta cần có m bước tính mà thơi! Để thấy điều thực biến đổi an = α n (α n −1an − + β n −1 ) + β n = α nα n −1an − + β n + α n β n −1 Đặt λ n = λ n (n=1,2,3, ) ) α n β n −1 + β n (chỉ bước tính để tìm an = α nα n −1an − + λn (*) Công thức (*) cho thấy là: cần biết a tính tất giá trị a , a , a , , a m , thêm bước tính (sử dụng nhiều máy tính) tính tất giá trị với số lẻ Cụ thể là, từ (1) => a2 n +1 = α n +1a2 n + β n +1 Ký hiệu Tm số bước tính cần để tính tất m giá trị a1 , a , a3 , , a 2m Lưu ý bước tính biết tất giá trị λ n (Tính λ n nhiều máy) Như Tm = + Tm −1 (2 bước tính: a2m , a2m −1 ) Từ suy Tm = 2m Như không cần đến m bước tính, mà cần có 2m bước Bài tập 1: Thiết kế thuật tốn song song tính giá trị điểm x đa thức Pn ( x ) = α n x n + α n −1x n −1 + + α với n = m - 12 - Thuật toán xếp so sánh đổi chỗ Một thuật toán xếp đơn giản thực so sánh hai phần tử liền kề với chúng chưa theo thứ tự cần đổi chỗ chúng với Quá trình lặp lại khí khơng cịn cặp khơng thoả mãn dừng 3.1 Thuật toán tuần tự: xếp mảng a[n] theo thứ tự tăng dần - bọt – buble sort for(i=n-1; i > 0; i ) for(j=0; j < i; i++){ k = j + 1; if(a[j] > a[k]){ temp = a[j]; a[j] = a[k]; a[k] = temp; } } } 3.2 Thuật tốn song song Chúng ta sử dụng n tiến trình kết hợp theo nguyên lý hình ống để xếp mảng a[n] Hệ thống chia thành hai pha: pha chẵn pha lẻ Pha chẵn: tiến trình đánh số chẵn so sánh với tiến trình (tiến trình có số lẻ), giữ phần tử lớn đổi liệu với tiến trình Pha lẻ: tiến trình có số lẻ hoạt động tương tự Ví dụ: n = dãy số ban đầu 4, 2, 7, 8, 5, 1, 3, Pha \ Tiến trình P0 P1 P2 P3 P4 P5 P6 P7 8 2 8 4 5 6 7 Hình 2-1 Sắp xếp theo nguyên lý hình ống - 13 - Ở pha thứ 7, khơng có cặp phải đổi chỗ thuật toán dừng cho kết dãy xếp Trong hình 5-4, mũi tên hai chiều đứt nét để cặp so sánh với khơng cần đổi chỗ, cịn mũi tên nét liền phải đổi giá trị cho Giả thiết liệu lưu tiến trình chẵn B tiến trình lẻ A Thuật tốn song song theo hình ống mơ tả mơ hình truyền thơng điệp sau: * Pha chẵn Pi, i = 0, 2, 4, , n-2 (chẵn) Pi, i = 1, 3, 5, , n-3 (lẻ) recv(&A, Pi+1); send(&A, Pi-1); send(&B, Pi+1); recv(&B, Pi-1); if(A > B) B = A; if(A > B) A = B; * Pha lẻ Pi, i = 1, 3, 5, , n-3 (lẻ) Pi, i = 0, 2, 4, , n-2 (chẵn) send(&A, Pi+1); recv(&A, Pi-1); recv(&B, Pi+1); send(&B, Pi-1); if(A > B) A = B; if(A > B) B = A; } } Thuật tốn có độ phức tạp O(n) Bài tập: Song song thuật toán sx trộn, sx nhanh Ví dụ vê thiết kế thuật tốn song song phương pháp chia để trị Tính tốn số PI nhiều máy Người ta tính gần giá trị số π cách đếm số điểm rơi vào hình trịn đơn vị, mà điểm reo cách ngẫu nhiên vào hình vng ngoại tiếp Tỷ lệ số điểm rơi vào bên hình trịn so với tồn số lượng điểm reo dần tiến tới tỷ lệ diện tích hình trịn so với hình vng Một thí nghiệm thực máy tính Ở điểm biểu diễn hai số – tọa độ (x,y) Trình “reo” 20000 điểm ứng với vòng lặp “for k=0; k