Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 65 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
65
Dung lượng
686,81 KB
Nội dung
Đồ án tốt nghiệp Tìm hiểu OpenMP ứng dụng Lời cảm ơn Đầu tiên cho em xin phép gửi lời cảm ơn chân thành sâu sắc tới thầy, thạc sỹ Ngơ Trường Giang, thầy tận tình bảo, hướng dẫn, giúp đỡ em suốt trình làm tốt nghiệp Cho em gửi lời cảm ơn thầy cô hội đồng phản biện cho em hạn chế, vấn đề cịn thiếu sót báo cáo, qua giúp em củng cố, bổ sung để báo cáo hồn thiện Cho em gửi lời cảm ơn tới thầy hiệu trưởng, thầy cô ban lãnh đạo, thầy cô tổ môn Công Nghệ Thơng Tin tồn thể q thầy trường tạo môi trường đào tạo cho em rèn luyện, học hỏi, tận tình truyền đạt kiến thức quý báu suốt bốn năm học trường Cuối cho em gửi tới toàn thể quý thầy cô lời chúc sức khoẻ, thành công hạnh phúc Em xin chân thành cảm ơn quý thầy cô ! Hải Phòng, ngày 26 tháng 06 năm 2009 SINH VIÊN Phạm Hải Hưng Phạm Hải Hưng - Lớp CT902 Trang Đồ án tốt nghiệp Tìm hiểu OpenMP ứng dụng Mục lục Lời cảm ơn Mục lục Mở đầu CHƢƠNG 1: Tổng quan lập trình song song, tính tốn song song 1.1 Định nghĩa: 1.1.1 Thế lập trình, tính tốn song song ? .7 1.1.2 Tại phải lập trình, tính tốn song song ? 1.1.3 Sử dụng lập trình, tính tốn song song để làm ? 1.1.4 So sánh lập trình tính tốn lập trình tính tốn song song 1.2 Sự phân chia cấu trúc tính tốn song song 1.2.1 Phân chia dựa quan hệ thị lệnh liệu 1.2.2 Sự phân chia dựa mối quan hệ xử lý nhớ 12 1.3 Các mơ hình lập trình song song 16 1.3.1 Mơ hình dùng chung nhớ (Shared Memory) .17 1.3.2 Mơ hình luồng (Thread) 17 1.3.3 Mơ hình truyền thông điệp (Message Passing) .18 1.3.4 Mơ hình song song liệu (Data Parallel) 19 1.4 Một số vấn đề liên quan đến lập trình tính tốn song song 20 1.4.1 Định luật Amdahl‟s 20 1.4.2 Cân tải .21 1.4.3 Sự bế tắc .22 CHƢƠNG 2: Thƣ viện Mã nguồn mở OpenMP 24 2.1 Tổng quan OpenMP 24 2.1.1 Giới thiệu 24 2.1.2 Định nghĩa 24 2.1.3 Lịch sử phát triển 24 2.1.4 Mục đích OpenMP 25 2.2 Mơ hình lập trình song song OpenMP 25 2.3 Các thị biên dịch (Compiler Directive) 26 2.3.1 Khuôn dạng thị 26 Phạm Hải Hưng - Lớp CT902 Trang Đồ án tốt nghiệp Tìm hiểu OpenMP ứng dụng 2.3.2 Phạm vi thị .27 2.3.3 Cấu trúc vùng song song 28 2.3.4 Cấu trúc chia sẻ công việc (Work Sharing Construct) 29 2.3.5 Cấu trúc đồng 37 2.3.6 Chỉ thị THREADPRIVATE 41 2.4 Các mệnh đề OpenMP 41 2.4.1 Mệnh đề PRIVATE .41 2.4.2 Mệnh đề FIRSTPRIVATE 42 2.4.3 Mệnh đề LASTPRIVATE .42 2.4.4 Mệnh đề SHARED 42 2.4.5 Mệnh đề DEFAULT .42 2.4.6 Mệnh đề REDUCTION 43 2.4.7 Mệnh đề COPYIN 43 2.5 Thư viện Runtime (Runtime Library Routine) 44 2.5.1 OMP_SET_NUM_THREADS .44 2.5.2 OMP_GET_NUM_THREADS 45 2.5.3 OMP_GET_THREAD_NUM .45 2.5.4 OMP_GET_MAX_THREADS 45 2.5.5 OMP_GET_NUM_PROCS 45 2.5.6 OMP_IN_PARALLEL 45 2.5.7 OMP_SET_DYNAMIC 46 2.5.8 OMP_GET_DYNAMIC 46 2.5.9 OMP_SET_NESTED .46 2.5.10 OMP_GET_NESTED .47 2.5.11 OMP_INIT_LOCK 47 2.5.12 OMP_DESTROY_LOCK .47 2.5.13 OMP_SET_LOCK 47 2.5.14 OMP_UNSET_LOCK 47 2.5.15 OMP_TEST_LOCK .48 2.6 Các biến môi trường (Enviroment Variables) 48 2.6.1 OMP_SCHEDULE 48 2.6.2 OMP_NUM_THREADS 48 2.6.3 OMP_DYNAMIC 48 Phạm Hải Hưng - Lớp CT902 Trang Đồ án tốt nghiệp 2.6.4 Tìm hiểu OpenMP ứng dụng OMP_NESTED 49 CHƢƠNG 3: Thực nghiệm 50 3.1 Bài tốn tính giai thừa số nguyên lớn 50 3.1.1 Phát biểu toán .50 3.1.2 Thuật toán thực 50 3.1.3 Song song hố thuật tốn tính giai thừa số nguyên lớn .51 3.1.4 Thực song song hoá OpenMP 53 3.1.5 Kết thực nghiệm nhận xét 54 3.2 Bài tốn tìm số ngun tố có n chữ số 55 3.2.1 Phát biểu toán 55 3.2.2 Thuật toán thực .55 3.2.3 Song Song hố thuật tốn tìm số ngun tố có n chữ số 58 3.2.4 Thực song song hoá OmpenMP 60 3.2.5 Kết thực nghiệm nhận xét 62 Kết luận 64 Tài liệu tham khảo 65 Phạm Hải Hưng - Lớp CT902 Trang Đồ án tốt nghiệp Tìm hiểu OpenMP ứng dụng Mở đầu Ngày với phát triển công nghệ thơng tin, máy tính đa nhân, đa lõi (multiple processor) thay cho xử lý đơn lõi (single processor) lý khác như: Tốc độ xử lý đơn lõi (single processor) đến giới hạn Đáp ứng nhu cầu tính tốn nhanh người dùng Giải toán lớn mà với xử lý đơn lõi khơng đáp ứng Giảm chi phí đầu tư đạt hiệu tính tốn Tuy nhiên với lối lập trình truyền thống lập trình hầu hết chương trình ứng dụng lập trình, thiết kế xử lý đơn lõi (single processor) Như không khai thác hết hiệu tính tốn mà xử lý đa nhân, đa lõi mang lại đồng thời khó đáp ứng u cầu tính tốn người dùng Một thách thức, yêu cầu đặt làm để khai thác 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 Lập trình, tính tốn song song đời nhằm khai thác, phát huy hiệu tính tốn xử lý đa lõi, đồng thời giảm thời gian tính tốn tốn có khối lượng liệu lớn Các cơng cụ hỗ trợ lập trình, tính tốn song song kể đến như: Thư viện MPI (Message Passing Interface), PMV (Parallel Virtual Machine), số tích hợp sẵn thành chuẩn ngơn ngữ lập trình thư viện OpenMP (Open Multiple Processing) C/C++, FOTRAN Trong khn khổ khố luận em tìm hiểu, áp dụng lập trình, tính tốn song song, sở sử dụng thư viện OpenMP việc giảm thời gian tính tốn tốn tìm số nguyên tố có số chữ số lớn Nội dung khoá luận bao gồm: Phạm Hải Hưng - Lớp CT902 Trang Đồ án tốt nghiệp Tìm hiểu OpenMP ứng dụng Chương 1: Tìm hiểu lập trình song song, tính tốn song song Chương giới thiệu cách tổng quan lập trình tính tốn song song phân chia cấu trúc tính tốn song song, mơ hình lập trình tính tốn song song Chương 2: Giới thiệu thư viện mã nguồn mở OpenMP Chương sâu, nghiên cứu cấu trúc, thành phần thư viện mã nguồn mở OpenMP thị biên dịch, hàm thư viện runtime biến môi trường Chương 3: Phát biểu, mô tả cài đặt thực nghiệm tốn tính giai thừa tốn tìm số ngun tố có số chữ số lớn Chương vào mơ tả, phân tích cài đặt tốn tính giai thừa số ngun lớn tốn tìm số ngun tố có số chữ số lớn theo hai hướng song song Từ đưa so sánh, đối chiếu mặt thời gian hai toán theo hai hướng thực Kết luận: Nêu lên vấn đề nghiên cứu kết đạt được, hạn chế, thiếu sót phương hướng phát triển tương lai Phạm Hải Hưng - Lớp CT902 Trang Đồ án tốt nghiệp Tìm hiểu OpenMP ứng dụng CHƢƠNG 1: Tổng quan lập trình song song, tính tốn song song 1.1 Định nghĩa: 1.1.1 Thế lập trình, tính tốn song song ? 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.1.2 Tại phải lập trình, tính tốn song song ? Theo xu hướng phát triển công nghệ thông tin, xử lý đa nhân, đa lõi (multiple processor) thay xử lý đơn lõi (single processor) nhiên với lối lập trình truyền thống (lập trình tuần tự), câu lệnh, trình xử lý thực hịên cách lần lượt, không phát huy hết công năng, hiệu vi xử lý đa nhân, đa lõi (multiple processor) Lập trình, tính tốn song song đời lời giải cho yêu cầu, thách thức đặt làm để phát huy công năng, hiệu đa xử lý (multiple processor) Trên thực tế, có nhiều tốn với liệu lớn, độ phức tạp tính tốn cao mà địi hỏi thời gian xử lý ngắn, độ xác cao Vd: toán liên quan tới xử lý ảnh, xử lý tín hiệu, dự báo thời tiết, mơ giao thông, mô chuyển động phân tử, nguyên tử, mô đồ gen, toán liên quan đến sở liệu khai thác sở liệu với xử lý đơn lõi khó thực cho kết mong muốn Lập trình, tính toán song song lời giải đáp cho toán tăng hiệu xử lý đồng thời rút ngắn thời gian xử lý tính tốn người dùng 1.1.3 Sử dụng lập trình, tính tốn song song để làm ? Phát huy công năng, hiệu xử lý đa nhân, đa lõi Giải số toán lớn mà xử lý đơn lõi (single processor) không thực Phạm Hải Hưng - Lớp CT902 Trang Đồ án tốt nghiệp Tìm hiểu OpenMP ứng dụng Tăng hiệu tính tốn đồng thời giảm thời gian tính tốn 1.1.4 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 Lập trình tính tốn song song Chương trình ứng dụng chạy xử lý đơn (single processor) Các thị lệnh xử lý Chương trình ứng dụng chạy hai nhiều xử lý Các thị lệnh vi (CPU) thực cách lần xử lý thực cách song lượt, song, đồng thời Mỗi thị lệnh thực thiện Mỗi thị lệnh thao tác thành phần hai nhiều thành phần liệu liệu khác Lập trình viên cần đảm Ngồi việc đảm bảo viết bảo viết mã lệnh theo mã lệnh theo giải thuật, lập giải thuật chương trình trình viên cịn phải chương trình dịch, chạy chương trình đoạn mã cho kết thực song song, đồng thời Thường áp dụng Thường áp dụng tốn có liệu nhỏ, độ tốn có liệu lớn, độ phức tạp bình thường thời phức tạp cao thời gian ngắn gian cho phép Phạm Hải Hưng - Lớp CT902 Trang Đồ án tốt nghiệp Tìm hiểu OpenMP ứng dụng 1.2 Sự phân chia cấu trúc tính tốn song song 1.2.1 Phân chia dựa quan hệ thị lệnh liệu Dựa vào mối quan hệ thị lệnh liệu chia làm loại : Đơn thị lệnh, đa liệu SIMD (Single Instruction, Multiple Data) Đa thị lệnh, đơn liệu MISD (Multiple Instruction, Single Data) Đa thị lệnh, đa liệu MIMD (Multiple Instruction, Multiple Data) 1.2.1.1 Đơn thị lệnh, đa liệu SIMD (Single Instruction, Multiple Data) Hình 1.1 Cấu trúc đơn thị lệnh, đa liệu Là loại xử lý song song Khi thị phát ra, tất trình xử lý thực Mỗi trình xử lý thực thành phần liệu khác cấu trúc liệu Được chia làm hai loại: Vector SIMD Parallel SIM Phạm Hải Hưng - Lớp CT902 Trang Đồ án tốt nghiệp Tìm hiểu OpenMP ứng dụng 1.2.1.1.1 Vector SIMD Hình 1.2 Mơ hình vector SIMD Một thị lệnh phát ra, nhiều thao tác bắt đầu cập nhật Chuẩn thao tác, xử lý thành phần liệu, vector SIMD thao tác, xử lý vector, nhóm liệu 1.2.1.1.2 Parallel SIMD Hình 1.3 Mơ hình parallel SIMD Khi thị lệnh phát ra, tất vi xử lý thực thao tác liệu khác Các xử lý chạy đồng nhịp đồng hồ hệ thống Người sử dụng chịu trách nhiệm vấn đề đồng Phạm Hải Hưng - Lớp CT902 Trang 10 Đồ án tốt nghiệp Tìm hiểu OpenMP ứng dụng Khi áp dụng toán cho số nguyên lớn, kết toán lớn, để giải toán này, việc phải làm định nghĩa kiểu liệu đủ để lưu trữ kết toán Sau có kiểu liệu lớn lưu trữ kết tốn, sử dụng vịng lặp để giải toán Các bước thực sau: Với số nguyên lớn N nhập vào ta thực hịên sau: Bƣớc 1: Gán kết Kq = Bƣớc 2: Dùng vòng lặp duyệt từ N For i = to N Bƣớc 3: với số i ≤ i ≤ N, lấy kết nhân với i kq = kq * i Sau vòng lặp kết thúc, kết cuối lưu trữ kết toán 3.1.3 Song song hố thuật tốn tính giai thừa số nguyên lớn Song song hoá thuật toán phân chia cơng việc thực thuật tốn cho xử lý thực đồng thời với mục đích cải thiện tốc độ tính tốn giảm thời gian tính tốn Việc phân chia công việc phải cho phù hợp đồng với xử lý Giả sử hệ thống có bốn xử lý CPU1, CPU2, CPU3, CPU4, sử dụng vịng lặp để giải tốn song song hố, chia cơng việc vòng lặp làm bốn vòng lặp nhỏ gán vòng lặp cho CPU thực Sau CPU thực xong công việc, kết cuối tổng hợp kết cuối tốn Q trình song song hoá sau: Phạm Hải Hưng - Lớp CT902 Trang 51 Đồ án tốt nghiệp Tìm hiểu OpenMP ứng dụng Bƣớc 1: Chia vòng lặp lớn bốn vòng lặp nhỏ Vòng lặp 1: for i = to N/4 Vòng lặp 2: for i = N/4 to N/2 Vòng lặp 3: for i = N/2 to (N/4 + N/2) Vòng lặp 4: for i = (N/4 + N/2) to N Bƣớc 2: Gán bốn vòng lặp cho bốn CPU thực CPU1: for i = to N/4 kq1 = kq1 * i CPU2: for i = N/4 to N/2 kq2 = kq2 * i CPU3: for i = N/2 to (N/4+N/2) kq3 = kq3 * i CPU4: for i = (N/4 + N/2) to N kq4 = kq4 * i Bƣớc 3: Tổng hợp kết bốn CPU kết cuối kq = kq1 * kq2 * kq3 * kq4 Hình 3.1 Sự phân chia công việc cho bốn xử lý Phạm Hải Hưng - Lớp CT902 Trang 52 Đồ án tốt nghiệp Tìm hiểu OpenMP ứng dụng 3.1.4 Thực song song hoá OpenMP Thư viện OpenMP cung cấp thị giúp cho người lập trình dễ dàng việc song song hố chương trình Với giải thuật song song hóa trên, sử dụng thị SECTIONS OpenMP để chia công việc cho xử lý thực Q trình song song hóa sau: # pragma omp section for i = to N/4 kq1 = kq1 * i # pragma omp section for i = N/4 to N/2 kq2 = kq2 * i # pragma omp section for i = N/2 to N/4 + N/2 kq3 = kq3 * i # pragma omp section for i = N/4 + N/2 to N kq1 = kq1 * i kq = kq1 * kq2 * kq3 * kq4 Phạm Hải Hưng - Lớp CT902 Trang 53 Đồ án tốt nghiệp Tìm hiểu OpenMP ứng dụng Sau CPU thực xong, kết CPU tổng hợp kết cuối toán 3.1.5 Kết thực nghiệm nhận xét Bài tốn cài đặt ngơn ngữ C/C++, sử dụng chuẩn thư viện OpenMP Visual Studio 2005 sau chạy thực nghiệm máy tính Pentium R 0GHz, CPU có hỗ trợ siêu phân luồng Hyper Threading Sau kết thực nghiệm toán N A B STT Giai thừa T/g thực T/g thực Kích thước So sánh (s) song song (s) N! A/B 100 158 200 19 375 75 500 180 22 1135 ~8 1000 1119 124 2568 ~9 1500 3442 360 4115 ~9 2000 7249 1638 5736 ~4 Bảng 3.1 Kết thực nghiệm tốn tính giai thừa Nhận xét: Qua bảng kết thực nghiệm ta thấy, thời gian thực song song giảm nhiều so với thời gian thực tuần tự, nhiên kết so sánh lần thực nghiệm số khác khác nhau, thuật tốn toán đơn giản, dễ thực song song hoá Do 100% đoạn mã thực thực song song Theo định luật Amdahl‟s tốc độ thực tính tốn tăng lên nhiều Phạm Hải Hưng - Lớp CT902 Trang 54 Đồ án tốt nghiệp Tìm hiểu OpenMP ứng dụng 3.2 Bài tốn tìm số ngun tố có n chữ số 3.2.1 Phát biểu toán 3.2.1.1 Tổng quan số nguyên tố Định nghĩa số nguyên tố Số nguyên tố số tự nhiên lớn 1, có hai ước Định nghĩa ước bội Nếu có số tự nhiên A chi hết cho số tự nhiên B ta nói A bội B, B gọi ước A Do số ngun tố có tính chất đặc biệt nên số nguyên tố áp dụng rộng rãi thực tế, đặc biệt lĩnh vực mã hố, an tồn bảo mật thơng tin Trong lĩnh vực này, hầu hết hệ mã hoá sử dụng số nguyên tố làm khoá để thực cơng việc mã hố Như tính an toàn, bảo mật hệ mã cao số nguyên tố sử dụng hệ mã lớn Một tốn nhiều thời gian tính tốn mà hệ mã hố gặp phải tìm số nguyên tố lớn có n (n lớn) chữ số Với kiến thức nghiên cứu lập trình, tính tốn song song, chương áp dụng kiến thức việc rút ngắn thời gian tính tốn tốn tìm số ngun tố lớn Bài tốn phát biểu sau: Tìm số nguyên tố lớn có n chữ số với n nhập vào từ bàn phím 3.2.2 Thuật tốn thực Có nhiều thuật tốn, phương pháp để tìm số nguyên tố thuật sàng Eratosthones, thuật toán test Miller Rabin Tuy nhiên thuật toán, phương pháp cài đặt, thực với kiểu liệu bản, nguyên thuỷ ngôn ngữ lập trình Ví dụ: int, char, long ( Trong C/C++) tức người lập trình khơng phải định nghĩa kiểu liệu mà việc khai báo sử dụng Tuy nhiên kiểu liệu thường bé Phạm Hải Hưng - Lớp CT902 Trang 55 Đồ án tốt nghiệp Tìm hiểu OpenMP ứng dụng Ví dụ: Kiểu liệu số nguyên lớn C/C++ unsigned long có giá trị 294 967 295 (10 chữ số) -> Số nguyên tố lớn tìm số ngun tố có 10 chữ số Do không đáp ứng yêu cầu toán đặt Để giải toán này, trước hết phải định nghĩa kiểu liệu số nguyên có giá trị lưu trữ lớn 10 chữ số, đa hoá toán tử cho kiểu liệu như: +, -, *, /, % Sau áp dụng giải thuật tìm số ngun tố cho tốn Việc lựa chọn giải thuật để giải toán định nhanh hay chậm toán kết xác tốn Đối với tốn này, phải định nghĩa kiểu liệu (lớn) để giải tốn việc truy cập phần tử có số lớn (vượt phạm vi biểu diễn C/C++) khó thực Vì thuật toán thuật sàng Eratosthones khó thực Do thuật tốn thích hợp để giải toán thuật toán duyệt phần tử Tư tưởng thuật toán sau: Bƣớc 1: Đối với phần tử A có n chữ số làm sau Bƣớc 2: Duyệt từ tới (A -1) để tìm ước Bƣớc 3: Kiểm tra A chia hết cho số B (2 ≤ B ≤ (A-1)) Kết luận A số nguyên tố quay lại bước với số sau số A Nếu A không chia hết cho số B (2 ≤ B ≤ (A-1)) Kết luận A số nguyên tố kết thúc thuật toán Phạm Hải Hưng - Lớp CT902 Trang 56 Đồ án tốt nghiệp Tìm hiểu OpenMP ứng dụng Nhận xét: Nếu A số có n chữ số A lớn 000 ( n chữ số 0) -1 A bé 000 ( n-1 chữ số 0) Ta thấy số nguyên tố bé số chẵn nên tất số nguyên tố lớn số lẻ Do không cần xét đến số A có n chữ số số chẵn Nếu A = B*C ước A B C cần xét đến B mà không xét đến C Do số A có n chữ số ta cần duyệt tìm ước từ đến A/2 Vì số ngun dương N có ước khơng q bậc N cần tìm ước số A có n chữ số từ đến bậc A Vậy thuật toán rút gọn lại thành sau: Giả sử số X = 000 (n chữ số 0), số Y = 000 (n-1 chữ số 0), số sqrtA bậc hai số học A Bƣớc 1: Duyệt số X > A ≥ Y ( A số lẻ ) Với số A làm sau: Bƣớc 2: Duyệt số B từ đến sqrtA (2 ≤ B ≤ sqrtA) Bƣớc 3: Kiểm tra Nếu A chia hết cho m ột số B (2 ≤ B ≤ sqrtA) Kết luận A số nguyên tố Quay lại bước với số sau A số lẻ ( A = A - 2) Nếu A không chia hết cho số B (2 ≤ B ≤ sqrtA) Kết luận A số nguyên tố Vậy thuật toán cài đặt sau: Phạm Hải Hưng - Lớp CT902 Trang 57 Đồ án tốt nghiệp Tìm hiểu OpenMP ứng dụng Với số nguyên tố A cần tìm số có n chữ số ( n nhập vào từ bàn phím) Giả sử số: BigInt ctren số 000 ( n chữ số 0) BigInt cduoi số 000 ( n-1 chữ số 0) BigInt sqrtA bậc hai số học A Vì A lớn ctren -1 số bậc hai lớn 000 ( n/2 chữ số 0) Vậy sqrtA = 000 (n/2 chữ số 0) Chúng ta sử dụng hai vịng lặp for để cài đặt thuật tốn for( A = ctren -1 ; A ≥ cduoi ; A = A - 2) // A lẻ -> A-2 số lẻ { for( B = ; B < sqrtA ; B ++ ) { ĐK: A chia hết cho B ; break ; // khỏi vịng lặp thứ } ĐK: B sqrtA // A khơng có ước khoảng -> sqrtA KL: A số nguyên tố break ; // Thoát khỏi vịng lặp thứ } 3.2.3 Song Song hố thuật tốn tìm số ngun tố có n chữ số Cũng thuật toán Sự đắn tối ưu thuật toán song song định thời gian tính tốn nhanh hay chậm kết tính tốn thuật tốn Ngồi cịn phải ý đến vấn đề xung quanh việc song song hoá thuật toán để tránh xảy trường hợp nghịch lý song song Phạm Hải Hưng - Lớp CT902 Trang 58 Đồ án tốt nghiệp Tìm hiểu OpenMP ứng dụng Giả sử có xử lý CPU1, CPU2, CPU3, CPU4 chia công việc thực làm phần để gán cho CPU thực kết xử lý tổng hợp kết cuối Nếu thực song song hóa vịng for thứ nhất, tức cơng việc vịng for thứ chia cho xử lý Giả sử công việc chia sau: Hình 3.2 Sự phân chia cơng việc vịng for thứ cho xử lý Công việc CPU dừng lại CPU số CPU tìm số nguyên tố Như kết tìm kiếm CPU lại bị huỷ Vậy chia công việc cho CPU thực kết sử dụng cuối lại kết CPU, nên khai thác hoạt động CPU cịn lại khơng với mụch đích sử dụng -> khơng đạt hiệu tính tốn song song Nếu song song hố vịng for thứ cơng việc vịng for thứ phân cho CPU Giả sử công việc chia sau: Hình 3.3 Sự phân chia cơng việc vịng for thứ hai cho xử lý Phạm Hải Hưng - Lớp CT902 Trang 59 Đồ án tốt nghiệp Tìm hiểu OpenMP ứng dụng Khi CPU tìm thấy ước số A có n chữ số ( tức số A số nguyên tố), CPU thực cập nhật địa nhớ CPU khác thấy thông báo thực CPU bị dừng Trong trường hợp này, kết CPU sử dụng kết CPU khác không sử dụng Tuy nhiên miền tìm kiếm CPU vịng for thứ nhỏ lãng phí khơng đáng kể Ngược lại trường hợp số A số nguyên tố, kết CPU tổng hợp kết cuối Như khai thác hoạt động CPU vào mụch đích sử dụng Để song song hố vịng for thứ ta chia khoảng giá trị từ – sqrtA thành đoạn nhỏ gán đoạn cho xử lý Với đoạn nhỏ với dd (điểm đầu), dc(điểm cuối), B giá trị thuộc đoạn thực sau Bƣớc 1: Duyệt giá trị từ dd đến dc Bƣớc 2: Lấy kết thương phép chia A cho B Nếu kết Gán cờ Gán B dc Nếu kết khác 0, quay lại bước với giá trị B = B+1 Bƣớc 3: Nếu cờ khác // CPU khác tìm ước Gán B dc 3.2.4 Thực song song hoá OmpenMP Thuật toán sử dụng thị SECTION CRITICAL để thực song song hoá Chúng ta sử dụng biến làm cờ báo hiệu cho CPU CPU tìm thấy ước số A Khi CPU tìm thấy ước số A dùng thị CRITICAL cập nhật lại giá trị cờ Quá trình thực sau: Phạm Hải Hưng - Lớp CT902 Trang 60 Đồ án tốt nghiệp Tìm hiểu OpenMP ứng dụng #pragma omp section //Đoạn mã gán cho CPU for B = to sqrtA/4 DK: Nếu kết phép chia A/B // B ước A #pragma omp critical Đặt cờ Gán B = sqrtA/4 // dùng để vịng lặp DK: Nếu cờ khác gán B = sqrtA/4 #pragma omp section //Đoạn mã gán cho CPU for B = sqrtA/4 to sqrtA/2 DK: Nếu kết phép chia A/B // B ước A #pragma omp critical Đặt cờ Gán B = sqrtA/2 // dùng để vịng lặp DK: Nếu cờ khác gán B = sqrtA/2 #pragma omp section //Đoạn mã gán cho CPU for B = sqrt4 to (sqrtA/2 +sqrtA/4) DK: Nếu kết phép chia A/B // B ước A #pragma omp critical Đặt cờ Phạm Hải Hưng - Lớp CT902 Trang 61 Đồ án tốt nghiệp Tìm hiểu OpenMP ứng dụng Gán B = sqrtA/2 + sqrtA/4 // dùng để thoát vòng lặp DK: Nếu cờ khác Gán B = sqrtA/2 + sqrtA/4 #pragma omp section //Đoạn mã gán cho CPU for (sqrtA/2 + sqrtA/4) to sqrtA DK: Nếu kết phép chia A/B // B ước A #pragma omp critical Đặt cờ Gán B = sqrtA // dùng để thoát vòng lặp DK: Nếu cờ khác Gán B = sqrtA 3.2.5 Kết thực nghiệm nhận xét Bài tốn sử dụng cơng cụ ngơn ngữ C/C++, VisualStudio 2005 có tích hợp sẵn thư viện OpenMP chuẩn để cài đặt Sau kết thử nghiệm tốn máy tính Pentium R GHz, CPU có hỗ trợ siêu phân luồng Hyper Threading A B T/g thực song song(s) Kết thực STT N T/g thực tuần tự(s) 9999983 2 22 13 99999989 ~2 Phạm Hải Hưng - Lớp CT902 So sánh A/B Trang 62 Đồ án tốt nghiệp Tìm hiểu OpenMP ứng dụng 10 2275 983 9999999967 11 4440 2460 99999999977 ~2 12 13735 271954 999999999989 ~2 Bảng 3.2 Kết thực nghiệm tốn tìm số ngun tố có n chữ số Nhận xét: Qua bảng kết thực cho ta thấy, kết mặt thời gian tính toán thuật toán thực theo hướng song song giảm 1/2 so với thời gian tính tốn thuật toán theo hướng Do thuật toán song song hố để phân chia cơng việc cho xử lý nhiên toán chạy thực nghiệm máy tính có xử lý vật lý hỗ trợ công nghệ siêu phân luồng Như mặt logic đảm bảo xử lý thực công việc khác mặt vật lý xử lý phải thực đồng thời hai cơng việc, trình thực xử lý vật lý phải thời gian đọc để ghi liệu lên nhớ chuyển đổi cơng việc Hơn trình biên dịch phải thời gian để tạo threads huỷ bỏ threads Vì thời gian tính tốn khơng thể giảm tới mức tối đa Phạm Hải Hưng - Lớp CT902 Trang 63 Đồ án tốt nghiệp Tìm hiểu OpenMP ứng dụng Kết luận Trong khuôn khổ khố luận, em nghiên cứu, tìm hiểu lập trình tính tốn song song, tìm hiểu cơng cụ hỗ trợ cho việc lập trình tính tốn song song thư viện OpenMP Trên sở kiến thức nghiên cứu, tìm hiểu áp dụng tốn tìm số ngun tố lớn có n chữ số tốn tính giai thừa số nguyên lớn Bài toán cài đặt theo hai hướng cài đặt để chạy máy tính có hai xử lý vật lý có hỗ trợ cơng nghệ siêu phân luồng Tuy tốn cịn bé chưa có ứng dụng lớn thực tiễn kết tốn nói lên khác biệt rõ ràng thời gian tính tốn thuật toán chạy theo hướng thuật tốn chạy theo hướng song song góp phần làm sở cho nghiên cứu lập trình tính tốn song song sau Tuy nhiên có vấn đề cần lưu ý tính tốn song song khơng phải giải thuật song song hố Do trước song hóa giải thuật người lập trình cần ý để chọn mơ hình phương pháp cho tốn đạt hiệu cao đồng thời tránh nghịch lý q trình song song hố Với phát triển cơng nghệ thơng tin, xu hướng lập trình tính tốn song song khơng đơn áp dụng máy đơn có xử lý đa lõi mà tiến đến áp dụng nhiều máy tính khác hay mạng máy tính để giải số toán phức tạp thực tế Trong q trình nghiên cứu, tìm hiểu, ngồi kiến thức tìm hiểu nghiên cứu cịn số hạn chế, thiếu sót mà em chưa thể nghiên cứu cập nhật kịp thời Kính mong thầy bảo giúp đỡ để em hồn thành khoá luận Em xin chân thành cảm ơn! Phạm Hải Hưng - Lớp CT902 Trang 64 Đồ án tốt nghiệp Tìm hiểu OpenMP ứng dụng Tài liệu tham khảo [1] Chandra, R., Dagum, L., Kohr, D., Maydan, D., McDonald, J., Menon, R Parallel Programming in OpenMP Academic Press Morgan Kaufmann 2001 [2] Mario Soukup A Source-to-Source OpenMP Compiler, Master Thesis, Department of Electrical and Computer Engineering University of Toronto 2001 [3] OpenMP C and C++ Application Program Interface Version 2.0 March 2002 [4] http://www llnl gov/computing/tutorials/parallel_comp [5] http://www openmp org [6] http://www llnl/computing/tutorials/workshop/openmp/ [7] http://www hpcc unical it/alarico/LNErbacci2 pdf [8] http://nereida.deicc.ull.es/html/openmp/minnrsota/tutorial/content_op enmp html [9] http://wikipedia org/wiki/OpenMP [10].Phát triển ứng dụng song song với OpenMP - Trịnh Công Quý - Đại Học Quốc Gia Hà Nội Phạm Hải Hưng - Lớp CT902 Trang 65