Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 26 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
26
Dung lượng
182,45 KB
Nội dung
Header Page of 126 BỘ GIÁO DỤC VÀ ĐÀO TẠO ĐẠI HỌC ĐÀ NẴNG NGUYỄN TẤN THẮNG THUẬT TOÁN SONG SONG GIẢI QUYẾT MỘT SỐ BÀI TOÁN VỀ LÝ THUYẾT ĐỒ THỊ Chuyên ngành: KHOA HỌC MÁY TÍNH Mã số: 60.48.01 TÓM TẮT LUẬN VĂN THẠC SĨ KỸ THUẬT Đà Nẵng - Năm 2011 Footer Page of 126 Header Page of 126 Công trình ñược hoàn thành ĐẠI HỌC ĐÀ NẴNG Người hướng dẫn khoa học: PGS.TSKH Trần Quốc Chiến Phản biện 1: Phản biện 2: Luận văn ñược bảo vệ trước Hội ñồng chấm Luận văn tốt nghiệp thạc sĩ kỹ thuậttính họp Đại học Đà Nẵng vào ngày … tháng 10 năm 2011 * Có thể tìm hiểu luận văn tại: - Trung tâm Thông tin - Học liệu, Đại học Đà Nẵng - Trung tâm học liệu, Đại học Đà Nẵng Footer Page of 126 Header Page of 126 MỞ ĐẦU Lý chọn ñề tài: Khoa học kỹ thuật ngày phát triển, ñặt nhiều toán với khối lượng tính toán lớn Trong số ñó có toán mà kết có ý nghĩa ñược hoàn thành khoảng thời gian cho phép Ví dụ tính toán thời gian thực, mô chuyển ñộng phân tử, tính quĩ ñạo chuyển ñộng vật thể không gian, dự báo thời tiết Để giải toán này, người ta ñã nghiên cứu tăng tốc ñộ tính toán hai phương pháp hay kết hợp hai: Phương pháp 1: Cải tiến công nghệ, tăng tốc ñộ xử lý máy tính Công việc ñòi hỏi nhiều thời gian, công sức tiền của, tốc ñộ ñạt ñược ñến giới hạn ñó Phương pháp 2: Chia toán thành công việc nhỏ ñể chạy song song nhiều xử lý Việc phát triển công nghệ tính toán theo phương pháp ñã cho ñời công nghệ tính toán song song, ñó việc sử dụng ñồng thời nhiều tài nguyên tính toán ñể giải toán Các tài nguyên tính toán bao gồm máy tính với nhiều vi xử lý hay tập máy tính kết nối mạng kết hợp hai dạng Công nghệ tính toán song song cho phép giảm thời gian thực thi toán tùy thuộc cách phân chia số xử lý thực thi chương trình Nguyên tắc quan trọng tính toán song song tính ñồng thời hay xử lý nhiều tác vụ lúc Trong tính toán song song nay, có hai công nghệ chính: Thứ sử dụng siêu máy tính với nhiều xử lý ñược tích hợp bên ñược thiết kế ñồng phần cứng phần mềm Các công nghệ ñược áp dụng siêu máy tính thường công nghệ tiên tiến làm cho giá thành hệ thống siêu máy tính tăng cao.Vì Footer Page of 126 Header Page of 126 siêu máy tính thường ñược sử dụng lĩnh vực mà vấn ñề tính toán phức tạp, nhạy cảm yêu cầu thời gian thực mô thực ñộng máy bay, quốc phòng, vũ trụ Cách thứ hai kết nối máy tính lại với thực toán Hệ thống máy tính kết nối hệ thống tính toán song song phân cụm Hệ thống có ưu ñiểm giá thành rẻ nhiều so với siêu máy tính có sức mạnh (do sử dụng thiết bị thông thường) tính linh hoạt hệ thống (số nút, số xử lý, nhớ, thiết bị mạng ñều mang tính tuỳ biến cao) Sự phát triển mạnh mẽ mạng máy tính, công nghệ mạng ñã lấp ñi hạn chế truyền thông hệ thống máy tính song song phân cụm làm cho ñược phát triển rộng rãi Các lĩnh vực sử dụng hệ thống tính toán song song phân cụm thường yêu cầu tính toán không lớn, không yêu cầu thời gian thực xử lý ảnh, nhận dạng vân tay, tính toán kết cấu công trình, mô thí nghiệm Với ñời chíp ña lõi (multi-core) xử lí ña luồng (multithreads) việc khai thác hết khả xử lí vấn ñề cần quan tâm Tuy nhiên với lập trình truyền thống (lập trình tuần tự), câu lệnh, trình xử lý ñược thực hịên cách lần lượt, không phát huy hết hiệu vi xử lý ña lõi Các nhà sản xuất chip phần mềm máy tính ñã bắt ñầu nỗ lực ñể ñịnh hướng giới phát triển phần mềm, cung cấp cho họ công cụ tốt việc lập trình ña lõi Điều ñó có nghĩa người lập trình phải lập trình lại theo cách khác ñể tận dụng gia tăng số lõi Với mục ñích tìm hiểu nghiên cứu thuật toán song song, chọn ñề tài “Thuật toán song song cho số toán lí thuyết ñồ thị” nhằm tìm hiểu, nghiên cứu tìm giải pháp song song cho số toán lý thuyết ñồ thị sở thuật toán truyền thống Footer Page of 126 Header Page of 126 Mục tiêu ñề tài: Tìm hiểu, nghiên cứu xây dựng thuật toán song song cho số toán cụ thể ñể nâng cao khả thực chương trình, giảm thời gian thực hiện, góp phần cao hiệu hoạt ñộng hệ thống Đối tượng phạm vi nghiên cứu: + Đối tượng nghiên cứu: - XLSS thuật toán song song - Lý thuyết ñồ thị + Phạm vi nghiên cứu: - Một số toán lý thuyết ñồ thị: Tìm ñường ñi, bao trùm Phương pháp nghiên cứu: - Nghiên cứu lý thuyết: XLSS, thuật toán song song, lý thuyết ñồ thị - Tìm hiểu số thuật toán bản: Tìm ñường ñi, bao trùm - Nghiên cứu xây dựng thuật toán song song 4.1 Ý nghĩa khoa học thực tiễn ñề tài: - Nghiên cứu tìm giải pháp nâng cao hiệu hệ thống XLSS - Có thể áp dụng cho số lĩnh vực cụ thể số toán có ñộ phức tạp thời gian lớn, toán thời gian thực 4.2 Bố cục ñề tài: Nội dung ñề tài bao gồm chương: Chương 1: Tính toán song song thuật toán song song - Chương giới thiệu tổng quan tính toán song song, thuật toán song song, mô hình lập trình song song Chương 2: Lí thuyết ñồ thị - Chương giới thiệu tổng quan lí thuyết ñồ thị Chương 3: Song song hóa số toán lí thuyết ñồ thị - Chương phát biểu, mô tả thực song song hóa toán tìm bao trùm nhỏ toán tìm ñường ñi ngắn từ ñỉnh nguồn ñến ñỉnh ñồ thị có trọng số Footer Page of 126 Header Page of 126 Kết luận: Nêu lên vấn ñề ñã nghiên cứu kết ñạt ñược, hạn chế hướng phát triển ñề tài CHƯƠNG ĐẠI CƯƠNG VỀ XỬ LÍ SONG SONG 1.1 Một số khái niệm xử lí song song Xử lí song song cách xử lí thông tin việc sử dụng nhiều xử lí ñể thực nhiều thao tác liệu thời ñiểm Thuật toán song song tập tiến trình (process) tác vụ (task) thực ñồng thời trao ñổi liệu với ñể kết hợp giải toán ñặt Những thuật toán, ñó có số thao tác thực ñồng thời ñược gọi thuật toán song song 1.2 Các kiến trúc song song 1.2.1 Mô hình SISD : Đơn lệnh, ñơn liệu Máy tính theo mô hình SISD có CPU, thời ñiểm thực lệnh ñọc/ghi mục liệu Có ghi, gọi ñếm chương trình, ñược sử dụng ñể nạp ñịa lệnh xử lý Các câu lệnh ñược thực theo thứ tự xác ñịnh Hay nói cách khác, máy tính loại SISD máy tính thông thường, có vi xử lý, cấu trúc song song liệu song song Đơn vị ñiều khiển Tín hiệu ñiều khiển Luồng lệnh Footer Page of 126 BXL Luồng kết Bộ nhớ Luồng liệu Header Page of 126 1.2.2 Mô hình SIMD: Đơn lệnh, ña liệu Máy theo mô hình 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 Đơn vị ñiều khiển (CU) phát sinh tín hiệu ñiều khiển tới tất phần tử xử lý, xử lí thực phép toán mục liệu khác nhau, nghĩa xử lí có luồng liệu riêng Tín hiệu ñiều khiển Phần tử xử lí 1.2.3 Đơn vị ñiều khiển (CU) Phần tử xử lí Phần tử xử lí n Mô hình MISD: Đ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 CU CU Dòng lệnh Dòng lệnh CU n 1.2.4 Phần tử xử lí Phần tử xử lí Dòng lệnh n Phần tử xử lí n Mô hình MIMD: Đa lệnh, ña liệu Máy tính loại MIMD gọi ña xử lí, ñó xử lí thực luồng lệnh (chương trình) khác luồng Footer Page of 126 Header Page of 126 liệu riêng Dòng lệnh CU Dòng lệnh CU Phần tử xử lí Phần tử xử lí Luồng liệu Luồng liệu Dòng lệnh n CU n Phần tử xử lí n Luồng liệu N 1.3 Thiết kế ñánh giá thuật toán song song 1.3.1 Nguyên lý thiết thiết kế thuật toán song song Khi muốn thực việc xử lí song song ta phải xét kiến trúc máy tính thuật toán song song Để thiết kế ñược 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 ñược ñồng Khi thiết kế thuật toán song song sử dụng năm nguyên lí thiết kế thuật toán song song: + 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 toán không tăng (xét theo khía cạnh ñộ phức tạp) + Nguyên lý hình ống: Nguyên lý ñược á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 Footer Page of 126 Header Page of 126 + 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 toá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 tương tranh: 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 toán song song ta phải ý ñến kiến trúc hệ thống tính toán Khi chuyển thuật toán sang thuật toán song song chuyển thuật toán song song thích hợp với kiến trúc ñang có Cần xác ñịnh ñược yêu cầu sau: - Kiến trúc tính toá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 ? 1.3.2 Các giai ñoạn thiết kế thuật toán song song - Song song hóa thuật toán tuần tự, biến ñổi cấu trúc ñể tận dụng khả song song tự nhiên tất thành phần hệ thống xử lí - Thiết kế thuật toán song song hoàn toàn - Thiết kế thuật toán song song từ thuật toán song song ñã ñược xây dựng 1.3.3 Đánh giá thuật toán song song + Thời gian tính toán Thời gian tính toán giải thuật song song thời gian dành ñể thực tính toán Thời gian tính toán phụ thuộc vào số tác vụ thực + Thời gian truyền thông Thời gian truyền thông giải thuật thời gian tác vụ dành Footer Page of 126 10 Header Page 10 of 126 ñể gửi nhận thông ñiệp + Thời gian rỗi Một BXL ñặt trạng thái rỗi thiếu tính toán liệu ñể tính toán + Tốc ñộ hiệu quả: Hiệu thuật toán ñược ñịnh nghĩa phần thời gian mà xử lí dùng ñể thực công việc có ích, mức ñộ hiệu giải thuật sử dụng tài nguyên tính toán chương trình song song theo hướng ñộc lập với kích thước toán Thuật toán song song có ñộ phức tạp lớn thuật toán tuần tự, ñó khó ñể ñánh giá thuật toán song song Kết ñạt ñược thường ñược ñánh giá thực nghiệm chương trình 1.4 Một số mô hình lập trình song song 1.4.1 Mô hình chia sẻ nhớ: Trong mô hình BXL ñều truy cập vào nhớ chia sẻ, BXL hoạt ñộng ñộc lập chia sẻ ñịa ô nhớ CPU CPU CPU n Memory 1.4.2 Mô hình truyền thông ñiệp Trong mô hình truyền thông ñiệp, tiến trình chia sẻ với kênh truyền thông Các kênh ñược truy cập hai phương thức: gửi nhận thông ñiệp Mem1 Mem2 Memn CPU CPU CPU n Footer Page 10 of 126 Network 12 Header Page 12 of 126 thực công việc ñộc quyền Ngoài OpenMP hỗ trợ quản lí thời gian thực số lượng luồng OpenMP cho phép viết chương trình song song giữ nguyên mã nguồn chương trình OpenMP sử dụng thị chương trình dịch ñể ñiều khiển song song OpenMP ñưa cách song song ñó là: + Song song theo chức năng: lập trình song song có cấu trúc dựa phân chia công việc vòng lặp + Song song theo liệu: Hỗ trợ việc gán công việc cụ thể cho luồng thông qua số luồng CHƯƠNG ĐẠI CƯƠNG VỀ ĐỒ THỊ 2.1 Các khái niệm ñồ thị 2.1.1 Định nghĩa ñồ thị Định nghĩa 2.1: Một ñơn ñồ thị vô hướng G=(V,E), ñó: - V ≠∅ tập hợp hữu hạn gồm ñỉnh ñồ thị - E tập hợp cặp thứ tự gồm hai phần tử khác V gọi cạnh Định nghĩa 2.2: Đơn ñồ thị có hướng G=(V,E), ñó: - V ≠∅ tập hợp hữu hạn gồm ñỉnh ñồ thị - E tập hợp cặp có thứ tự gồm hai phần tử khác V gọi cung 2.1.2 Một số khái niệm: Định nghĩa 2.3: Cho ñồ thị vô hướng G=(V,E) - Hai ñỉnh u v ñồ thị ñược gọi kề (u,v) cạnh ñồ thị Footer Page 12 of 126 13 Header Page 13 of 126 - Nếu e = (u,v) cạnh ñồ thị ta nói cạnh liên thuộc với hai ñỉnh u v Cạnh ñược nói nối ñỉnh u v Đỉnh u v ñược gọi ñỉnh ñầu cạnh e Định nghĩa 2.4: Cho ñồ thị vô hướng G=(V,E) Bậc ñỉnh v ñồ thị, ký hiệu deg(v), số cạnh liên thuộc với Đỉnh có bậc ñược gọi ñỉnh cô lập, ñỉnh có bậc gọi ñỉnh treo Định nghĩa 2.5: Cho ñồ thị có hướng G=(V,E) - Hai ñỉnh u v ñồ thị ñược gọi kề (u,v) cung ñồ thị - Nếu e = (u,v) cung ñồ thị ta nói cung ñi khỏi ñỉnh u vào ñi vào ñỉnh v Đỉnh u ñược gọi ñỉnh ñầu cung e ñỉnh v ñược gọi ñỉnh cuối cung e Định nghĩa 2.6: Cho ñồ thị có hướng G=(V,E) - + Nửa bậc ñỉnh v ñồ thị, ký hiệu deg (v), số cạnh ñi khỏi v - Nửa bậc vào ñỉnh v ñồ thị, ký hiệu deg (v), số cạnh vào v 2.2 Đường ñi, chu trình, tính liên thông Định nghĩa 2.7: Cho ñồ thị G = (V,E) Đường ñi ñộ dài n từ ñỉnh u ñến ñỉnh v (n số nguyên dương) dãy: x0, x1, …, x n-1, xn ñó u = x0, v = xn, (xixi+1)∈E, i = 0, 1, …, n-1 Đường ñi nói ñược biểu diễn dãy cạnh/cung: (x0, x1), (x1, x2), …, (xn-1, xn) Đỉnh u gọi ñỉnh ñầu ñường ñi, ñỉnh v gọi ñỉnh cuối ñường ñi Đường ñi có ñỉnh ñầu ñỉnh cuối trùng (u=v) gọi chu trình Định nghĩa 2.8: Đồ thị vô hướng G = (V,E) ñược gọi liên thông tìm ñược ñường ñi hai ñỉnh Footer Page 13 of 126 14 Header Page 14 of 126 Định nghĩa 2.9: Cho ñồ thị G = (V,E) Đồ thị H = (W,F) ñược gọi ñồ thị G W ⊆ V F ⊆ E Trong trường hợp ñồ thị vô hướng G không liên thông, ñược phân thành ñồ thị ñộc lập chúng ñều liên thông Mỗi ñồ thị ñược gọi thành phần liên thông G Định nghĩa 2.10 Cho G = (V,E) ñồ thị có hướng - G ñược gọi liên thông mạnh tìm ñược ñường ñi hai ñỉnh - G ñược gọi liên thông yếu ñồ thị vô hướng tương ứng với (ñồ thị vô hướng có ñược cách biến cung chiều thành cạnh hai chiều) ñồ thị vô hướng liên thông 2.3 Biểu diễn ñồ thị máy tính 2.3.1 Ma trận kề, ma trận trọng số Xét ñồ thị ñơn vô hướng G =(V, E), với tập ñỉnh V = {1, 2, , n}, tập cạnh E = {e1, e2, , em} Ta gọi ma trận kề ñồ thị G ma trận có phần tử hoặc theo qui ñịnh sau: A = { aij: aij = (i, j) ∈E, aij = (i,j) ∉E; i, j =1, 2, , n} 2.3.2 Danh sách cạnh (cung) Mỗi cạnh (cung) e (x, y) ñược tương ứng với hai biến dau[e], cuoi[e] Như vậy, ñể lưu trữ ñồ thị, ta cần 2m ñơn vị nhớ Nhược ñiểm lớn phương pháp ñể nhận biết cạnh kề với cạnh cần m phép so sánh duyệt qua tất m cạnh (cung) ñồ thị Nếu ñồ thị có trọng số, ta cần thêm m ñơn vị nhớ ñể lưu trữ trọng số cạnh 2.3.3 Danh sách kề Trong biểu diễn này, với ñỉnh v ñồ thị lưu trữ danh sách ñỉnh kề với mà ta ký hiệu Ke(v), nghĩa Ke(v) = { u∈ V: (u, v)∈E}, Với cách biểu diễn này, ñỉnh i ñồ thị, ta làm tương ứng với Footer Page 14 of 126 15 Header Page 15 of 126 danh sách tất ñỉnh kề với ñược ký hiệu List(i) Để biểu diễn List(i), ta dùng kiểu liệu kiểu tập hợp, mảng danh sách liên kết 2.4 Các thuật toán tìm kiếm ñồ thị 2.4.1 Thuật toán tìm kiếm theo chiều sâu Thuật toán tìm kiếm theo chiều sâu bắt ñầu từ ñỉnh v ñó duyệt tất ñỉnh liên thông với v Thuật toán ñược mô tả thủ tục ñệ qui DFS () ñó: chuaxet - mảng giá trị logic ñược thiết lập giá trị TRUE procedure DFS( v); begin Thăm_Đỉnh(v); chuaxet[v] := FALSE; for u ∈ke(v) to n begin if (chuaxet[u] ) then DFS(A, n, v, chuaxet); end; 2.4.2 Thuật toán tìm kiếm theo chiều rộng (Breadth First Search) Khác với thuật toán tìm kiếm theo chiều sâu, thuật toán tìm kiếm theo chiều rộng thay việc sử dụng stack hàng ñợi queue Trong thủ tục này, ñỉnh ñược nạp vào hàng ñợi ñầu tiên v, ñỉnh kề với v ( v1, v2, , vk) ñược nạp vào queue Quá trình ñược thực tương tự với ñỉnh hàng ñợi Thuật toán dừng ta ñã duyệt hết ñỉnh kề với ñỉnh hàng ñợi chuaxet- mảng kiểm tra ñỉnh ñã xét hay chưa; queue – hàng ñợi lưu trữ ñỉnh ñược duyệt ñồ thị; procedure BFS(u); begin queue := φ; u