Nhận thấy được tầm quan trọngđó, nhóm chúng em đã quyết định chọn đề tài “Đánh giá hiệu năng cao bàitoán giải phương trình tuyến tính sử dụng MPI” với mong muốn nghiêncứu, tìm tòi, phát
lOMoARcPSD|39269578 TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI KHOA CÔNG NGHỆ THÔNG TIN 🙙🕮🙛 - BÁO CÁO BTL THUỘC HỌC PHẦN: Tính toán hiệu năng cao Đánh giá hiệu năng cao bài toán giải phương trình tuyến tính sử dụng MPI Giảng viên hướng dẫn : Hà Mạnh Đào Lớp : 20221IT6019002 Khóa: : K15 Nhóm thực hiện : Nhóm 11 Thành Viên: 1 Trịnh Đức Nhân – 2020600842 2 Vũ Quang Trường – 2020601158 3 Nguyễn Tiến Tú – 2020601739 Hà Nội Downloaded by SAU SAU (saudinh1@gmail.com) lOMoARcPSD|39269578 M唃⌀C L唃⌀C CHƯƠNG I: MỞ ĐẦU 4 1.1 Ý tưởng nghiên cứu 4 1.2 Những kiến thức và kỹ năng cần đạt được 4 1.3.Yêu cầu về đầu ra sản phẩm nghiên cứu 4 1.4 Ý tưởng về hoạt động của sản phẩm 4 CHƯƠNG II : KI쨃ĀN THỨC CƠ SỞ 6 2.1 Giới thiệu về tính toán song song 6 2.1.1 Tính toán song song là gì? 6 2.1.2 Tài nguyên 6 2.1.3 Các vấn đề tính toán 7 2.1.5 Các kiến trúc bộ nhớ 7 2.1.6 Các mô hình lập trình song song 8 2.2 Tổng quan về lập trình song song với MPI 8 2.2.1 Giới thiệu 8 2.2.2 Một số đặc điểm của MPI 9 2.2.3 Mục tiêu thiết kế của MPI bao gồm: 10 2.2.4 Năng lực tính toán 12 2.2.5 Mô hình lập trình 14 2.2.6 Lập trình MPI 14 2.2.7 Giao tiếp Point to Point 16 2.2.8 Tham số trong các hàm 17 CHƯƠNG III: GIẢI QUY쨃ĀT BÀI TOÁN 18 3.1 Phát biểu bài toán 18 3.2 Giới thiệu các phương pháp giải phương trình tuyến tính song song 19 3.2.1 Phương pháp Cramerv 19 3.2.2 Phương pháp Gauss 21 Downloaded by SAU SAU (saudinh1@gmail.com) lOMoARcPSD|39269578 3.2.3 Phương pháp lặp đơn 24 3.2.4 Phương pháp lặp Jacobi 26 3.2.5 Phương pháp Gauss-Seidel 29 3.3 Giải quyết bài toán bằng thuật toán tuần tự và song song 33 3.3.1 Tìm hiểu về khái niệm của thuật toán tuần tự và song song 33 3.3.2 Cài đặt chương trình 33 3.3.3.1 Thuật toán tuần tự 33 3.3.3.2 Thuật toán song song 35 CHƯƠNG IV: K쨃ĀT LUẬN 39 Downloaded by SAU SAU (saudinh1@gmail.com) lOMoARcPSD|39269578 CHƯƠNG I: MỞ ĐẦU 1.1 Ý tưởng nghiên cứu Hiện nay, nhu cầu tính toán trong lĩnh vực khoa học và công nghệ ngày càng cao và trở thành một thách thức vì phương pháp xử lý tuần tự với một bộ xử lý không thể đáp ứng được Vì vậy việc xây dựng các hệ thống máy tính mạnh là một nhiệm vụ quan trọng trong lĩnh vực tính toán hiệu năng cao (High Performance Computing) Các bài toán phức tạp và đòi hỏi sự tính toán lớn luôn được tìm thấy và không ngừng tăng lên nhằm để giải quyết các bài toán trong lĩnh vực khoa học và công nghệ Nhận thấy được tầm quan trọng đó, nhóm chúng em đã quyết định chọn đề tài “Đánh giá hiệu năng cao bài toán giải phương trình tuyến tính sử dụng MPI” với mong muốn nghiên cứu, tìm tòi, phát triển một chương trình sử dụng tính toán song song để giúp xử lý bài toán một cách nhanh chóng và dễ dàng hơn 1.2 Những kiến thức và kỹ năng cần đạt được ➢ Kiến thức cơ bản về môn học tính toán hiệu năng cao ➢ Kiến thức cơ bản về MPI ➢ Kỹ năng làm việc nhóm 1.3.Yêu cầu về đầu ra sản phẩm nghiên cứu ➢ Tiết kiệm thời gian, công sức về xử lý bài toán ➢ Lưu trữ thông tin an toàn ➢ Thuận tiện cho việc sử dụng chương trình để xử lý bài toán phương trình tuyến tính 1.4 Ý tưởng về hoạt động của sản phẩm Sản phẩm được tạo ra bằng phương pháp nghiên cứu, tìm tòi, phát triển đồng thời cài đặt, chạy một chương trình giải bài toán phương trình tuyến tính sử dụng MPI trong tính toán song song Downloaded by SAU SAU (saudinh1@gmail.com) lOMoARcPSD|39269578 1.5 Các công cụ được sử dụng để làm sản phẩm ➢ Visual studio Downloaded by SAU SAU (saudinh1@gmail.com) lOMoARcPSD|39269578 CHƯƠNG II : KI쨃ĀN THỨC CƠ SỞ 2.1 Giới thiệu về tính toán song song 2.1.1 Tính toán song song là gì? ➢ Thông thường, phần mềm được viết cho tính toán tuần tự (serial computation): ● Được chạy trên máy tính đơn với một bộ xử lý trung tâm (CPU) ● Một bài toán (problem) sẽ được chia thành một chuỗi các câu lệnh rời rạc ● Các câu lệnh được thực hiện một cách tuần tự ● Tại mỗi thời điểm chỉ thực hiện được một câu lệnh ➢ Ý nghĩa đơn giản nhất của tính toán song song là việc sử dụng đồng thời nhiều tài nguyên máy tính để giải quyết bài toán về tính toán ● Để chạy trên nhiều CPU ● Một bài toán được chia thành các phần riêng biệt mà có thể được giải quyết đồng thời ● Mỗi phần được chia nhỏ hơn dưới một dãy các câu lệnh ● Các câu lệnh của mỗi phần thực thi đồng thời trên các CPU khác nhau ➔ Tính toán song song là một hình thức tính toán trong đó nhiều phép tính được thực hiện đồng thời, hoạt động trên nguyên tắc là những vấn đề lớn đều có thể chia thành nhiều phần nhỏ hơn, sau đó được giải quyết tương tranh ("trong lĩnh vực tính toán") 2.1.2 Tài nguyên ➢ Các nguồn tài nguyên tính toán có thể bao gồm: ● Một máy tính đơn với nhiều bộ vi xử lý (CPU); Downloaded by SAU SAU (saudinh1@gmail.com) lOMoARcPSD|39269578 ● Một máy tính đơn với một hoặc nhiều CPU và một số tài nguyên chuyên dụng như GPU, FPGA …; ● Một số lượng tùy ý các máy tính được kết nối bởi một mạng máy tính; ● Hoặc kết hợp của cả hai loại trên 2.1.3 Các vấn đề tính toán ➢ Vấn đề tính toán thường được thể hiện qua các đặc điểm như khả năng: ● Chia thành các phần riêng biệt các công việc để có thể giải quyết cùng một lúc; ● Thực thi nhiều câu lệnh chương trình tại nhiều thời điểm; ● Giải quyết bài toán trong thời gian ít hơn với nhiều tài nguyên tính toán hơn là thực thi chỉ trên một tài nguyên tính toán duy nhất 2.1.4 Các giới hạn của tính toán tuần tự ➢ Các giới hạn để tính toán tuần tự - Cả hai lý do giới hạn về vật lý và thực tiễn đặt ra những hạn chế đáng kể để xây dựng được ứng dụng chạy nhanh hơn trên máy tính tuần tự ➢ Tốc độ truyền dẫn – Tốc độ của máy tính tuần tự phụ thuộc trực tiếp vào tốc độ di chuyển của dữ liệu trên phần cứng ➢ Giới hạn để thu nhỏ - công nghệ bộ vi xử lý ngày càng cho phép tăng số transistor được đặt trên các con chip Tuy nhiên, thậm chí ngay cả các transistor có kích thước là phân tử hoặc mức nguyên tử thì số lượng tích hợp trên thiết bị cũng sẽ đạt tới giới hạn ➢ Hạn chế về kinh tế - Giá thành sẽ càng đắt khi tạo ra một bộ đơn vi xử lý (VXL) chạy nhanh Sẽ kinh tế hơn nếu sử dụng một số lượng bộ vi xử lý nhanh vừa phải nhưng có thể đạt được hiệu suất như bộ VXL đơn chạy nhanh (hoặc tốt hơn) 2.1.5 Các kiến trúc bộ nhớ ➢ Bộ nhớ chia sẻ - Shared Memory Downloaded by SAU SAU (saudinh1@gmail.com) lOMoARcPSD|39269578 ➢ Bộ nhớ phân tán - Distributed Memory ➢ Lai bộ nhớ chia sẻ và phân tán - Hybrid Distributed Shared Memory 2.1.6 Các mô hình lập trình song song ➢ Mô hình chia sẻ bộ nhớ ➢ Mô hình luồng (Thread) ➢ Mô hình gửi thông điệp (MPI) ➢ Mô hình song song dữ liệu ➢ Các mô hình khác 2.2 Tổng quan về lập trình song song với MPI 2.2.1 Giới thiệu Message Passing Interface – MPI là một chuẩn mới được sử dụng rộng rãi nhất Nó không phải là một ngôn ngữ lập trình mới, thay vào đó nó là một thư viện của chương trình con mà có thể được gọi từ chương trình C và Fortran 77 MPI được phát triển bởi một diễn đàn mở quốc tế, bao gồm các đại diện từ ngành công nghiệp, các học viện và phòng thí nghiệm của chính phủ Nó đã nhanh chóng được chấp nhận rộng rãi bởi được thiết kế cẩn thận cho phép hiệu suất tối đa trên một loạt các hệ thống, và nó dựa trên truyền thông điệp, một trong những mô hình mạnh mẽ nhất và được sử dụng rộng rãi cho lập trình các hệ thống song song.Những nỗ lực cho MPI bắt đầu vào mùa hè năm 1991, khi một nhóm nhỏ các nhà nghiên cứu bắt đầu thảo luận tại một nơi hẻo lánh trên núi ở Úc.Nội dung đó lại được thảo luận tại hội thảo “tiêu chuẩn cho truyền thông điệp trong một môi trường bộ nhớ phân tán” (Standards for Message Passing in a Distributed Memory environment) tổ chức vào ngày 29 – 30 tháng 4 năm 1992 tại Williamsburg, Virginia Tại hội thảo này, các tính năng cơ bản cần thiết cho một MPI chuẩn đã được thảo luận, mà một nhóm cộng tác đã được thành lập để tiếp tục quá trình tiêu chuẩn hoá Jack Dongarra, Rolf Hempel Hempel, Tony Hey và David W.Walker đưa ra một bản dự thảo sơ bộ được biết đến như MPI-1 trong tháng Downloaded by SAU SAU (saudinh1@gmail.com) lOMoARcPSD|39269578 11 năm 1992 Trong tháng 11 năm 1992, một cuộc họp của nhóm cộng tác MPI đã được tổ chức tại Minneapolis, mà tại đó hội thảo quyết định đặt các quá trình tiêu chuẩn hoá trên một cơ sở chính thức hơn Nhóm cộng tác MPI đã gặp nhau 6 tuần một lần trong suốt 9 tháng đầu của năm 1993 Bản dự thảo chuẩn MPI đã được trình bày tại hội nghị Siêu máy tính năm 93 trong tháng 11 năm 1993 Sau một thời gian nhận những ý kiến đóng góp từ cộng đồng, một số kết quả được thay đổi trong MPI, phiên bản 1.0 của MPI được phát hành vào tháng 6 năm 1994 Thông qua những cuộc gặp gỡ và thư điện tử, các nhà nghiên cứu đã thảo luận với nhau thành lập diễn đàn MPI, trong đó tất cả các thành viên của cộng đồng điện toán hiệu suất cao đều có thể đăng ký làm thành viên của diễn đàn MPI đã thu hút sự tham gia khoảng 80 người từ 40 tổ chức, chủ yếu là ở Mỹ và Châu Âu Hầu hết các nhà cung cấp chính của máy tính đều được tham gia vào MPI cùng với các nhà nghiên cứu từ các trường đại học, phòng thí nghiệm của chính phủ và ngành công nghiệp 2.2.2 Một số đặc điểm của MPI MPI là một giao thức truyền thông độc lập với ngôn ngữ dùng để lập trình máy tính song song MPI hỗ trợ cả giao tiếp điểm – điểm và giao tiếp tập thể Mục tiêu của MPI là hiệu suất, khả năng mở rộng và khả năng di dộng cao.MPI thường xuyên chạy trên các máy tính chia sẻ bộ nhớ.Mặc dù MPI thuộc về lớp thứ 5 và lớp cao hơn của mô hình OSI, nhưng những triển khai có thể bao gồm hầu hết các lớp, với socket và TCP (Transmission Control Protocol) được dùng trong tần vận chuyển.Hầu hết các triển khai MPI bao gồm một thiết lập định tuyến riêng có thể được gọi trực tiếp từ C, C++, Fortran hay bất kỳ ngôn ngữ nào có giao diện với các thư viện, bao gồm C#, Java hoặc Python Những ưu điểm ucar MPI vượt qua những thư viện truyền thông điệp cũ là tính di động (MPI có thể được triển khai cho hầu hết các kiến trúc bộ nhớ phân tán) và tốc độ (MPI thực hiện nguyên tắc tối ưu hoá cho Downloaded by SAU SAU (saudinh1@gmail.com) lOMoARcPSD|39269578 phần cứ mà nó chạy) MPI sử dụng LIS (Language Independent Specifications) để gọi và ràng buộc ngôn ngữ Phiên bản đầu tiên được phát hành chỉ định ràng buộc ANSI C và Fortran 77 cùng với LIS Năm 2008, chuẩn MPI-1.3 chứa khoảng 128 chức năng, đây cũng là phát hành cuối cùng của seri MPI-1 trong năm 2008 Phiên bản MPI-2.2 bao gồm những tính năng nới như là I/O song song, quản lý tiến trình động và điều hành bộ nhớ từ xa LIS của MPI-2 thiết lập hơn 500 hàm và cung cấp ràng buộc ngôn ngữ cho ANSI C, ANSI C++ và ANSI Fortran (Fortran 90) Khả năng tương tác đối tượng cũng được thêm vào để cho phép lập trình truyền thông điệp bằng ngôn ngữ hỗn hợp dễ dàng hơn MPI cung cấp mô hình liên kết ảo, đồng bộ hoá và chức năng liên lạc giữa một tập hợp các tiến trình (đã được ánh xạ tới các nút/máy chủ/máy tính cụ thể) trong một ngôn ngữ độc lập, với cú pháp ngôn ngữ đặc trưng (ràng buộc), cùng với một vài tính năng ngôn ngữ đặc trưng Những chương trình MPI luôn luôn làm việc với các tiến trình, nhưng những lập trình viên thường xem các tiến trình như là những bộ vi xử lý Thông thường, để đạt hiệu suất tối đa, mỗi CPU (hoặc 1 nhân trong một máy tính đa nhân) sẽ được giao chỉ một tiến trình duy nhất.Những chức năng thư viện MPI bao gồm (không giới hạn) những hoạt động nhận/gửi loại điểm – điểm, lựa chọn giữa mô hình xử lý logic Cartesian hoặc mô hình xử lý logic đồ thị tương đồng, trao đổi dữ liệu giữa những cặp tiến trình, kết hợp các kết quả từng phần của tính toán (thu thập và giảm các hoạt động), đồng bộ hoá các nút cũng như thu thập thông tin liên quan đến mạng như số lượng của tiến trình trong phiên tính toán, nhận dạng bộ vi xử lý hiện tại mà bộ vi xử lý được ánh xạ, những tiến trình lân cận truy cập trong một mô hình liên kết logic 2.2.3 Mục tiêu thiết kế của MPI bao gồm: ➢ Thiết kế một giao diện lập trình ứng dụng Mặc dù MPI gần đây được Downloaded by SAU SAU (saudinh1@gmail.com)