Nghiên cứu và đánh giá hiệu năng cao thuật toán nổi tiếng đồ thị sử dụng MPI

27 6 0
Nghiên cứu và đánh giá hiệu năng cao thuật toán nổi tiếng đồ thị sử dụng MPI

Đ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

Trong thời đại số hóa ngày nay, xử lý và phân tích dữ liệu đồ thị là một phần quan trọng của nhiều ứng dụng thực tế, từ mạng xã hội đến hệ thống giao thông và tối ưu hóa các quy trình kinh doanh. Đồng thời, lập trình song song là một yếu tố quyết định để tận dụng hiệu suất của các hệ thống tính toán hiện đại. Trong ngữ cảnh này, chúng ta không thể phớt lờ qua vai trò của Message Passing Interface (MPI) một giao thức truyền thông cho lập trình song song. Tiểu luận này đặt ra một câu hỏi cơ bản nhưng quan trọng: Làm thế nào chúng ta có thể tối ưu hóa hiệu suất của các thuật toán đồ thị thông qua việc sử dụng MPI? Chúng ta sẽ khám phá sự kết hợp mạnh mẽ giữa lập trình đồ thị và MPI Mục tiêu của chúng ta không chỉ là hiểu rõ cách các thuật toán đồ thị hoạt động, mà còn là xem xét cách chúng có thể được triển khai trên môi trường song song sử dụng MPI để tối ưu hóa thời gian xử lý và tận dụng tài nguyên tính toán. Qua quá trình nghiên cứu này, chúng ta có thể không chỉ có cái nhìn sâu sắc về hiệu suất của các thuật toán đồ thị mà còn thấy rõ ứng dụng thực tế của chúng trong một thế giới đang ngày càng phụ thuộc vào dữ liệu và tính toán song song. Hãy bắt đầu hành trình khám phá này và đặt ra câu hỏi: Làm thế nào chúng ta có thể tối ưu hóa sức mạnh của đồ thị và MPI để giải quyết những thách thức ngày nay và tương lai?. Trong quá trình thực hiện đề tài, được sự giúp đỡ của “TS. Đào Mạnh Hà” nhiệt tình hướng dẫn. Tuy nhiên vì kiến thức còn chưa vững nên trong quá trình tìm hiểu và đánh giá có thể còn những thiếu sót và hạn chế, mong được thầy xem và cho đưa ra nhận xét giúp chúng em hiểu và tiếp thu những kiến thức mới. Cũng như hoàn thành bài tập lớn này một cách hoàn thiện hơn Chúng em xin trân trọng cảm ơn

TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI KHOA CÔNG NGHỆ THÔNG TIN - - Báo cáo tập lớn mơn học: Tính tốn hiệu cao - HPC CHỦ ĐỀ: Nghiên cứu đánh giá hiệu cao thuật toán tiếng đồ thị sử dụng MPI GVHD: TS Đào Mạnh Hà Nhóm: 18 Nguyễn Trung Kiên Mã SV: 2021606975 Nguyễn Mạnh Hùng Mã SV: 2021608268 Nguyễn Phương Nam Mã SV: 2021606316 Hà Nội, 2023 MỤC LỤC MỤC LỤC LỜI NÓI ĐẦU CHƯƠNG 1: XÁC ĐỊNH VÀ PHÂN TÍCH BÀI TỐN 1.2 MPI tính tốn hiệu cao 1.2.1 Định nghĩa 1.2.2 Mơ hình lập trình MPI 1.2.3 Cấu trúc chương trình MPI 1.2.4 Hạn chế 1.3 Visual studio 2022 1.3.1 Định nghĩa 1.3.2 Tính 1.3.2.1 Biên tập mã 1.3.2.2 Trình gỡ lỗi CHƯƠNG 2: THIẾT KẾ THUẬT TỐN 2.1 Thuật tốn đồ thị mpi 2.2 Source code thuật toán đồ thị MPI CHƯƠNG 3: SO SÁNH VÀ ĐÁNH GIÁ KẾT QUẢ ĐẠT ĐƯỢC 3.1 Giới thiệu 3.2 Mơ hình thực nghiệm 3.3 So sánh đánh giá kết chương trình thử nghiệm 3.4 Kết so sánh 3.5 Ứng Dụng Thực Tế Hướng Phát Triển 3.5.1: Ứng dụng thực tế 3.5.2: Hướng phát triển CHƯƠNG KẾT LUẬN LỜI NĨI ĐẦU Trong thời đại số hóa ngày nay, xử lý phân tích liệu đồ thị phần quan trọng nhiều ứng dụng thực tế, từ mạng xã hội đến hệ thống giao thông tối ưu hóa quy trình kinh doanh Đồng thời, lập trình song song yếu tố định để tận dụng hiệu suất hệ thống tính tốn đại Trong ngữ cảnh này, khơng thể phớt lờ qua vai trò Message Passing Interface (MPI) - giao thức truyền thơng cho lập trình song song Tiểu luận đặt câu hỏi quan trọng: "Làm tối ưu hóa hiệu suất thuật tốn đồ thị thơng qua việc sử dụng MPI?" Chúng ta khám phá kết hợp mạnh mẽ lập trình đồ thị MPI Mục tiêu khơng hiểu rõ cách thuật tốn đồ thị hoạt động, mà xem xét cách chúng triển khai mơi trường song song sử dụng MPI để tối ưu hóa thời gian xử lý tận dụng tài ngun tính tốn Qua q trình nghiên cứu này, khơng có nhìn sâu sắc hiệu suất thuật tốn đồ thị mà cịn thấy rõ ứng dụng thực tế chúng giới ngày phụ thuộc vào liệu tính tốn song song Hãy bắt đầu hành trình khám phá đặt câu hỏi: "Làm tối ưu hóa sức mạnh đồ thị MPI để giải thách thức ngày tương lai?" Trong trình thực đề tài, giúp đỡ “TS Đào Mạnh Hà” nhiệt tình hướng dẫn Tuy nhiên kiến thức cịn chưa vững nên trình tìm hiểu đánh giá cịn thiếu sót hạn chế, mong thầy xem cho đưa nhận xét giúp chúng em hiểu tiếp thu kiến thức Cũng hoàn thành tập lớn cách hoàn thiện Chúng em xin trân trọng cảm ơn! Sinh viên nhóm 18 thực CHƯƠNG 1: XÁC ĐỊNH VÀ PHÂN TÍCH BÀI TỐN 1.1 Thuật tốn đồ thị sử dụng MPI 1.1.1 Định nghĩa Thuật toán đồ thị sử dụng MPI thường thiết kế để giải vấn đề liên quan đến đồ thị cụm máy tính song song sử dụng thư viện MPI (Message Passing Interface) 1.1.2 Phân loại Dưới số thuật toán đồ thị phổ biến triển khai với MPI: ● Thuật toán Duyệt Đồ thị(Graph Traversal): Duyệt đồ thị vấn đề quan trọng nhiều ứng dụng, tìm đường ngắn nhất, kiểm tra liên thơng, hay tìm thành phần liên thơng Thuật toán sử dụng MPI để phân chia đồ thị thực công việc duyệt nút ● Thuật tốn tìm đường ngắn (Shortest Path): Dùng để tìm đường ngắn hai đỉnh đồ thị Thuật tốn Bellman-Ford hay Dijkstra song song hóa sử dụng MPI để tối ưu hiệu suất tính tốn cụm máy tính ● Thuật toán liên kết (Spanning Tree): Xây dựng liên kết đồ thị, bao gồm tất đỉnh số cạnh mà khơng có chu trình Thuật tốn Prim Kruskal ví dụ song song hóa MPI ● Thuật toán Sắp xếp Đồ thị (Graph Sorting): Sắp xếp đỉnh đồ thị theo tiêu chí Thuật tốn thực song song cụm máy tính sử dụng MPI để tăng tốc q trình xếp ● Thuật tốn Luồng Mạng Tối Đa (Maximum Flow): Tìm luồng mạng tối đa đồ thị có trọng số Các thuật tốn Ford-Fulkerson song song hóa để tận dụng khả tính tốn song song MPI ● Thuật tốn Phân Cụm Cộng Đồng (Community Detection): Tìm cụm cộng đồng đồ thị Thuật toán Girvan-Newman, Louvain, hay Label Propagation song song hóa sử dụng MPI để tăng hiệu suất tính tốn Khi triển khai thuật tốn sử dụng MPI, việc chia cơng việc, quản lý giao tiếp, tối ưu hóa hiệu suất trở thành yếu tố quan trọng để đạt khả mở rộng hiệu suất cao cụm máy tính song song 1.2 MPI tính tốn hiệu cao 1.2.1 Định nghĩa MPI (Message Passing Interface) giao diện lập trình ứng dụng (API) phát triển từ lâu, nhằm hỗ trợ việc xây dựng ứng dụng có tính chất song song, sử dụng nhiều tiến trình Giao diện cung cấp hàm quy ước để quản lý truyền thông tiến trình khác mơi trường song song MPI cung cấp chức khởi tạo mơi trường MPI, phân chia chương trình thành nhiều tiến trình chạy đồng thời, truyền liệu chúng, đồng hóa hoạt động chúng Mơ hình thường sử dụng tiến trình (master) máy ngun thủy, có trách nhiệm khởi tạo chương trình, phân công nhiệm vụ, nhận kết từ tiến trình phụ (slave) Các tiến trình phụ chạy độc lập máy (hoặc CPU) phụ, nhận liệu ban đầu, thực tính tốn gửi kết tiến trình MPI sở mạnh mẽ để phát triển ứng dụng song song hệ thống có nhiều xử lý, bao gồm lệnh để quản lý q trình truyền thơng đồng hóa tiến trình 1.2.2 Mơ hình lập trình MPI - Ban đầu MPI thiết kế cho kiến trúc nhớ phân tán, kiến trúc phổ biến thời kỳ 1980 đến đầu năm 1990 Hình 1.3: Mơ hình MPI giai đoạn 1980 - 1990 - Xu hướng công nghệ thay đổi, nhớ chia sẻ kết hợp với mạng máy tính tạo dạng lai hai hệ thống nhớ chia sẻ nhớ phân tán - Thực thi MPI tương thích với hai kiểu kiến trúc tương thích với kiểu kết nối giao thức khác Hình 1.4: Mơ hình MPI ngày - Ngày MPI chạy hầu hết tảng phần cứng: ● Bộ nhớ chia sẻ ● Bộ nhớ phân tán ● Dạng lai loại 1.2.3 Cấu trúc chương trình MPI Hình 1.5: Cấu trúc chương trình MPI 1.2.4 Hạn chế Tuy có khả cung cấp hiệu cao chạy kiến trúc sử dụng nhớ chia sẻ lẫn phân tán, chương trình MPI địi hỏi người lập trình phải tự phân chia chương trình thành khối cho tiến trình phụ câu lệnh tường minh Các công việc khác gửi nhận liệu, đồng hóa tiến trình… cần rõ câu lệnh tham số cụ thể Điều gây khó khăn địi hỏi nhiều cơng sức người lập trình, thể qua ba khía cạnh lớn Thứ MPI địi hỏi phải tổ chức từ đầu chương trình thành theo cấu trúc song song mơ hình master-slave, việc phức tạp nhiều so với việc tổ chức chương trình vốn quen thuộc với tư đa số lập trình viên Thứ hai MPI sử dụng để song song hoá chương trình phá vỡ nghiêm trọng cấu trúc ban đầu chương trình Điều khó khăn thứ ba gây nên rắc rối câu lệnh MPI, với loạt tham số khó hiểu cho câu lệnh Do ba khó khăn vừa nêu, có hiệu cao cung cấp cách thức lập trình trừu tượng hóa MPI xem assembler việc lập trình song song 1.3 Visual studio 2022 1.3.1 Định nghĩa - Microsoft Visual Studio môi trường phát triển tích hợp (IDE) từ Microsoft Microsoft Visual Studio cịn gọi "Trình soạn thảo mã nhiều người sử dụng giới ", dùng để lập trình C++ C# Nó sử dụng để phát triển chương trình máy tính cho Microsoft Windows, trang web, ứng dụng web dịch vụ web Visual Studio sử dụng tảng phát triển phần mềm Microsoft Windows API, Windows Forms, Windows Presentation Foundation, Windows Store Microsoft Silverlight Nó sản xuất hai ngôn ngữ máy mã số quản lý - Visual Studio bao gồm trình soạn thảo mã hỗ trợ IntelliSense cải tiến mã nguồn Trình gỡ lỗi tích hợp hoạt động trình gỡ lỗi mức độ mã nguồn gỡ lỗi mức độ máy Cơng cụ tích hợp khác bao gồm mẫu thiết kế hình thức xây dựng giao diện ứng dụng, thiết kế web, thiết kế lớp thiết kế giản đồ sở liệu Nó chấp nhận plug-in nâng cao chức hầu hết cấp bao gồm thêm hỗ trợ cho hệ thống quản lý phiên (như Subversion) bổ sung thêm công cụ biên tập thiết kế trực quan cho miền ngôn ngữ cụ thể cơng cụ dành cho khía cạnh khác quy trình phát triển phần mềm - Visual Studio hỗ trợ nhiều ngơn ngữ lập trình khác cho phép trình biên tập mã gỡ lỗi để hỗ trợ (mức độ khác nhau) ngơn ngữ lập trình Các ngơn ngữ tích hợp gồm có C,[4] C++ C++/CLI (thơng qua Visual C++), VB.NET (thông qua Visual Basic.NET), C# (thông qua Visual C#) F# (như Visual Studio 2010[5]) Hỗ trợ cho ngôn ngữ khác J+ +/J#, Python Ruby thông qua dịch vụ cài đặt riêng rẽ Nó hỗ trợ XML/ XSLT, HTML/XHTML, JavaScript CSS 1.3.2 Tính 1.3.2.1 Biên tập mã - Giống IDE khác, bao gồm trình soạn thảo mã hỗ trợ tơ sáng cú pháp hồn thiện mã cách sử dụng IntelliSense không cho biến, hàm phương pháp mà cấu trúc ngơn ngữ vịng điều khiển truy vấn IntelliSense hỗ trợ kèm theo cho ngôn ngữ XML, Cascading Style Sheets JavaScript phát triển trang web ứng dụng web Các đề xuất tự động hoàn chỉnh xuất hộp danh sách phủ lên đỉnh trình biên tập mã Trong Visual Studio 2008 trở đi, tạm thời bán suốt để xem mã che khuất Các trình biên tập mã sử dụng cho tất ngôn ngữ hỗ trợ - Các trình biên tập mã Visual Studio hỗ trợ cài đặt dấu trang mã để điều hướng nhanh chóng Hỗ trợ điều hướng khác bao gồm thu hẹp khối mã lệnh tìm kiếm gia tăng, ngồi việc tìm kiếm văn thơng thường tìm kiếm Biểu thức quy Các trình biên tập mã bao gồm bìa kẹp đa mục danh sách cơng việc Các trình biên tập mã hỗ trợ lưu lại đoạn mã lặp lặp lại nhằm để chèn vào mã nguồn sử dụng sau Một công cụ quản lý cho đoạn mã xây dựng tốt Những công cụ lên cửa sổ trơi thiết lập để tự động ẩn không sử dụng neo đậu đến cạnh hình Các trình biên tập mã Visual Studio hỗ trợ cải tiến mã nguồn bao gồm tham số xếp lại, biến phương pháp đổi tên, khai thác đóng gói giao diện lớp thành viên bên trạng thái thứ khác - Visual Studio có tính biên dịch (còn gọi biên dịch gia tăng) Như mã viết, Visual Studio biên dịch để cung cấp thơng tin phản hồi cú pháp biên dịch lỗi, đánh dấu gạch gợn sóng màu đỏ Biên dịch khơng tạo mã thực thi, địi hỏi trình biên dịch khác để sử dụng tạo mã thực thi Biên dịch ban đầu giới thiệu với Microsoft Visual Basic mở rộng cho tất ngơn ngữ 1.3.2.2 Trình gỡ lỗi - Visual Studio có trình gỡ lỗi hoạt động vừa trình gỡ lỗi cấp mã nguồn trình gỡ lỗi cấp máy Nó hoạt động với hai mã quản lý ngơn ngữ máy sử dụng để gỡ lỗi ứng dụng viết ngôn ngữ hỗ trợ Visual Studio Ngồi ra, đính kèm theo quy trình hoạt động theo dõi gỡ lỗi quy trình Nếu mã nguồn cho trình hoạt động có sẵn, hiển thị mã chạy Nếu mã nguồn khơng có sẵn, hiển thị tháo gỡ Các Visual Studio debugger tạo bãi nhớ tải chúng sau để gỡ lỗi Các chương trình đa luồng cao cấp hỗ trợ Trình gỡ lỗi cấu hình đưa ứng dụng chạy Visual Studio bị treo mơi trường - Trình gỡ lỗi cho phép thiết lập breakpoint (mà cho phép thực thi tạm thời dừng lại vị trí định) watch (trong giám sát giá trị biến việc thực tiến bộ) Breakpoint có điều kiện, nghĩa chúng kích hoạt điều kiện đáp ứng Mã biểu diễn, tức chạy dòng (của mã nguồn) thời điểm Nó có bước sang chức để gỡ lỗi bên nó, nhảy qua nó, tức là, việc thực chức khơng có sẵn để kiểm tra thủ cơng Trình gỡ lỗi hỗ trợ Edit and Continue, nghĩa là, cho phép mã chỉnh sửa sửa lỗi (chỉ có 32 bit, khơng hỗ trợ 64 bit) Khi gỡ lỗi, trỏ chuột di chuyển lên biến, giá trị hiển thị phần giải ("chú thích liệu"), nơi mà thay đổi muốn Trong trình viết mã, trình gỡ lỗi Visual Studio cho phép số chức gọi tay từ cửa sổ công cụ Immediate Các thông số cho phương thức cung cấp cửa sổ Immediate int = INF, min_index; for (int v = 0; v < n; v++) { if (!visited[v] && dist[v]

Ngày đăng: 12/01/2024, 20:09

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan