1. Trang chủ
  2. » Thể loại khác

Song song hoá thuật toán tìm đường đi ngắn nhất trên nguồn dữ liệu lớn dùng MPI

53 7 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Nội dung

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC LẠC HỒNG *** Đặng Như Tồn Song song hố thuật tốn tìm đường ngắn nguồn liệu lớn dùng MPI Luận văn Thạc sỹ Công nghệ thông tin Đồng Nai - năm 2011 BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC LẠC HỒNG *** Đặng Như Toàn Song song hố thuật tốn tìm đường ngắn nguồn liệu lớn dùng MPI Chuyên ngành: Công nghệ thông tin Mã số: 604805 Luận văn Thạc sỹ Công nghệ thông tin Người hướng dẫn khoa học PGS.TS Trần Văn Lăng Đồng Nai - năm 2011 LỜI CẢM ƠN Được định hướng thầy PGS TS Trần Văn Lăng, em lựa chọn đề tài “Song song hố thuật tốn tìm kiếm đường ngắn với MPI” Được giúp đỡ hướng dẫn tận tình thầy PGS TS Trần Văn Lăng số đồng nghiệp, đến em hoàn thành luận văn Mặc dù cố gắng, thời gian có hạn hạn chế thân nên khơng tránh khỏi có thiếu sót Em mong nhận ý kiến đóng góp Thầy Cơ bạn đồng nghiệp để luận văn hoàn thiện Tác giả Đặng Như Toàn MỤC LỤC Trang LỜI CẢM ƠN .iii MỤC LỤC iv Danh mục thuật ngữ vii Danh mục hình vẽ, bảng biểu .viii MỞ ĐẦU 1 Đặt vấn đề Mục đích luận văn Nội dung luận văn Phương pháp nghiên cứu CHƯƠNG - MỘT SỐ KỸ THUẬT TÌM KIẾM ĐƯỜNG ĐI NGẮN NHẤT 1.1 Bài tốn tìm kiếm đường ngắn 1.2 Các thuật toán 1.2.1 Thuật toán Dijkstra 1.2.2 Thuật toán A star 1.2.3 Thuật toán di truyền CHƯƠNG - LẬP TRÌNH SONG SONG VỚI MPI 16 2.1 Tổng quan lập trình song song với MPI 16 2.1.1 Giới thiệu 16 2.1.2 Một số đặc điểm lập trình MPI 17 2.2 Lập trình song song với MPI 19 2.2.1 Giới thiệu 19 2.2.2 Một số vấn đề hiệu 21 2.2.2.1 Năng lực tính toán 21 2.2.2.2 Cân tải 23 2.2.2.3 Sự bế tắc 25 CHƯƠNG - MPI TRONG THUẬT TỐN DIJKSTRA CHO BÀI TỐN TÌM KIẾM ĐƯỜNG ĐI NGẮN NHẤT 27 3.1 u cầu đặt cho tốn tìm kiếm đường ngắn theo giải thuật Dijksta 27 3.2 Xây dựng hàm tìm kiếm đường ngắn 27 3.2.1 Xây dựng thuật toán Dijkstra cho toán 27 3.2.2 Thực song song hoá 28 3.2.3 Thuật toán song song 29 3.2.4 Lựa chọn hàm MPI cho thuật toán song song 30 3.2.5 Công thức song song 35 3.3 Chi phí thời gian 38 CHƯƠNG - KẾT QUẢ THỬ NGHIỆM 39 4.1 Các kết thử nghiệm 39 4.1.1 Kết thử nghiệm giải thuật Dijkstra cổ điển 39 4.1.2 Kết thử nghiệm tìm kiếm giải thuật Dijkstra song song 40 4.2 Đánh giá kết 41 KẾT LUẬN 44 TÀI LIỆU THAM KHẢO 45 Danh mục thuật ngữ LIS – Language Independent Specifications MIMD – Multiple Instruction Multiple Data MPI – Message Passing Interface OSI – Open Systems Interconnection PVM – Parallel Vitual Machine TCP – Transmission Control Protocol TTDT – Thuật tốn di truyền Danh mục hình vẽ, bảng biểu Hình 1.1 – Kỹ thuật quay bánh xe Hình 2.1 – Khả tăng tốc độ tính tốn, trường hợp lý tưởng Hình 2.2 – Khả tăng tốc độ tính tốn, trường hợp thực tế Hình 3.1 – Sơ đồ khối thuật toán Dijkstra song song Bảng 4.1 – Thời gian thực thuật toán Dijkstra cổ điển Bảng 4.2 – Thời gian thực thuật toán Dijkstra song song Bảng 4.3: Thời gian thực thuật toán Dijkstra song song với nhiều tiến trình Hình 4.4: So sánh kết thử nghiệm thuật tốn Dijksta Hình 4.5: So sánh kết thử nghiệm thuật toán Dijksta với nhiều tiến trình MỞ ĐẦU Đặt vấn đề Tim kiếm đường ngắn toán kinh điển nghiên cứu nhiều ứng dụng hệ thống chuyên biệt Rất nhiều nghiên cứu cải tiến thuật toán tối ưu thuật tốn khơng gian tìm kiếm, thời gian tìm kiếm Tuy nhiên, với bùng nổ thông tin phát triển cơng nghệ thơng tin, thuật tốn tìm kiếm đường ngắn kinh điển khơng thể đáp ứng thời gian tìm kiếm tốt lượng liệu lớn Bài toán đặt làm để giải vấn đề tìm kiếm đường ngắn với nguồn liệu lớn phân tán, đáp ứng mục tiêu rút ngắn thời gian tìm kiếm Mục đích luận văn Nghiên cứu song song hoá thuật toán Dijkstra cho toán tìm đường ngắn nguồn liệu lớn phân tán; từ nâng cao hiệu việc xử lý liệu Nội dung luận văn Trong luận văn gồm có nội dung: - Nội dung 1: Nghiên cứu tốn tìm kiếm đường ngắn Đánh giá ưu điểm, nhược điểm thuật toán - Nội dung 2: Cải tiến thuật tốn Dijkstra cho tốn tìm kiếm đường ngắn cách song song hóa thuật tốn để tối ưu thời gian tìm kiếm nguồn liệu lớn - Nội dung 3: Tiến hành thử nghiệm, đánh giá thuật toán cải tiến Phương pháp nghiên cứu Để thực nội dung nêu trên, tác giả sử dụng số phương pháp cho nội dung sau: - Nội dung 1: sử dụng phương pháp phân tích, so sánh đánh giá thuật tốn tìm kiếm đường ngắn - Nội dung 2: sử dụng phương pháp phân tích khả song song hóa thuật tốn Dijkstra - Nội dung 3: sử dụng phương pháp đối sánh để đánh giá kết thử nghiệm thuật toán cải tiến 31 - MPI_Bcast(): gửi liệu từ tiến trình tất tiến trình - MPI_Reduce(): gửi liệu từ nhiều tiến trình tiến trình - MPI_Barrier(): dùng để đồng hoạt động máy - MPI_Gather(): nhận liệu từ nhiều tiến trình - MPI_Scatter(): gửi liệu đến nhiều tiến trình Lớp cuối hàm cung cấp để tạo cấu trúc liệu phức tạp riêng người dùng Các hàm bản: - MPI_Type_struct(): tạo kiểu liệu MPI riêng người dùng - MPI_Type_commit(): hịan thành q trình định nghĩa kiểu liệu MPI Trong luận văn này, để thực trao đổi song song nhóm xử lý cần sử dụng hàm lớp thứ * Hàm Reduce Hàm Reduce nhận kết từ tiến trình gửi kết đến tiến trình định - Cú pháp: int MPI_ Reduce(void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype, MPI_Op op, int root, MPI_Comm comm) 32 Hình 3.1: phương thức hoạt động hàm Reduce * Hàm All – Reduce Hàm All – Reduce tương tự hàm Reduce, khơng có Root tất tiến trình nhận kết * Hàm Broadcast Hàm Boadcast cho phép tiến trình gửi liệu đến tất tiến trình khác - Cú pháp: int MPI_Bcast(void *buf, int count, MPI_Datatype datatype, int root, MPI_Comm comm) Hình 3.2: phương thức hoạt động hàm Broadcast 33 * Hàm Scatter Hàm Scatter chia nhỏ liệu tiến trình phân phối phần liệu chia lên tiến trình khác - Cú pháp: int MPI_Scatter(void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int recvcount, MPI_Datatype recvtype, int root, MPI_Comm comm) Hình 3.3: phương thức hoạt động hàm Scatter * Hàm Gather Một tiến trình định nhận kết từ tiến trình khác sử dụng hàm Gather - Cú pháp: int MPI_Gather(void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int recvcount, MPI_Datatype recvtype, int root, MPI_Comm comm) 34 Hình 3.4: phương thức hoạt động hàm Gather * Hàm Gather – to – All Tương tự hàm Gather, tất tiến trình nhận kết - Cú pháp: int MPI_Allgather(void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int recvcount, MPI_Datatype recvtype, MPI_Comm comm) Hình 3.5: phương thức hoạt động hàm Gather – to - All * Hàm All – to – all 35 Hàm All –to – All cho phép tất tiến trình phân chia liệu, sau gửi phần liệu đến tiến trình khác - Cú pháp: int MPI_All_to_all(void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int recvcount, MPI_Datatype recvtype, MPI_Comm comm) Hình 3.6: phương thức hoạt động hàm All – to – All Căn vào đặc điểm hàm lớp 3, luận văn sử dụng: - Hàm Reduce kết hợp giá trị min; - Hàm Broadcast để phân phối kết đến tiến trình sau kết hợp; - Hàm Gather để tập hợp kết sau duyệt hết tất đỉnh; 3.2.5 Công thức song song - Tại bước kết nạp đỉnh s vào tập VT - Bộ xử lý Pi tính Li(v) = min{ Li(v), Li(u) + w(v,r) }, v ∈ Vi \VT - Sau đó, Pi tính Li-min = min{ Li(v) | v ∈ Vi \VT) 36 - Sử dụng mẫu liên lạc All-to-One Reduction để đưa min{Li-min | i = p-1} P0 - Giả sử giá trị nhỏ đạt đỉnh u, P0 broadcast u đến xử lý khác, xử lý quản lý u đánh dấu u không xét đến 37 * Sơ đồ khối thuật toán Dijkstra song song Begin Nếu v є (V-VT) True Nếu tồn (s,v) True L[v] := w(s, v) False L[v] := ∞ False Cập nhật giá trị tiến trình While VT ≠ V True Tìm u có trọng số nhỏ mà v ϵ (V – VT) Đánh dấu đỉnh thực Kết hợp Li-min, phân phối trở lại tiến trình False Tổng hợp kết từ tiến trình End Hình 3.1: Sơ đồ khối thuật tốn Dijkstra song song 38 3.3 Chi phí thời gian - Mỗi xử lý lưu n/p phần tử mảng L - Thời gian tính cập nhật giá trị di O(n/p) - Thời gian liên lạc p xử lý O(log p) - Tổng thời gian O(n2/p) + O(n log p) - Tổng chi phí O(n2) + O(np log p) - Để thuật toán tối ưu chi phí p = O(n / log n) 39 CHƯƠNG - KẾT QUẢ THỬ NGHIỆM 4.1 Các kết thử nghiệm 4.1.1 Kết thử nghiệm giải thuật Dijkstra cổ điển * Phần cứng - máy tính Pentium IV 2.2GHz, RAM 512MB cài đặt hệ điều hành CentOS * Thử nghiệm - Cài đặt thuật toán Dijkstra cổ điển với số lượng đỉnh tăng dần, trọng số cạnh chọn ngẫu nhiên - Kết chạy thử nghiệm: Bảng 4.1: Thời gian thực thuật toán Dijkstra cổ điển Số đỉnh 500 1000 1500 2000 2500 3000 3500 4000 4500 5000 5500 6000 6500 Thời gian (s) 0.004466 0.010011 0.023075 0.03786 0.061357 0.09546 0.134992 0.176472 0.230217 0.292116 0.362056 0.426997 0.503063 40 4.1.2 Kết thử nghiệm tìm kiếm giải thuật Dijkstra song song * Phần cứng - Hệ thống bao gồm máy tính Pentium IV 2.2GHz, RAM 512MB cài đặt hệ điều hành CentOS - Hệ thống cài đặt MPI * Thử nghiệm - Cài đặt thuật toán Dijkstra song song với số lượng đỉnh tăng dần, trọng số cạnh chọn ngẫu nhiên - Số tiến trình thử nghiệm 2, tương ứng với xử lý tiến trình - Kết chạy thử nghiệm: Bảng 4.2: Thời gian thực thuật tốn Dijkstra song song với tiến trình Số đỉnh 500 1000 1500 2000 2500 3000 3500 4000 4500 5000 5500 6000 6500 Thời gian song song (2 tiến trình) 0.006841 0.013739 0.027807 0.048473 0.07326 0.103994 0.141089 0.181721 0.233742 0.282327 0.348231 0.409863 0.485421 - Thay đổi số tiến trình, chạy thuật tốn cho kết tương ứng sau: 41 Bảng 4.3: Thời gian thực thuật tốn Dijkstra song song với nhiều tiến trình Số đỉnh 500 1000 1500 2000 2500 3000 3500 4000 4500 5000 5500 6000 6500 Thời gian song song tiến trình tiến trình 0 0.045354 0.088688 0.108983 0.232677 0.175406 0.403382 0.264301 0.635685 0.294662 0.769664 0.334142 1.011743 0.410569 1.313697 0.476818 1.628063 0.604493 2.019241 0.656572 2.417935 0.799673 2.867876 0.858593 3.318057 0.983601 3.981472 4.2 Đánh giá kết - Kết thử nghiệm cho thấy tốc độ thực thuật toán Disktra song song hệ thống thử nghiệm nhanh tốc độ thực thuật toán Dijkstra máy đơn 42 0.6 0.5 0.4 0.3 0.2 0.1 6000 5000 4000 3000 2000 1000 0 Thời gian song song Thời gian Hình 4.4: So sánh kết thử nghiệm thuật toán Dijksta - Thuật toán Dijksta cổ điển cho thời gian xử lý ban đầu nhanh hơn, tỷ lệ thời gian xử lý tăng thực với số đỉnh lớn, thời gian thực lớn - Thuật toán Dijkstra song song cho thời gian xử lý ban đầu lâu hơn, tỷ lệ thời gian xử lý ổn định thực với số đỉnh lớn, thời gian thực thấp - Khi tăng số tiến trình xử lý lên 3, với số đỉnh thấp, số tiến trình cao xử lý nhiều thời gian thời gian truyền thông tăng Nhưng với số đỉnh tăng, 43 thời gian xử lý có tỷ lệ ổn định Điều cho thấy thuật toán chưa tối ưu thời gian cho chi phí truyền thơng - Tăng số tiến trình lên 4, thời gian xử lý nhiều hơn, số đỉnh thời gian xử lý tăng Đặc biệt số đỉnh tăng lên cao thời gian xử lý nhiều Do trường hợp khơng tối ưu cho thuật tốn - Số tiến trình tăng, số xử lý khơng tăng, nên chưa đánh giá hiệu suất thuật toán 4.5 3.5 2.5 1.5 0.5 Tiến trình 6000 5000 4000 3000 2000 1000 Tiến trình tiến trình Hình 4.5: So sánh kết thử nghiệm thuật toán Dijksta với nhiều tiến trình 44 KẾT LUẬN Lập trình song song khơng cịn cơng việc phận cộng đồng nhà khoa học, nghiên cứu, cơng nghiệp mà trở thành xu hướng phát triển thời đại ngày Việc tận dụng sức mạnh hệ thống máy tính với phương pháp lập trình song song đem lại lợi ích nhiều so với việc đầu tư siêu máy tính với khả xử lý cao, hạn chế với phương pháp xử lý cổ điển Song song hố thuật tốn Dijkstra cho tốn tìm đường ngắn với MPI cho kết tốt so với thực thuật toán Dijkstra cổ điển, điều chứng minh lập trình song song giúp nhà nghiên cứu, khoa học công nghiệp tận dụng tối đa sức mạnh hệ thống, đồng thời giảm chi phí đầu tư hợp lý Luận văn giải yêu cầu đặt ban đầu cho đề tài Tuy nhiên, việc kiểm soát tài nguyên nhớ hệ thống chưa giải luận văn Đây thách thức khơng nhỏ cho nhà lập trình song song để giải vấn đề tối ưu chi phí thực lẫn chi phí nhớ TÀI LIỆU THAM KHẢO Tiếng Việt [1] Đinh Mạnh Tường, Giáo trình trí tuệ nhân tạo, Khoa CNTT – Đại học Quốc gia Hà Nội [2] Giáo trình Lý thuyết đồ thị, Khoa CNTT – Đại học Huế Tiếng Anh [3] G Amdahl Validity of the single processor approach to achieving large scale computing capabilities Proc AFIPS Conf., 30:483{485, Apr 18-20 1967} [4] G.A.Geist, J.A.Kolh, P.M.Papadopoulos, PVM and MPI: a comparison of features, Applied Mathematical Sciences subprogram of the Office of Energy Reaseach, US Department of Energy May 30 1996

Ngày đăng: 12/05/2021, 00:13

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w