Thông tin tài liệu
Khóa luận tốt nghiệp đại học GVHD: CaoThanh Sơn Danh mục hình vẽ Hình 1.1.1.3.1: Website dự án BIOGRID Hình 1.1.1.3.2: Website dự án DOE Science Grid 10 Hình 1.1.1.3.3: Tính tốn lưới 11 Hình 1.1.1.4.1: Mơ hình lưới – Grid 16 Hình 1.1.1.4.2: Mơ hình Globus 16 Hình 1.1.1.6.1: Sơ đồ hệ thống Grid phân viện CNTT TPHCM 20 Hình 1.1.1.6.2: Sơ đồ kết nối hệ thống Grid với hệ thống KISTI 21 Hình 1.1.2.2.1: Nguyên lý hoạt động Cluster 24 Hình 1.1.1.2.5: Sơ đồ nguyên lý Cluster lớn 26 Hình 1.2.1.1: Sự khác trình đơn luồng q trình đa luồng 28 Hình 1.2.1.4.1: Mơ hình Nhiều- Một 31 Hình 1.2.1.4.2: Mơ hình – 31 Hình 1.2.1.4.3: Mơ hình nhiều-nhiều 32 Hình 1.2.1.4.4: Mơ hình mứ 32 Hình 2.3.1.1:Phân ma trận thành tác vụ 40 Hình 2.3.1.2: Nhân hai ma trận A B với phần trung gian ma trận D 42 Hình 2.3.1.3: Phân hoạch toán nhân ma trận theo trung gian chiều 42 Hình 2.3.1.4: Mơ tả bước phát sinh phân hoạch thăm dị 44 Hình 2.3.1.5: Phân hoạch lai để tìm giá trị nhỏ mảng 46 Hình 2.3.2.1: Hai cách phân hoạch tác vụ đồng hóa tiến trình 47 Hình 2.3.2.1: (a) Phân chia theo chiều (b) phân chia theo hai chiều 48 Hình 3.1.1: Biểu đồ OpenMP xây dựng 55 Hình 3.3.2: Mơ tả cấu trúc thực khối mã xử lý luồng song song 56 Hình 3.3.3 Mơ hình Fork-Join OpenMP 57 Hình 3.3.4: Mơ hình thể tiến trình song song lồng 58 Hình 3.4.4.1: Mơ tả STATIC, DYNAMIC, GUIDED 65 Hình 3.8.1: Hình mơ tả cấu trúc tổng qua OPenMP 94 Hình 4.1.1: Hình ảnh biểu kết thuật tốn tính tổng 96 Hình 2.1: Mơ tả nhân ma trận theo khối song song 98 Hình 4.2.2.2: Mơ tả bước chuyển ma trận bước 99 SVTH: Trần Thị Lan Hương Khóa luận tốt nghiệp đại học GVHD: CaoThanh Sơn Hình 4.2.2.3: Mơ tả theo khối màu 99 Hình 4.2.2.4: Mơ tả bước nhân tác vụ P 1,2 99 Hình 4.2.2.6: Bảng kết đồ thị nhân ma trận 101 Hình 4.3.1 : Mơ tả ví dụ với mảng có n=8 102 SVTH: Trần Thị Lan Hương Khóa luận tốt nghiệp đại học GVHD: CaoThanh Sơn Mục lục PHẦN MỞ ĐẦU CHƯƠNG I: CÁC MƠ HÌNH THUẬT TỐN SONG SONG 1.1 Bộ nhớ phân tán (Distributed Memory System) 1.1.1 Tính tốn lưới (Grid Computing) .8 1.1.1.1 Giới thiệu chung .8 1.1.1.2 Định nghĩa tính tốn lưới – Grid Computing 1.1.1.3 Tổng quan mơ hình tính tốn lưới .8 1.1.1.4 Các giao thức dịch vụ lưới (Grid Protocol and Services) 15 1.1.1.5 Một số dạng lưới – Grid 17 1.1.1.6 Tình hình nghiêm cứu tính tốn lưới Việt Nam 19 1.1.2 Tính tốn dạng Cluster 21 1.1.1.2.1 Tổng quan mơ hình cụm 21 1.1.1.2.2 Cấu trúc Cluster 23 1.1.1.2.3 Cluster nhiều địa điểm phân tán 25 1.1.1.2.4 Tối ưu hóa thiết bị lưu trữ Cluster 25 1.1.1.2.5 Tính mở Cluster 26 1.2 Bộ nhớ chia sẻ .27 1.2.1 Đa luồng (Pthread) 25 SVTH: Trần Thị Lan Hương Khóa luận tốt nghiệp đại học GVHD: CaoThanh Sơn 1.21.1 Tổng quan đa luồng 25 1.2.1.1.2 Các lợi ích tiến trình đa luồng 29 1.2.1.1.3 Luồng người dùng luồng nhân 29 1.2.1.4 Các mơ hình đa luồng 30 1.2.1.5 Cấp phát luồng 32 1.2.1.6 Giới thiệu Pthreads 35 1.2.2 Đa xử lý (OpenMP) 37 CHƯƠNG II: CÁC PHƯƠNG PHÁP THIẾT KẾ THUẬT TOÁN SONG SONG 38 2.1 Cách xây dựng chương trình song song 38 2.2 Các thuật ngữ 38 2.2.1 Phân hoạch 38 2.2.2 Tác vụ 38 2.2.3 Granularity 38 SVTH: Trần Thị Lan Hương Khóa luận tốt nghiệp đại học 2.3 Thiết kế GVHD: CaoThanh Sơn thuật toán song song 39 2.3.1 Một số phương pháp phân hoạch 39 2.3.1.1 Phân hoạch đề quy 39 2.3.1.2 Phân hoạch liệu 39 2.3.1.3 Phân hoạch thăm dò 42 2.3.1.4 Phân hoạch suy đoán 44 2.3.1.5 Kết hợp phép phân hoạch ( phân hoạch lai) 45 2.3.2 Ánh xạ 46 2.3.2.1 Ánh xạ tĩnh (Static) 47 2.3.2.2 Ánh xạ động (Dynamic) 47 2.3.3 Một số phương pháp giảm biết chi phí tương tác 48 2.3.3.1 Tối ưu hóa liệu cục 48 SVTH: Trần Thị Lan Hương Khóa luận tốt nghiệp đại học GVHD: CaoThanh Sơn 2.3.3.2 Cực tiểu tần số tương tác 49 2.3.3.3 Giảm thiểu tối đa điểm xung đột, tranh chấp 49 2.3.3.4 Đan xen phép tính tương tác 51 2.3.3.5 Tạo liệu hay phép tính tốn 51 2.3.4 Các mơ hình thuật tốn song song 52 2.3.4.1 Mơ hình liệu song song 52 2.3.4.2 Mô hình Master-Slave 53 2.3.4.3 Mơ hình dây chuyền (pipeline) hay Producer-Consumer 54 2.3.4.4 Mơ hình lai 54 CHƯƠNG III: LẬP TRÌNH OpenMP 55 3.1 Khái quát 55 3.2 Giới thiệu 55 SVTH: Trần Thị Lan Hương Khóa luận tốt nghiệp đại học GVHD: CaoThanh Sơn 3.3 Mơ hình lập trình OpenMP 56 3.4 Tham số OpenMP 59 3.4.1 Định dạng tham số cho C/C++ 59 3.4.2 Phạm vi tham số 60 3.4.3 Cấu trúc vùng song song 60 3.4.4 Cấu trúc chia sẻ công việc 63 3.4.4.1 Chỉ dẫn cấu trúc chia sẻ công việc Do/for 64 3.4.4.2 Chỉ dẫn cấu trúc chia sẻ công việc SECTIONS 67 3.4.4.3 Chỉ dẫn cấu trúc chia sẻ công việc SINGLE 68 3.4.5 Phối hợp cấu trúc chia sẻ công việc song song 69 3.4.5.1 Chỉ dẫn song song DO/for 69 3.4.5.2 Chỉ dẫn song song SECTIONS 69 SVTH: Trần Thị Lan Hương Khóa luận tốt nghiệp đại học GVHD: CaoThanh Sơn 3.4.6 Cấc trúc TASK 70 3.4.7 Đồng cấu trúc 70 3.4.7.1 Cấu trúc đồng dẫn MASTER 71 3.4.7.2 Đồng hoá cấu trúc dẫn CRITICAL 72 3.4.7.3 Cấu trúc đồng dẫn BARRIER 73 3.4.7.4 Cấu trúc đồng dẫn ATOMIC 74 3.4.7.5 Cấu trúc đồng dẫn FLUSH 74 3.4.7.6 Chỉ dẫn đồng hoá ORDERED 75 3.4.7.7 Cấu trúc đồng dẫn TASKWAIT 75 3.4.8 Chỉ dẫn THREADPRIVATE 76 3.4.9 Các mệnh đề phạm vi liệu (Data Scope Attribute Clauses) 78 3.4.9.1 Mệnh đề PRIVATE 78 SVTH: Trần Thị Lan Hương Khóa luận tốt nghiệp đại học GVHD: CaoThanh Sơn 3.4.9.2 Mệnh đề SHARED 79 3.4.9.3 Mệnh đề DEFAULT 80 3.4.9.4 Mệnh đề FIRSTPRIVATE 80 3.4.9.5 Mệnh đề LASTPRIVATE 80 3.4.9.6 Mệnh đề COPYIN 81 3.4.9.7 Mệnh đề COPYPRIVATE 81 3.4.10 Tổng thể Mệnh đề/Chỉ dẫn 83 3.4.11 Kết nối dẫn Quy tắc lồng 84 3.4.11.1 Kết nối dẫn 84 3.4.11.2 Quy tắc lồng 84 3.5 Thư viện Run-time thông thường 85 3.5.1 OMP_SET_NUM_THREADS .85 3.5.2 SVTH: Trần Thị Lan Hương OMP_GET_NUM_THREADS Khóa luận tốt nghiệp đại học GVHD: CaoThanh Sơn 86 3.5.3 OMP_GET_MAX_THREADS 86 3.5.4 OMP_GET_THREAD_NUM 86 3.5.5 OMP_GET_NUM_PROCS 87 3.5.6 OMP_IN_PARALLEL 87 3.5.7 OMP_SET_DYNAMIC 87 3.5.8 OMP_GET_DYNAMIC 88 3.5.9 OMP_SET_NESTED 88 3.5.10 OMP_GET_NESTED 88 3.5.11 OMP_INIT_LOCK 89 3.5.12 OMP_DESTROY_LOCK 89 3.5.12 OMP_DESTROY_LOCK 89 3.5.14 SVTH: Trần Thị Lan Hương OMP_UNSET_LOCK Khóa luận tốt nghiệp đại học GVHD: CaoThanh Sơn CHƯƠNG IV: ỨNG DỤNG SONG SONG HĨA MỘT SỐ THUẬT TỐN TRÊN MA TRẬN 4.1 Tính tổng từ 1->N 4.1.1.Thuật tốn Một tốn tính tổng từ ->n (n số nguyên dương) thường đưa ngơn ngữ lập trình Ý tưởng thuật tốn: Bởi tổng 1->N tổng dãy số nguyên liên tiếp tăng dần nên xây dựng vòng lặp xác định N Khởi tạo biến i vịng lặp 1.Có biến S khởi tạo dùng lưu trữ kết phép cộng S với i lần lặp Tổng giá trị S thực xong Thuật toán toán sau: Sum(N) Khởi tạo biến S=0; //S dùng lưu tổng số for iN, ta phân chia liệu vào khối [1,N] thành thành khối tương Từ ánh xạ vào tiến trình tĩnh khối liệu thực tính tống khối liệu mà tiến trình đảm nhận Sau điểm cuối tiến trình đồng cập nhật vào tiến trình chủ copy Các bước thuật toán song song: Khởi tạo S=0; Phân chia liệu khối [1,N] tĩnh đến tiến trình xử lý thực phép biến đổi cộng đưa danh sách, với biến i sử dụng riêng cho tiến trình song song Thực lặp i tiến trình để tính tổng S=S+i Kết thúc đoạn song song 4.1.3 Đánh giá thuật toán - Thuật toán : T(n)= (n) - Thuật toán song song : T(n)= (n/p) , với p số tiến trình thực SVTH: Trần Thị Lan Hương Khóa luận tốt nghiệp đại học GVHD: CaoThanh Sơn - Tốc độ xử lý : S= Ts/Tp= p (Ts:Thời gian thực tuần tự,Tp thời gian thực song song) - Bảng kết thời gian chạy chương trình N Thuật toán Thuật toán song song 100 1000 10000 100000 1000000 10000000 100000000 0.00279 0.0176 0.1423 0.745 1.034 3.24 0.00307 0.00978 0.0824 0.25 0.45 1.3 9.2 7.5 Hình 4.1.1: Hình ảnh biểu kết thuật tốn tính tổng 4.2 Nhân hai ma trận 4.2.1 Thuật toán Ý tưởng thuật toán: Thực nhân ma trận Anxn, Bnxn kết lưu vào ma trận Cnxn ta áp dụng công thức : Ci,j= ∑ Ai,k*Bk,j (k=1 n) Ở ta cần có vịng lặp i,k,j đến n Mỗi lần tính Ci,j cần khởi tạo Ci,j=0 Từ ta có thuật tốn nhân ma trận C=A*B kích thước n sau for i←0 to n-1 for k←0 to n-1 Ci,j ←0 for k←0 n-1 SVTH: Trần Thị Lan Hương Khóa luận tốt nghiệp đại học GVHD: CaoThanh Sơn 5.Ci,j←Ai,j*Bj,k 6.end for 7.end for 8.end for 4.2.2 Thuật toán song song Thuật tốn 1: Nếu thuật tốn hóa song song hóa thuật toán nhân ma trận Gọi p số lượng tác vụ ánh xạ 1-1 vào tiến trình Mỗi tác vụ chịu trách nhiệm tính toán phần tử Ci,j ma trận kết C, với 0≤i, j= Cpn2 => n>=Cp * Kết thực thuật toán: N 10 50 100 150 200 Thuật toán Thuật toán song song Thuật toán Cannon 0.0025 0.0014 0.01 0.009 0.99 0.57 3.05 2.45 10.68 5.78 SVTH: Trần Thị Lan Hương Khóa luận tốt nghiệp đại học GVHD: CaoThanh Sơn Hình 4.2.2.6: Bảng kết đồ thị nhân ma trận 4.3 Ứng dụng xếp nhanh (Quicksort) 4.3.1 Giới thiệu Sắp xếp phân đoạn (Quick sort) kiểu cải tiến phương pháp xếp kiểu đổi chỗ Đây phương pháp tốt, người sáng lập C.A.R Hoare Ý tưởng phương pháp: Chọn khóa ngẫu nhiên dãy làm “chốt” (pivot) Mọi phần tử nhỏ khóa “chốt” phải xếp vào ví trí trước “chốt”, phần tử khóa “chốt” phải xếp vào ví trí sau “chốt” Muốn vậy, phần tử dãy phải so sánh với khóa chốt đổi ví trí cho nhau, cho khóa “chốt” Khi việc đổi chỗ thực xong, dãy chia làm hai phần: đoạn gồm phần tử nhỏ khóa “chốt”, đoạn gồm phần tử lớn khóa “chốt” 4.3.2 Thuật toán Quicksort chia đoạn thuật toán xếp đệ quy thực đoạn liên tục n số phần tử phần tử mảng A[1 n] Quicksort gồm có bước: Phân chia đoạn thực xếp Tron bước phân chia, đoạn liên tục A[q r] thuộc đoạn phân chia có đoạn liên tục A[q s] A[s+1 r] mà phần tử đoạn phải nhỏ phần tử đoạn Trong bước xếp, đoạn xếp lời gọi đệ quy QUICKSORT Cho đến đoạn liên tục A[q s] A[s+1 r] xếp SVTH: Trần Thị Lan Hương Khóa luận tốt nghiệp đại học GVHD: CaoThanh Sơn Đoạn A[q r] có phần:phần chứa tất phần tử nhỏ phần tử khác Đây thường lấy cách chọn giá trị x từ mảng A[q r] sử dụng phần tử để chia đoạn A[q r], có phần: phần với phần tử nhỏ x phần tử lớn x Phần tử x gọi khóa “chốt” (Pivot) Hình 4.3.1 : Mơ tả ví dụ với mảng có n=8 Dưới thuật toán QUICKSORT Procedure QUICKSORT (A,q,r) Begin If (q < r) then Begin X:=A[q]; S:=q; For i:=q+1 to r If ( A[i] < X ) then Begin S:= S+1; Swap(A[s],A[i]); End if Swap(A[q],A[s]); QUICKSORT(A,q,s); QUICKSORT(A,s+1,r); End if SVTH: Trần Thị Lan Hương Khóa luận tốt nghiệp đại học GVHD: CaoThanh Sơn End QUICKSORT Sự phức tạp phân chia đoạn liên tục có kích thước k O(k) Thực thi QUICKSORT có khả xảy lỗi cao cách chia đoạn liên tục Cần phải cân nhắc trường hợp đoạn có kích cỡ đến k-1 Thời gian chạy trường hợp T(n)=T(n-1)+O(n), Giải pháp T(n)=O(n 2) Cịn khả khác tổt, kích cỡ đoạn k/2 4.3.3 Thuật toán song song a Thuật toán song song Trên mảng liệu vào ta phân đoạn Mỗi đoạn tiến trình đảm nhận Việc chọn điểm ngẫu nhiên tiến trình tiến trình đầu đảm nhận phân thành nửa Và chuyển đổi phần tử tiến tiến trình Sau tiến trình đầu tiếp tục chọn giá trị ngẫu nhiên Và phân chia nhở chuyển đổi giống bước trước thực phân Đây gọi đệ quy chương trình Quá tình xếp kết thúc phân chia nửa tiến trình Mơ tả q trình thực thuật tốn với tiến trình P sau: Hình 4.3.3.1 : Phân khối liệu Hình 4.3.3.3: Phân nửa nửa cho tiến trình Hình 4.3.3.2: Chọn đỉnh ngẫu nhiên Hình 4.3.3.4: Kết phép chuyển tiến trình dổi nửa lần SVTH: Trần Thị Lan Hương Khóa luận tốt nghiệp đại học GVHD: CaoThanh Sơn Hình 4.3.3.5: Trong nửa tiếp tục Hình 3.3.7: Kết phân chia chọn đỉnh ngẫu nhiên phần Hình 4.3.3.6: Chuyển đổi phần tử Hình 4.3.3.8: Chuyển dổi giá trị phần nữatiến trình phần thu kết b Thuật tốn PRAM Hình 4.3.3 : Thuật tốn SVTH: Trần Thị Lan Hương Khóa luận tốt nghiệp đại học GVHD: CaoThanh Sơn Procedure BUILD_TREE (A[1 n]) Begin For each process i Begin Root:=i; Parent:=root; Leftchild[i]:=rightchild[i]:=n+1; End for Repeat for each process i root Begin If (A[i]
Ngày đăng: 28/08/2021, 23:32
Xem thêm: Nghiên cứu mô hình tính toán song song sử dụng bộ nhớ chia sẻ và ứng dụng một số thuật toán trên ma trận