Đánh giá hiệu năng một số thuật toán sắp xếp sử dụng OpenMP

28 4 0
Đánh giá hiệu năng một số thuật toán sắp xếp sử dụng OpenMP

Đ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 ngày nay, với sự bùng nổ của công nghệ thông tin, các máy tính đa nhân, đa lõi đã mở ra một hướng phát triển mới về mặt tính toán. Mọi người đã không còn xa lạ với những máy tính mà ngày nay đều được trang bị những bộ xử lý có khả năng xử lý song song cao giúp tăng cường hiệu năng tính toán và giảm thời gian cho các tác vụ phức tạp. Tuy nhiên, để khai thác được hết hiệu năng tính toán mà bộ xử lý đa nhân, đa lõi mang lại thì không còn cách nào khác là thay vì lập trình, tính toán tuần tự chuyển sang lập trình, tính toán song song. Các công cụ hỗ trợ lập trình, tính toán song song nổi bật có thể kể đến như: Thư viện MPI (Message Passing Interface), CUDA (Compute Unified Device Architecture), OpenCL (Open Computing Language), OpenMP (Open Multi – Processing). Trong bài báo cáo này, chúng em sẽ tìm hiểu, áp dụng lập trình, tính toán song song trên cơ sở sử dụng thư viện OpenMP trong đề tài “Đánh giá hiệu năng một số thuật toán sắp xếp sử dụng OpenMP”. Ngoài lời mở đầu, mục lục, danh mục hình ảnh và tài liệu tham khảo thì nội dung của bài báo cáo bao gồm 3 chương:

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 TOÁN HIỆU NĂNG CAO (HPC) ĐỀ TÀI: Đánh giá hiệu số thuật toán xếp sử dụng OpenMP Giảng viên hướng dẫn : TS Hà Mạnh Đào Lớp : 20231IT6069001 Nhóm thực : Nhóm Nguyễn Quang Anh - 2021600416 Đỗ Mạnh Cường - 2021600593 Nguyễn Hồng Quân – 2021600807 Hà Nội, 2023 LỜI MỞ ĐẦU Trong thời đại ngày nay, với bùng nổ cơng nghệ thơng tin, máy tính đa nhân, đa lõi mở hướng phát triển mặt tính tốn Mọi người khơng cịn xa lạ với máy tính mà ngày trang bị xử lý có khả xử lý song song cao giúp tăng cường hiệu tính tốn giảm thời gian cho tác vụ phức tạp Tuy nhiên, để khai thác hết hiệu tính tốn mà xử lý đa nhân, đa lõi mang lại khơng cịn cách khác thay lập trình, tính tốn chuyển sang lập trình, tính tốn song song Các cơng cụ hỗ trợ lập trình, tính tốn song song bật kể đến như: Thư viện MPI (Message Passing Interface), CUDA (Compute Unified Device Architecture), OpenCL (Open Computing Language), OpenMP (Open Multi – Processing) Trong báo cáo này, chúng em tìm hiểu, áp dụng lập trình, tính toán song song sở sử dụng thư viện OpenMP đề tài “Đánh giá hiệu số thuật tốn xếp sử dụng OpenMP” Ngồi lời mở đầu, mục lục, danh mục hình ảnh tài liệu tham khảo nội dung báo cáo bao gồm chương:  Chương 1: Kiến thức sở  Chương 2: Mơ tả chi tiết thuật tốn  Chương 3: Đánh giá hiệu MỤC LỤC DANH MỤC HÌNH ẢNH Chương Kiến thức sở .5 1.1 Tính tốn hiệu cao gì? 1.2 Lập trình, tính tốn song song gì? 1.3 So sánh lập trình, tính tốn lập trình, tính tốn song song 1.4 Mơ hình máy tính tính tốn song song 1.4.1 Máy tính SISD 1.4.2 Máy tính SIMD 1.4.3 Máy tính MISD 1.4.4 Máy tính MIMD 1.5 Các mơ hình lập trình song song 1.6 Kỹ thuật thiết kế giải thuật song song 1.7 Giới thiệu OpenMP .9 1.7.1 Giới thiệu 1.7.2 Mục đích 10 Chương Mô tả chi tiết thuật toán .11 2.1 Giới thiệu số thuật toán xếp 11 2.1.1 Thuật toán merge sort .11 2.1.2 Thuật toán insertion sort 11 2.1.3 Thuật toán selection sort 11 2.2 Triển khai chi tiết 12 2.2.1 Thuật toán merge sort .12 2.2.1.1 Chương trình 12 2.2.1.2 Chương trình song song .14 2.2.2 Thuật toán insertion sort 15 2.2.2.1 Chương trình 15 2.2.2.2 2.2.3 Chương trình song song .16 Thuật toán slection sort .17 2.2.3.1 Chương trình 17 2.2.3.2 Chương trình song song .18 Chương Đánh giá hiệu .20 3.1 Đánh giá hiệu lý thuyết .20 3.1.1 Thuật toán merge sort .20 3.1.2 Thuật toán insertion sort 20 3.1.3 Thuậtt toán selection sort .21 3.2 Đánh giá hiệu thực tiễn .21 3.2.1 Thuật toán merge sort .21 3.2.1.1 Chương trình 21 3.2.1.2 Chương trình song song .22 3.2.1.3 Đánh giá .22 3.2.2 Thuật toán insertion sort 23 3.2.2.1 Chương trình 23 3.2.2.2 Chương trình song song .23 3.2.2.3 Đánh giá .24 3.2.3 Thuật toán selection sort 25 3.2.3.1 Chương trình 25 3.2.3.2 Chương trình song song .25 3.2.3.3 Đánh giá .25 TÀI LIỆU THAM KHẢO 27 DANH MỤC HÌNH ẢNH Hình 1.1 Cấu trúc máy tính SISD Hình 1.2 Cấu trúc máy tính SIMD Hình 1.3 Cấu trúc máy tính MISD Hình 1.4 Cấu trúc máy tính MIMD Hình 3.1 Kết chạy chương trình merge sort với 100 phần tử .21 Hình 3.2 Kết chạy chương trình song song merge sort với 100 phần tử 22 Hình 3.3 Kết chạy chương trình insertion sort với 100 phần tử 23 Hình 3.4 Kết chạy chương trình song song insertion sort với 100 phần tử 23 Hình 3.5 Kết chạy chương trình selection sort với 100 phần tử 25 Hình 3.6 Kết chạy chương trình song song selection sort với 100 phần tử 25 Chương Kiến thức sở 1.1 Tính tốn hiệu cao gì? Tính tốn hiệu cao (High-Performance Computing - HPC) lĩnh vực rộng lớn công nghệ thông tin khoa học máy tính, tập trung vào việc tối ưu hóa hiệu suất tính tốn hệ thống máy tính để đáp ứng u cầu tính tốn phức tạp cơng việc lớn 1.2 Lập trình, tính tốn song song gì? Tính tốn song song thực cách đồng thời hai nhiều phép tốn, cơng việc vào thời điểm, thực xử lý khác 1.3 So sánh lập trình, tính tốn lập trình, tính tốn song song Lập trình, tính tốn - Chương trình ứng dụng chạy xử lý đơn - Các thị lệnh vi xử lý (CPU) thực cách lần lượt, - Mỗi thị lệnh thực thành phần liệu - Lập trình viên cần đảm bảo viết mã lệnh theo giải thuật chương trình biên dịch, chạy cho kết Lập trình, tính tốn song song - Chương trình ứng dụng chạy hai nhiều xử lý - Các lệnh vi xử lý thực cách song song, đồng thời - Mỗi thị lệnh thao tác hai nhiều thành phần liệu khác - Lập trình viên viết mã lệnh theo giải thuật mà cịn phải chương trình đoạn mã thực song song, đồng thời - Thường áp dụng - Thường áp dụng tốn có liệu nhỏ, độ phức tạp tốn có lượng liệu lớn, độ bình thường có thời gian phức tạp cao thời gian ngắn cho phép 1.4 Mơ hình máy tính tính tốn song song Cả hai máy tính song song hoạt động tập hợp (dòng) lệnh gọi thuật toán Tập hợp lệnh (thuật toán) hướng dẫn máy tính phải làm bước Tùy thuộc vào luồng lệnh luồng liệu, máy tính phân thành bốn loại:  Máy tính luồng lệnh đơn, luồng liệu đơn (SISD)  Máy tính luồng lệnh, nhiều luồng liệu (SIMD)  Máy tính nhiều luồng lệnh, luồng liệu (MISD)  Máy tính nhiều luồng lệnh, nhiều luồng liệu (MIMD) 1.4.1 Máy tính SISD Máy tính SISD chứa control unit, processing unit memory unit Hình 1.1 Cấu trúc máy tính SISD Trong loại máy tính này, xử lý nhận luồng lệnh từ điều khiển hoạt động luồng liệu từ nhớ Trong trình tính tốn, bước, xử lý nhận lệnh từ điều khiển hoạt động liệu nhận từ nhớ 1.4.2 Máy tính SIMD Máy tính SIMD chứa control unit, nhiều processing units shared memory or interconnection network Hình 1.2 Cấu trúc máy tính SIMD Tại đây, đơn vị điều khiển gửi hướng dẫn đến tất đơn vị xử lý Trong q trình tính tốn, bước, tất xử lý nhận lệnh từ điều khiển hoạt động liệu khác từ nhớ Mỗi đơn vị xử lý có nhớ cục riêng để lưu trữ liệu lệnh Trong máy tính SIMD, xử lý cần giao tiếp với Điều thực shared memory cách interconnection network Trong số xử lý thực thi tập hợp lệnh, xử lý lại chờ tập lệnh chúng Hướng dẫn từ phận điều khiển định xử lý active (thực hướng dẫn) inactive (chờ hướng dẫn tiếp theo) 1.4.3 Máy tính MISD Như tên cho thấy, máy tính MISD chứa nhiều control units, nhiều processing units common memory unit Hình 1.3 Cấu trúc máy tính MISD Ở đây, xử lý có điều khiển riêng chúng chia sẻ nhớ chung Tất xử lý nhận hướng dẫn riêng lẻ từ điều khiển riêng họ chúng hoạt động luồng liệu theo hướng dẫn mà chúng nhận từ điều khiển tương ứng Bộ xử lý hoạt động đồng thời 1.4.4 Máy tính MIMD Máy tính MIMD có nhiều control units, nhiều processing units shared memory interconnection network Hình 1.4 Cấu trúc máy tính MIMD Ở đây, xử lý có đơn vị điều khiển riêng, nhớ cục bộ, đơn vị số học logic Chúng nhận hướng dẫn khác từ đơn vị điều khiển tương ứng hoạt động liệu khác Máy tính MIMD chia sẻ nhớ chung gọi multiprocessors 1.5 Các mơ hình lập trình song song Một số mơ hình lập trình song song thường sử dụng:     Mơ hình dùng chung nhớ (Shared memory) Mơ hình luồng (Thread) Mơ hình truyền thơng điệp (Message passing) Mơ hình song song liệu (Data parallel) 1.6 Kỹ thuật thiết kế giải thuật song song Lựa chọn kỹ thuật thiết kế thích hợp cho thuật tốn song song nhiệm vụ khó khăn quan trọng Hầu hết vấn đề lập trình song song có nhiều giải pháp Trong chương này, thảo luận kỹ thuật thiết kế sau cho thuật toán song song  Phân chia chinh phục  Phương pháp tham lam  Lập trình động  Thuật tốn bẻ khóa (Backtracking)  Chi nhánh ràng buộc  Lập trình tuyến tính 1.7 Giới thiệu OpenMP 1.7.1 Giới thiệu OpenMP (Open Multi - Processing) giao điện lập trình ứng dụng (API) sử dụng để điều khiến luồng (Thread) dựa cầu trúc chia sẻ nhớ chung Các thành phần OpenMP gồm:  Các thị biên dịch  Thư viện runtime  Các biến môi trường OpenMP thư viện, giúp người lập trình đơn giản linh hoạt để phát triển chương trình song song chạy máy tính hỗ trợ nhiều xử lý 1.7.2 Mục đích 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ó thư viện mã nguồn mở cung cấp 13 void merge(int arr[], int l, int m, int r) { int i, j, k; int n1 = m - l + 1; int n2 = r - m; int* L = new int[n1]; int* R = new int[n2]; for (i = 0; i < n1; i++) L[i] = arr[l + i]; for (j = 0; j < n2; j++) R[j] = arr[m + + j]; i = 0; j = 0; k = l; while (i < n1 && j < n2) { if (L[i] num; float st = clock(); std::cout

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

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

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

Tài liệu liên quan