ĐÁNH GIÁ HIỆU NĂNG CAO GIẢI PHƯƠNG TRÌNH TUYẾN TÍNH SỬ DỤNG MPI

30 6 0
ĐÁNH GIÁ HIỆU NĂNG CAO GIẢI PHƯƠNG TRÌNH  TUYẾN TÍNH 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

Hiện nay, yêu cầu về khả năng tính toán trong ngành khoa học công nghệ ngày càng gia tăng và điều này đã trở thành một thách thức do phương pháp xử lý tuần tự với một bộ xử lý không đủ để đáp ứng. Việc đó đã tạo ra nhu cầu cấp bách để phát triển các hệ thống máy tính mạnh, đặt ra một nhiệm vụ then chốt trong lĩnh vực tính toán hiệu năng cao (High Performance Computing). Các vấn đề phức tạp, đòi hỏi sự tính toán lớn luôn tồn tại và không ngừng tăng để giải quyết những thử thách trong lĩnh vực khoa học và công nghệ. Nhận thức được sự quan trọng này, nhóm của chúng em đã quyết định lựa chọn đề tài Đánh giá hiệu năng cao giải phương trình tuyến tính sử dụng MPI với hy vọng nghiên cứu, khám phá, và phát triển một chương trình sử dụng tính toán song song để giúp xử lý vấn đề một cách nhanh chóng và thuận tiện hơn.

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 GIẢI PHƯƠNG TRÌNH TUYẾN TÍNH SỬ DỤNG MPI Giảng viên hướng dẫn : Ts Hà Mạnh Đào Lớp : 20231IT6069001 Khóa: : K16 Nhóm thực : Nhóm Thành Viên: Ngô Quý Điệp – 2021602059 Nguyễn Mạnh Đức – 2021600454 Vũ Hoàng Dương – 2021600935 Hà Nội 2023 MỤC LỤC CHƯƠNG I: MỞ ĐẦU 1.1 Ý tưởng nghiên cứu .4 1.2 Những kiến thức kỹ cần có 1.3 Ý tưởng sản phẩm .4 1.4 Yêu cầu kết sản phẩm nghiên cứu 1.5 Công cụ sử dụng để tạo sản phẩm CHƯƠNG II: KIẾN THỨC CƠ SỞ 2.1 Giới thiệu tính tốn song song 2.1.1 Tính tốn song song gì? 2.1.2 Tài nguyên 2.1.3 Các vấn đề tính tốn 2.1.4 Các giới hạn tính tốn .6 2.1.5 Các kiến trúc nhớ 2.1.6 Các mơ hình lập trình song song 2.2 Tổng quan lập trình song song với MPI 2.2.1 Giới thiệu .7 2.2.2 Một số đặc điểm MPI 2.2.3 Mục tiêu thiết kế MPI bao gồm: 2.2.4 Năng lực tính tốn .11 2.2.5 Mơ hình lập trình .13 2.2.6 Lập trình MPI 13 2.2.7 Giao tiếp Point to Point .15 2.2.8 Tham số hàm .15 CHƯƠNG III: GIẢI QUYẾT BÀI TOÁN 16 3.1 Phát biểu toán 16 3.2 Giới thiệu phương pháp giải phương trình tuyến tính song song .17 3.2.1 Phương pháp Gauss 17 3.2.2 Phương pháp lặp đơn 20 3.2.3 Phương pháp Gauss-Seidel 21 3.3 Giải toán thuật toán song song 24 3.3.1 Tìm hiểu khái niệm thuật toán song song24 3.3.2 Cài đặt chương trình 24 3.3.3.1 Thuật toán .24 3.3.3.2 Thuật toán song song 26 CHƯƠNG IV: KẾT LUẬN 29 CHƯƠNG I: MỞ ĐẦU 1.1 Ý tưởng nghiên cứu Hiện nay, u cầu khả tính tốn ngành khoa học công nghệ ngày gia tăng điều trở thành thách thức phương pháp xử lý với xử lý khơng đủ để đáp ứng Việc tạo nhu cầu cấp bách để phát triển hệ thống máy tính mạnh, đặt nhiệm vụ then chốt lĩnh vực tính tốn hiệu cao (High Performance Computing) Các vấn đề phức tạp, địi hỏi tính tốn lớn ln tồn khơng ngừng tăng để giải thử thách lĩnh vực khoa học công nghệ Nhận thức quan trọng này, nhóm chúng em định lựa chọn đề tài "Đánh giá hiệu cao giải phương trình tuyến tính sử dụng MPI" với hy vọng nghiên cứu, khám phá, phát triển chương trình sử dụng tính toán song song để giúp xử lý vấn đề cách nhanh chóng thuận tiện 1.2 Những kiến thức kỹ cần có  Kiến thức tính tốn hiệu cao  Kiến thức phương trình tuyến tính  Kiến thức MPI  Kỹ làm việc nhóm 1.3 Ý tưởng sản phẩm Sản phẩm tạo qua nghiên cứu, phát triển cài đặt, sử dụng chương trình để giải phương trình tuyến tính sử dụng MPI 1.4 Yêu cầu kết sản phẩm nghiên cứu  Giảm thiểu tối đa thời gian xử lý tốn  Thành cơng sử dụng chương trình để giải tốn 1.5 Cơng cụ sử dụng để tạo sản phẩm  Visual Studio 2022 (Community) CHƯƠNG II: KIẾN THỨC CƠ SỞ 2.1 Giới thiệu tính tốn song song 2.1.1 Tính tốn song song gì? ➢ Ý nghĩa đơn giản tính tốn song song lĩnh vực khoa học máy tính việc sử dụng đồng thời nhiều tài nguyên máy tính để giải tốn tính tốn ● Để chạy nhiều CPU ● Một toán chia thành phần riêng biệt mà giải đồng thời ● Mỗi phần chia nhỏ dãy câu lệnh ● Các câu lệnh phần thực thi đồng thời CPU khác ➔ Tính tốn song song phương pháp lĩnh vực khoa học máy tính tính tốn, tác vụ thực đồng thời (song song) nhiều tài ngun tính tốn độc lập Mục tiêu tính tốn song song tận dụng hiệu suất tốc độ xử lý hệ thống máy tính cách phân chia cơng việc thành tác vụ nhỏ hơn, sau thực chúng đồng thời nhiều xử lý độc lập 2.1.2 Tài ngun ➢ Các nguồn tài ngun tính tốn bao gồm: ● Một máy tính đơn với nhiều vi xử lý (CPU); ● Một máy tính đơn với nhiều CPU số tài nguyên chuyên dụng GPU, FPGA …; ● Một số lượng tùy ý máy tính kết nối mạng máy tính; ● Hoặc kết hợp loại 2.1.3 Các vấn đề tính tốn ➢ Vấn đề tính tốn thường thể qua đặc điểm khả năng: ● Chia thành phần riêng biệt cơng việc để giải lúc; ● Thực thi nhiều câu lệnh chương trình nhiều thời điểm; ● Giải toán thời gian với nhiều tài ngun tính tốn thực thi tài ngun tính tốn 2.1.4 Các giới hạn tính tốn ➢ Các giới hạn để tính tốn - Cả hai lý giới hạn vật lý thực tiễn đặt hạn chế đáng kể để xây dựng ứng dụng chạy nhanh máy tính ➢ Hiệu suất giới hạn: Trong tính tốn tuần tự, tác vụ thực cách Điều có nghĩa sử dụng nguồn tài nguyên tính tốn để thực tác vụ Do đó, hiệu suất hệ thống bị giới hạn khả xử lý nguồn tài nguyên ➢ Thời gian xử lý kéo dài: Khi tác vụ phải chờ đợi tác vụ trước hồn thành, thời gian xử lý tổng thể kéo dài Điều đặc biệt đáng kể tác vụ có thời gian xử lý lâu phải chờ đợi liệu từ tác vụ trước để tiếp tục ➢ Giới hạn để thu nhỏ - công nghệ vi xử lý ngày cho phép tăng số transistor đặt chip Tuy nhiên, thậm chí transistor có kích thước phân tử mức ngun tử số lượng tích hợp thiết bị đạt tới giới hạn ➢ Khó khăn mở rộng: Khi cần mở rộng hệ thống tính tốn, tính tốn gặp khó khăn Việc thêm xử lý khơng thể tạo lợi ích song song trực tiếp cho tác vụ ➢ Hạn chế kinh tế - Giá thành đắt tạo đơn vi xử lý (VXL) chạy nhanh Sẽ kinh tế sử dụng số lượng vi xử lý nhanh vừa phải đạt hiệu suất VXL đơn chạy nhanh (hoặc tốt hơn) 2.1.5 Các kiến trúc nhớ ➢ Bộ nhớ chia sẻ - Shared Memory:  Uniform Memory Access (UMA): Truy cập nhớ đồng  Not Uniform Memory Access (NUMA): Truy cập nhớ không đồng ➢ Bộ nhớ phân tán - Distributed Memory ➢ Lai nhớ chia sẻ 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ẻ nhớ ➢ Mơ hình luồng (Thread) ➢ Mơ hình gửi thơng điệp (MPI) ➢ Mơ hình song song liệu ➢ Các mơ hình khác 2.2 Tổng quan lập trình song song với MPI 2.2.1 Giới thiệu Message Passing Interface – MPI chuẩn sử dụng rộng rãi Nó khơng phải ngơn ngữ lập trình mới, thay vào thư viện chương trình mà gọi từ chương trình C Fortran 77 MPI phát triển diễn đàn mở quốc tế, bao gồm đại diện từ ngành công nghiệp, học viện phịng thí nghiệm phủ Nó nhanh chóng chấp nhận rộng rãi thiết kế cẩn thận cho phép hiệu suất tối đa loạt hệ thống, dựa truyền thơng điệp, mơ hình mạnh mẽ sử dụng rộng rãi cho lập trình hệ thống song song Những nỗ lực cho MPI bắt đầu vào mùa hè năm 1991, nhóm nhỏ nhà nghiên cứu bắt đầu thảo luận nơi hẻo lánh núi Úc Nội dung lại thảo luận hội thảo “tiêu chuẩn cho truyền thông điệp môi trường 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 năm 1992 Williamsburg, Virginia Tại hội thảo này, tính cần thiết cho MPI chuẩn thảo luận, mà nhóm cộng tác thành lập để tiếp tục q trình tiêu chuẩn hố Jack Dongarra, Rolf Hempel Hempel, Tony Hey David W Walker đưa dự thảo sơ biết đến MPI-1 tháng 11 năm 1992 Bản dự thảo chuẩn MPI trình bày hội nghị Siêu máy tính năm 93 tháng 11 năm 1993 Sau thời gian nhận ý kiến đóng góp từ cộng đồng, số kết thay đổi MPI, phiên 1.0 MPI phát hành vào tháng năm 1994 Thông qua gặp gỡ thư điện tử, nhà nghiên cứu thảo luận với thành lập diễn đàn MPI, tất thành viên cộng đồng điện toán hiệu suất cao đăng ký làm thành viên diễn đàn MPI thu hút tham gia khoảng 80 người từ 40 tổ chức, chủ yếu Mỹ Châu Âu Hầu hết nhà cung cấp máy tính tham gia vào MPI với nhà nghiên cứu từ trường đại học, phịng thí nghiệm phủ ngành công nghiệp 2.2.2 Một số đặc điểm MPI MPI 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ợ giao tiếp điểm – điểm giao tiếp tập thể Mục tiêu MPI hiệu suất, khả mở rộng khả di dộng cao MPI thường xuyên chạy máy tính chia sẻ nhớ Mặc dù MPI thuộc lớp thứ lớp cao mơ hình OSI, triển khai bao gồm hầu hết lớp, với socket TCP (Transmission Control Protocol) dùng tần vận chuyển Hầu hết triển khai MPI bao gồm thiết lập định tuyến riêng gọi trực tiếp từ C, C++, Fortran hay ngơn ngữ có giao diện với thư viện, bao gồm C#, Java Python Những ưu điểm MPI vượt qua thư viện truyền thông điệp cũ tính di động (MPI triển khai cho hầu hết kiến trúc nhớ phân tán) tốc độ (MPI thực nguyên tắc tối ưu hố cho phần mà chạy) MPI sử dụng LIS (Language Independent Specifications) để gọi ràng buộc ngơn ngữ Phiên MPI-2.2 bao gồm tính nới I/O song song, quản lý tiến trình động điều hành nhớ từ xa LIS MPI-2 thiết lập 500 hàm cung cấp ràng buộc ngôn ngữ cho ANSI C, ANSI C++ ANSI Fortran (Fortran 90) Khả tương tác đối tượng thêm vào phép lập trình truyền thông điệp ngôn ngữ hỗn hợp dễ dàng MPI cung cấp mơ hình liên kết ảo, đồng hoá chức liên lạc tập hợp tiến trình (đã ánh xạ tới nút/máy chủ/máy tính cụ thể) ngơn ngữ độc lập, với cú pháp ngôn ngữ đặc trưng (ràng buộc), với vài tính ngơn ngữ đặc trưng Những chức thư viện MPI bao gồm (không giới hạn) hoạt động nhận/gửi loại điểm – điểm, lựa chọn mơ hình xử lý logic Cartesian mơ hình xử lý logic đồ thị tương đồng, trao đổi liệu cặp tiến trình, kết hợp kết phần tính tốn (thu thập giảm hoạt động), đồng hoá nút thu thập thông tin liên quan đến mạng số lượng tiến trình phiên tính tốn, nhận dạng vi xử lý mà vi xử lý ánh xạ, tiến trình lân cận truy cập mơ hình liên kết logic 2.2.3 Mục tiêu thiết kế MPI bao gồm: ➢ Cung cấp giao diện đơn giản hiệu cho việc giao tiếp q trình mơi trường phân tán ➢ Cho phép truyền thông cách hiệu quả: tránh việc chép liệu từ nhớ sang nhớ cho phép gối chồng (overlap) tính tốn truyền thơng offload để truyền thơng đồng xử lý ➢ Có thể gắn kết dễ dàng vào chương trình ngôn ngữ C Fortran Cung cấp giao thức truyền thông tin cậy: người dùng không cần phải lo lắng tới thất bại truyền thông Các thất bại xử lý hệ thống truyền thông sở phía sau ➢ Định nghĩa giao thức không khác biệt so với môi trường song song PVM (Parallel Virtual Machine), NX, Express cung cấp mở rộng cho phép độ linh hoạt cao ➢ Định nghĩa giao thức thực thi mơi trường (flatform) nhiều nhà cung cấp mà không cần thay đổi đáng kể truyền thông sở phần mềm hệ thống ➢ Ngữ nghĩa giao thức độc lập với ngôn ngữ ➢ Giao thức thiết kế cho phép sử dụng luồng cách an toàn * Các tính chủ yếu MPI ➢ Một lượng lớn hàm truyền thông điểm – điểm (phong phú nhiều so với môi trường lập trình song song khác) ➢ Một lượng lớn thủ tục truyền thông chọn lọc, sử dụng để giao 10 2.2.8 Tham số hàm CHƯƠNG III: GIẢI QUYẾT BÀI TỐN 3.1 Phát biểu tốn Hệ phương trình tuyến tính tập hợp hai nhiều phương trình tuyến tính có biến số giống Phương trình tuyến tính có biến, hai biến ba biến Dưới dạng tổng quát hệ với m phương trình n ẩn Dạng tổng qt hệ phương trình tuyến tính: Trong đó: ● xi: gọi ẩn hệ ● aij: gọi hệ ẩn ● bi: gọi hệ số tự Ký hiệu: Như biết, hệ phương trình tuyến tính viết dạng ma trận Do đó, hệ phương trình tuyến tính n biến viết dạng: 16 3.2 Giới thiệu phương pháp giải phương trình tuyến tính song song 3.2.1 Phương pháp Gauss ➢ Định lý Cronecker Capelly: Cho hệ phương trình tuyến tính tổng quát  a11 x1  a12 x2   a1n xn b1  a x  a x   a x b  21 22 2n n (1)    am1 x1  am x2   amn xn bm A A ma trận hệ số ma trận hệ số mở rộng Khi đó: i) Nếu rankA  rank A hệ (1) vơ nghiệm; ii) Nếu rankA rank A r hệ (1) có nghiệm Hơn nữa: ✔ Nếu r = n hệ (1) có nghiệm ✔ Nếu r < n hệ (1) có vơ số nghiệm phụ thuộc n – r tham số ➢ Thuật toán sau để giải hệ phương trình tuyến tính (gọi tḥt toán Gauss): Lập ma trận hệ số mở rộng A Bằng phép biến đổi sơ cấp dòng đưa ma trận A dạng bậc thang Giả sử ma trận bậc thang cuối có dạng: 17 0  0   A  C   0    c1*i1 c2*i2 c1n d1   c2 n d    cri* r crn d r   d r 1   d m  Hệ phương trình tương ứng với ma trận C tương đương với hệ ban đầu Do đó: ● Nếu tồn di với r  i m khác hệ vơ nghiệm ● Nếu d r 1 d r 2  dm 0 hệ có nghiệm Khi cột i1 , i2 , , ir (là cột đánh dấu * ) giữ lại bên trái xi1 , xi2 , , xir ẩn, cột cịn lại chuyển sang bên phải, ẩn xk tương ứng với cột trở thành tham số Vậy ta có  c1i1       n – r tham số hệ cho tương ứng với hệ c1i2 c2i2 c1ir d1 ( xk )   d ( xk )   crir d r ( xk )  (3) Trong di ( xk ) hàm tuyến tính xk với k i1 , i2 , , ir Hệ phương trình (3) hệ phương trình dạng tam giác ta dễ dàng giải cách dần từ lên, tức tính xir , xir , , xi1 Chú ý: Nếu trình biến đổi xuất dòng mà bên trái cịn bên phải số khác ta kết ḷn hệ phương trình vơ nghiệm khơng cần làm tiếp Nhận xét: Nếu ma trận thu cuối tḥt tốn Gauss có dạng A’|B’ A’ gọi ma trận rút gọn theo dòng bậc hay đơn giản ma trận rút gọn, ký hiệu RA 18 Khi hạng ma trận A hạng RA Các ví dụ: a) Giải hệ phương trình sau:  x1  x2  x3 0   x1  x2  x3 2 (*) 3 x  x  x   Giải: Vì | A || A1 || A2 || A3 |0 nên ta dùng phương pháp Cramer để giải hệ phương trình Ta áp dụng phương pháp Gauss để giải hệ phương trình Ta viết hệ dạng ma trận hóa sau:  2 0   d2  d2 2 d1      2   d  d  d1    1 2    d3  d3  d  2            2 0    2  0 0  1 2         / / 5  0 0  d2  d2 Vậy hệ phương trình (*) có vơ số nghiệm phụ thuộc vào tham số x3 4 4 6   x1  x2  x3   x3  x3   x3  2   x2   x3 5   x3     Chú ý: ● Khi hệ phương trình có vơ số nghiệm dù giải phương pháp ta có nhiều cách chọn biến tự ● Khi giải hệ phương trình tuyến tính nhất, ta có nhiều cách chọn hệ nghiệm  x1  x2  x3    x1  x2  3x3 2  b) Giải hệ phương trình 3 x1  x2  x3 25 19 Giải: Ta tiến hành giải thuật toán Gauss sau:   9 d  d  d   d32  d32  3d11           25  1  9   d  d3  d    11         12  16 52    9      11   0  8  Vậy hệ phương trình đầu tương đương với hệ:  x1  x2  x3     x2  x3 11  - x3 8  Do nghiệm hệ ( x1 , x2 , x3 ) (2,  3,  1) 3.2.2 Phương pháp lặp đơn Trở lại toán giải hệ phương trình tuyến tính Ax =b (1.1) Ta đưa (2.4) dạng x = Cx + d (1.2) Trong ma trận C vectơ d xây dựng từ A b Để thực phép lặp ta chọn vectơ ban đầu x(0), sau i=1,2, theo cơng thức lặp sau: Véc tơ x(k) gọi vectơ lặp thứ k ● Ta có định lý sau: ● Định lý (Sự hội tụ phương pháp) 20 tính x(i),

Ngày đăng: 12/01/2024, 19:40

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

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

Tài liệu liên quan