1. Trang chủ
  2. » Luận Văn - Báo Cáo

ĐÁNH GIÁ HIỆU NĂNG TÍNH TÍCH 2 MA TRẬN SỬ DỤNG THƯ VIỆN OPENMP

32 10 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

Thông tin cơ bản

Định dạng
Số trang 32
Dung lượng 1,2 MB

Nội dung

Như chúng ta đã thấy các phần mềm phổ biến ngày nay hầu hết đều được viết trên cơ sở của tính toán tuần tự. Các phần mềm này thường được thực hiện trên một máy tính đơn với duy nhất một bộ xử lý. Vấn đề ở đây được giải quyết thông qua một chuỗi các lệnh tuần tự được thực hiện bởi một bộ xử lý. Tại một thời điểm chỉ có một lệnh được thực hiện. Tính toán song song ra đời là một sự cải tiến của tính toán tuần tự. Nó là sự giải quyết vấn đề dựa trên sự thực thi đồng thời của nhiều tài nguyên máy tính. Tài nguyên máy tính đây bao gồm: Một máy tính đơn với nhiều bộ xử lý Nhiều máy tính nối lại với nhau thành một mạng máy tính Kết hợp cả hai loại trên Tính toán song song thường được dùng để giải quyết các vấn đề hết sức phức tạp yêu cầu thời gian tính toán lớn hoặc làm việc với khối dữ liệu lớn như các bài toán dự báo thời tiết, mô phỏng tai nạn xe hơi, xây dựng các mô hình thương mại và các vấn đề khoa học như khai phá dữ liệu , trí tuệ nhân tạo, an toàn dữ liệu… 1.1.2 Tại sao phải tính toán song song?

TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI KHOA CÔNG NGHỆ THÔNG TIN BÁO CÁO BÀI TẬP LỚN HỌC PHẦN: TÍNH TỐN HIỆU NĂNG CAO ĐÁNH GIÁ HIỆU NĂNG TÍNH TÍCH MA TRẬN SỬ DỤNG THƯ VIỆN OPENMP GVHD: Nhóm : Thành viên: T.S Hà Mạnh Đào Đinh Đại Việt - 2020607115 NguyễnTrung Kiên - 2020602618 Nguyễn Tuấn Vũ_2020605541 Hà Nội, 2023 LỜI MỞ ĐẦU Sự phát triển mở rộng phạm vi ứng dụng công nghệ thông tin gặp phải hai thách thức lớn khơng gian nhớ tốc độ xử lí máy tính Một số toán thực tiễn nghiên cứu lý thuyết đặt đòi hỏi phải xử lý nhanh sở liệu đồ sộ, đặc biệt lĩnh vực trí tuệ nhân tạo, nhận dạng, xử lí ảnh, điều khiển tự động, mơ phỏng, toán dự báo, mà phương pháp cơng cụ tính tốn truyền thống khơng thể đáp ứng Trong trường hợp ấy, ta tìm cách phân rã tốn thành tốn có kích thước quy mơ liệu nhỏ Tuy nhiên điều khơng phải thực Xử lí song song (parallel processing) giải pháp giúp ta xử lý tình nêu Hiện có nhiều chuẩn hỗ trợ lập trình song song OpenMP hỗ trợ lập trình song song nhớ phân tán, OpenMP hỗ trợ lập trình nhớ chia chung, Pthread hỗ trợ lập trình luồng, Bài báo giới thiệu kiến thức tính tốn song song lập trình song song Ngồi cịn trình bày khái niệm OpenMP, nguyên tắc lập trình song song với openMP Sử dụng thư viện hàm openMP lập trình minh họa tốn nhân hai ma trận thuật toán Cannon Rút kết luận thời gian chạy chương trình giải thuật giải thuật song song Do kiến thức, kinh nghiệm cịn hạn chế nên báo cáo cịn có số lỗi sai, chương trình không vài trường hợp, mong thầy bạn góp ý, giúp đỡ để chúng em hoàn thiện Chúng em xin cảm ơn! Mục Lục Chương Tổng quan mơ hình lập trình song song với MPI 1.1 Tính toán song song 1.1.1 Tính tốn song song gì? 1.1.2 Tại phải tính tốn song song? 1.1.3 Các thành phần liên quan đến tính tốn song song 1.1.4 Nguyên lý thiết kế thuật toán song song 1.2 Giới thiệu OpenMP .8 1.2.1 Khái niệm OpenMP 1.2.2 Lịch sử OpenMP 1.2.3 Mục đích ứng dụng OpenMP 1.2.4 Mơ hình lập trình song song OpenMP .9 Chương Phương pháp giải toán 14 2.1 Bài toán nhân ma trận dày đặc (dense) thuật toán Cannon 14 2.1.1 Ma trận dày đặc (dense) gì? 14 2.1.2 Phép nhân ma trận 14 2.1.3 Thiết kế thuật toán song song nhân ma trận dày đặc (dense) .15 2.2 Tính tích ma trận thuật toán thuật toán song song 18 2.2.1 Thuật toán 18 2.2.2 Thuật toán song song .20 2.3 Một số vấn đề hiệu 22 Chương Thực nghiệm kết 24 3.1 Cấu hình thiết bị .24 3.2 Kết thực 25 3.3 Kết luận 30 Tài liệu tham khảo .31 Hình 1: Mơ Hình Fork-Join 11 Hình ví dụ ma trận dày đặc 17 Hình Tách ma trận thành khối 17 Hình Căn chỉnh ma trận 17 Hình Nhân ma trận .18 Hình Đổi vị trí 18 Hình Lặp lại bước 3&4 19 Hình So sánh thời gian chạy 24 Hình So sánh thời gian chạy 24 Hình 10 Cấu hình thiết bị 26 Hình 11Biểu đồ so sánh thời gian tính tốn trung bình 28 Hình 12 Biểu đồ so sánh thời gian tính tốn lâu 29 Hình 13 Biểu đồ Speed Up 30 Hình 14 Biểu đồ Efficiency 30 Chương Tổng quan mơ hình lập trình song song với MPI 1.1 Tính tốn song song 1.1.1 Tính tốn song song gì? Như thấy phần mềm phổ biến ngày hầu hết viết sở tính tốn Các phần mềm thường thực máy tính đơn với xử lý Vấn đề giải thông qua chuỗi lệnh thực xử lý Tại thời điểm có lệnh thực Tính tốn song song đời cải tiến tính tốn Nó giải vấn đề dựa thực thi đồng thời nhiều tài nguyên máy tính Tài nguyên máy tính bao gồm: - Một máy tính đơn với nhiều xử lý - Nhiều máy tính nối lại với thành mạng máy tính - Kết hợp hai loại Tính tốn song song thường dùng để giải vấn đề phức tạp yêu cầu thời gian tính toán lớn làm việc với khối liệu lớn tốn dự báo thời tiết, mơ tai nạn xe hơi, xây dựng mơ hình thương mại vấn đề khoa học khai phá liệu , trí tuệ nhân tạo, an tồn liệu… 1.1.2 Tại phải tính tốn song song? Việc tính tốn song song cần thiết Ngồi hai ngun nhân dùng để tính tốn tốn u cầu thời gian tính tốn lớn khối lượng liệu lớn cịn có ngun nhân khác để sử dụng tài nguyên máy khác mạng LAN thông qua mạng internet, sử dụng nhiều tài ngun tính toán nhỏ kết hợp lại tạo nên siêu máy tính Do giới hạn khơng gian lưu trữ nhớ máy đơn để giải vấn đề lớn việc sử dụng nhiều nhớ nhiều máy tính hữu hiệu trường hợp Giới hạn tính tốn bao gồm hai nguyên nhân thực tế nguyên nhân vật lý Để xây dựng nên máy tính tốc độ cao gặp nhiều hạn chế: - Về tốc độ truyền liệu: Tốc độ truyền máy tính phụ thuộc trực tiếp vào di chuyển liệu phần cứng Cho nên việc tăng tốc độ thực phải chủ yếu vào yếu tố tính tốn - Về kích cỡ: Cơng nghệ chế tạo xử lý cho phép gắn nhiều bóng bán dẫn chip Tuy nhiên việc làm làm tăng kích thước xử lý - Về thương mại: Việc tạo xử lý tốc độ xử lý cao tốn Sử dụng nhiều xử lý nhỏ đạt hiệu tương tự mà lại tốn 1.1.3 Các thành phần liên quan đến tính tốn song song - Kiến trúc máy tính song song - Phần mềm hệ thống - Giải thuật song song - Ngôn ngữ lập trình song song 1.1.4 Nguyên lý thiết kế thuật tố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ế 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 đồng Khi thiết kế thuật tố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 tốn cho thời gian tính tố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ý á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 - 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 tố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 tốn song song ta cịn phải ý đến kiến trúc hệ thống tính tốn Khi chuyển thuật toán sang thuật toán song song chuyển thuật tốn song song thích hợp với kiến trúc có Cần xác định yêu cầu sau: - Kiến trúc tính tố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.2 Giới thiệu OpenMP 1.2.1 Khái niệm OpenMP OpenMP giao diện lập trình ứng dụng (API) sử dụng để điều khiển luồng cấu trúc chia sẻ nhớ chung Thành phần OpenMP bao gồm : Các thị biên dịch (Compiler Directives) Các thư viện runtime (Runtime Library Routines) Các biến môi trường (Emviroment Variables) Các thị biên dịch, thư viện runtime biến môi trường sử dụng để lập trình song song với hai ngơn ngữ Fortran C/C++ OpenMP chuẩn nhớ chia sẻ hỗ trợ nhiều phần cứng phần mềm DEC, Intel, IBM, SGI, Numerical Algorithms Group Hơn OpenMP cịn thực thi mơi trường UNIX Windows NT 2.1.2 1.2.2 Lịch sử OpenMP Ngay từ trước thập kỷ 90 Các nhà cung cấp máy tính chia sẻ nhớ đưa sản phẩm hỗ trợ đồng thị Để lập trình chương trình song song kiến trúc dạng ngơn ngữ Fortran sử dụng với nhiều tiện dụng Người sử dụng làm giảm thời gian thực chương trình Fortran cách thực vòng lặp theo cách song song Trong trường hợp trình biên dịch phải chịu trách nhiệm song song hóa cách tự động vịng lặp thơng qua BXL SMP Tuy nhiên nhà cung cấp lại sử dụng phương thức thực thi khác phụ thuộc vào tảng phần cứng kiến trúc riêng họ Để đưa chuẩn hỗ trợ việc lập trình song song kiến trúc chia sẻ bộnhớ năm 1994 chuẩn ANSI X3H5 đời Nhưng khơng tồn lâu thời gian máy tính nhớ phân tán trở nên phổ biến Chuẩn OpenMP bắt đưa vào mùa xuân năm 1997 để thay chuẩn ANSI X3H5 Trong thời gian máy tính chia sẻ nhớ thịnh hành Bên cạnh Pthread đưa Pthread khơng có tính mở rộng, khơng có thị biên dịch Pthread khơng hỗ trợ song song tốt, người lập trình khó thực thiện việc song song hóa nhờ vào Pthread Với Pthread người lập trình phải quan tâm nhiều đến chi tiết mức thấp Và OpenMP thiết kế để giảm bới nhược điểm Pthread 1.2.3 Mục đích ứng dụng OpenMP OpenMP đời với mục tiêu cung cấp chuẩn chung cho nhiều kiến trúc tảng phần cứng Nó thiết lập tập thị biên dịch hỗ trợ việc lập trình song song máy tính chia sẻ nhớ chung Một mức song song thường thực thi với ba đến bốn thị OpenMP đời giúp cho việc lập trình song song cách dễ dàng cung cấp khả song song hóa chương trình mà khơng dùng đến thư viện thơng điệp v.v Có thể sử dụng OpenMP để giải quết vấn đề giới hạn thời gian toán dự báo thời tiết, để mơ vấn đề thực tế tốn mô tai nạn xe hơi, giải tốn khoa học u cầu khối lượng tính tốn lớn tốn mơ N-Body, dự báo thời tiết … 1.2.4 Mơ hình lập trình song song OpenMP 1.2.4.1 Song song hóa dựa chế luồng (Thread based a chế luồng (Thread based chế luồng (Thread based luồng (Thread based ng (Thread based parallelism) Trong mơ hình chương trình xử lý nhớ toàn cục bao gồm nhiều luồng thực thi đồng thời OpenMP dựa vào tồn nhiều luồng mơ hình lập trình chia sẻ nhớ chung 1.2.4.1.1 Mơ hình song song (Explicit Parallelism) n (Explicit Parallelism) Mơ hình mơ hình lập trình khơng tự động Người lập trình có quyền điều khiển việc song song hóa cách độc lập 1.2.4.1.2 Mơ hình Fork-Join Trong mơ hình OpenMP sử dụng mơ hình Fork-Join để thực thi cơng việc song song Trong mơ hình tất chương trình song song bắt đầu với việc xử lý đơn luồng chủ (master thread) Luồng chủ thực thi cách bắt gặp vùng song song (parallel region) FORK: Có nghĩa luồng chủ sau tạo tập luồng song song Và sau đoạn mã vùng song song thực thi song song tập luồng song song vừa tạo 10 Hình Căn chỉnh ma trận Mỗi khối gửi đến quy trình phần phụ chép từ khối nhân với kết thêm vào tiểu khối C Hình Nhân ma trận Các khối A đẩy sang trái bước khối B cuộn lên bước 18 Hình Đổi vị trí Lặp lại bước & √p lần: Hình Lặp lại bước 3&4 19 2.2 Tính tích ma trận thuật toán thuật toán song song 2.2.1 Thuật toán #include #include #include #include #include #define N 4000 // Kich thuoc ma tran NxN int main() { int** a = (int**)malloc(N * sizeof(int*)); for (int i = 0; i < N; i++) { a[i] = (int*)malloc(N * sizeof(int)); } int** b = (int**)malloc(N * sizeof(int*)); for (int i = 0; i < N; i++) { b[i] = (int*)malloc(N * sizeof(int)); } int** c = (int**)malloc(N * sizeof(int*)); for (int i = 0; i < N; i++) { c[i] = (int*)malloc(N * sizeof(int)); } clock_t start, end; double dif; printf("Khoi tao ma start = clock(); for (int i = 0; i < { for (int j = 0; { a[i][j] = i } } tran \n"); N; i++) j < N; j++) + j; for (int i = 0; i < N; i++) { for (int j = 0; j < N; j++) { b[i][j] = i * j; } } for (int i = 0; i < N; i++) { for (int j = 0; j < N; j++) { c[i][j] = 0; } } printf("Nhan hai ma tran \n"); 20

Ngày đăng: 12/01/2024, 11:25

TỪ KHÓA LIÊN QUAN

w