Đề tài nghiên cứu: Xây dựng chương trình xử lý song song để xác định một số nguyên lớn có phải là số nguyên tố hay không?

9 88 0
Đề tài nghiên cứu: Xây dựng chương trình xử lý song song để xác định một số nguyên lớn có phải là số nguyên tố hay không?

Đang tải... (xem toàn văn)

Thông tin tài liệu

Để tăng khả năng xử lý song song của máy tính song song thì phải khai thác tối đa năng lực của các bộ xử lý (CPU). Và nhằm tăng khả năng tính toán của các CPU và nâng cao hiệu quả của giải thuật mà Đề tài nghiên cứu: Xây dựng chương trình xử lý song song để xác định một số nguyên lớn có phải là số nguyên tố hay không? đã được nghiên cứu.

XÂY DỰNG CHƯƠNG TRÌNH XỬ LÝ SONG SONG ĐỂ XÁC ĐỊNH MỘT SỐ NGUYÊN LỚN CÓ PHẢI LÀ SỐ NGUYÊN TỐ HAY KHƠNG? SV Nguyễn Thị Hồi Thương Email: nguyenthuong100492@gmail.com Võ Minh Tiến Email: vmtien88@gmail.com Lớp ĐHCNTT10, Khoa SP Toán – Tin GVHD: ThS Nguyễn Thị Thùy Linh Tóm tắt nội dung: Gần đây, phát triển kiến trúc máy tính song song kèm theo thuật toán song song làm thay đổi nhiều quan niệm khả giải toán lớn Nhiều ứng dụng thực tế yêu cầu phải bảo mật an toàn liệu nên vấn đề bảo mật an ninh mạng quan tâm hàng đầu Để tăng khả xử lý song song máy tính song song phải khai thác tối đa lực xử lý (CPU) Vì vậy, nhằm tăng khả tính tốn CPU nâng cao hiệu giải thuật, lựa chọn nghiên cứu “Xây dựng chương trình xử lý song song để xác định số nguyên lớn có phải số ngun tố hay khơng?” Đề tài giải vấn đề cải thiện tốc độ xử lý, đáp ứng yêu cầu mã hóa lĩnh vực an tồn bảo mật thơng tin, đặc biệt hệ mật mã RSA Mở đầu Tại phải xử lý song song? Hiện nay, với xuất ngày nhiều hệ thống điện tử làm cho lượng thông tin lĩnh vực phát triển nhanh chóng, có cấu trúc đa dạng phức tạp, đòi hỏi máy tính phải xử lý lượng liệu lớn với tốc độ cao Có thể nói máy tính xử lý theo kiểu Von Neumann (có 1CPU) khó đáp ứng yêu cầu thời gian khối lượng công việc thực Xử lý song song trình xử lý gồm nhiều tiến trình kích hoạt đồng thời tham gia giải tốn Nói chung, xử lý song song thực hệ thống đa xử lý (hay gọi máy tính song song nay) Do đó, thực xử lý song song máy tính song song để tăng hiệu tốc độ tính tốn giải thuật Mơ hình xử lý song song phát triển mạnh mẽ, giải vấn đề bế tắc mà mơ hình xử lý gặp phải như: vấn đề thời gian thực chương trình, tốc độ xử lý, khả lưu trữ nhớ,… Trong bối cảnh chúng tơi định “Xây dựng chương trình xử lý song song xác định số nguyên lớn có phải số nguyên tố hay không?” nhằm giải vấn đề Bài toán kiểm tra số nguyên tố toán quan trọng khoa học máy tính, đặc biệt lĩnh vực an tồn bảo mật thơng tin Thuật tốn song song “xác định số nguyên lớn có phải số nguyên tố hay không?” đáp ứng nhu cầu tính tốn ngày cao thời gian, tốc độ, quy mơ, tốn Nếu khơng có giải thuật song song cho tốn thời gian, tốc độ xử lý chậm, khả lưu trữ, quy mô nhỏ đặc biệt làm hạn chế việc ứng dụng tốn cho ứng dụng quan trọng…Vì nhu cầu thực tính tốn song song để tính tốn, giải vấn đề lúc nhiều vi xử lý khác trở nên cấp thiết cần nghiên cứu Kết 2.1 Đặt vấn đề Kiểm tra số có phải số ngun tố hay khơng toán quan trọng lĩnh vực bảo mật thơng tin Vì số ngun tố sử dụng rộng rãi giải thuật mã hóa dùng khóa mở (public key cryptography algorithms), ứng dụng phát sinh số giả ngẫu nhiên (pseudorandom) bảng hash (hash table) Vấn đề đặt phải kiểm tra số ngun tố lớn Việc tính tốn số nguyên lớn nhiều thời gian, đòi hỏi phải xử lý song song cho trình xác định số ngun lớn có phải số ngun tố khơng? Muốn giải thuật kèm theo phải thuật toán song song 2.2 Thiết kế thuật toán song song cho toán “xác định số ngun lớn có phải số ngun tố hay khơng?” 2.2.1 Định nghĩa số nguyên tố Số nguyên tố số nguyên dương chia hết cho Theo định nghĩa số nguyên tố số tự nhiên có hai ước số phân biệt, số thân 2.2.2 Thiết kế thuật toán Input: Số nguyên dương x; Output = True, x số nguyên tố Flase, ngược lại Xử lý: B1: //Chữ số cuối x là: 0,2,4,5,6,8 if ( (x chia hết cho 2) (x >5 x chia hết cho 5) ) return false; B2: //Chữ số cuối x là: 1,3,7,9 Gọi cx = số ký tự (căn bậc x); n = số ký tự x; cx = (n+1)/2 (lấy phần nguyên); /*Chứng minh: Giả sử √x =a ; cx = số ký tự a; n = số ký tự x; x có tối đa: cx + (cx+1) ký tự, tối thiểu cx+(cx-1) ký tự, Ví dụ: a=84  cx=2, x=a*a=84*84 x có tối đa 2+2+1=5 ký tự, tối thiểu 2+2-1=3 ký tự  84*10 < x < 84*100 ; Vậy n = 2cx-1 2cx 2cx+1  cx = (n+1)/2 n/2 (n-1)/2 Ta chọn cx = (n+1)/2 (lớn kết tìm số gần với kết căn(x) , cho cx lớn mà phải đảm bảo kết tìm lớn căn(x) Thuật tốn chia từ 3, căn(x), quyền chia khỏi căn(x) không bỏ sót phần từ từ 3…căn(x)) Ví dụ: √125 có (3+1)/2 = ký tự x=125, n=3, cx=2 (căn(x) có chữ số, khơng biết xác số nào, nên chọn số nguyên lớn có chữ số 99, thuật tốn chia x cho khoảng (3,99) B3: // Ta có cx số ký tự √x Gọi m số nguyên lớn có cx ký tự Thực chia x cho S, với S={3,5,7,9, ,m} Phân hoạch tập S thành S1,S2,S3,S4 tùy ý ngẫu nhiên Phân công cho nhân CPU xử lý tập S1,S2,S3,S4 với nhân thực thi lệnh sau: if ( x chia hết cho i) return false; Nếu nhân trả False dừng nhân lại chương trình trả False, ngược lại True 2.3 Cài đặt thuật toán OpenMP (Open Multi-Processing) nhà phát triển tích hợp thành chuẩn ngơn ngữ lập trình phổ biến như: C/C++,…Và hỗ trợ hầu hết hệ điều hành OpenMP giao diện lập trình ứng dụng (API - Application Program Interface) sử dụng để điều khiển luồng (Thread) dựa cấu trúc chia sẻ nhớ chung Do đó, để cài đặt thuật tốn cho tốn chúng tơi sử dụng ngơn ngữ lập trình C++ với OpenMP Visual Studio 2010 Cấu trúc liệu: Xây dựng class SuperInt, để khai báo kiểu số nguyên lớn với tối đa 10000 ký tự, lớn Với phương thức bản: Cộng, Trừ, Nhân, Chia, Chia lấy dư có cấu trúc sau: #include using namespace std; #include #include #define maxInt 10000 class SuperInt{ public: char supInt[maxInt]; public: SuperInt::SuperInt(char *s){ } void SuperInt::setValue(char s[]){ } bool SuperInt::checkType(){ } SuperInt::SuperInt(){} }; Hàm kiểm tra số nguyên tố: bool isChan(SuperInt a){ } void isNgto(SuperInt s, SuperInt a, SuperInt b){ } Chương trình sử dụng thư viện quan trọng: #include #include #include #include #include #include "stdafx.h" "targetver.h" "SuperInt.h" Đoạn chương trình xử lý song song: #pragma omp parallel shared() private() { #pragma omp sections nowait { #pragma omp section { //Hàm thực thi} #pragma omp section { //Hàm thực thi} } } 2.4 Kết thực Chương trình thực nghiệm máy Server Trường Đại học Đồng Tháp với cấu hình máy: - Vi xử lý: Intel (R) Xeon (R) CPU E5540 @2.53GHz (8CPUs), ~2.5GHz - Bộ nhớ trong: 6132 MB RAM - Hệ điều hành: Windows Server® 2008 Standard (6.0, Build 6002) Kết thực nghiệm: Số nguyên lớn 2147483647 68718952447 274876858367 Song song (s) 11.03621 120.56385 130.56179 Bảng : Thống kê kết Tuần tự (s) 45.70646 509.29799 564.68737 Thời gian (s) 600 500 400 Tuần tự Song song 300 200 100 2147483647 68718952447 274876858367 Số nguyên lớn Hình 1: Đồ thị so sánh kết Nhận xét: Thời gian thực chương trình rút ngắn (tốc độ xử lý song song nhanh khoảng lần so với tốc độ xử lý tuần tự) Tốc độ tính giây (s) tùy thuộc vào lượng cơng việc có hệ thống Giải thuật tối ưu với số nguyên dương lớn 10 chữ số giải thuật xử lý song song, phép tốn phải thực qua bước trung gian class SuperInt Phương pháp kiểm tra số nguyên tố cổ điển đơn giản dễ thực hiện, đương nhiên áp dụng tốn có liệu nhỏ, độ phức tạp bình thường thời gian cho phép, Phương pháp xây dựng thuật toán song song “xác định số nguyên lớn có phải số nguyên tố hay không? giải vấn đề: - Kiểm tra số nguyên lớn số nguyên tố - Tận dụng tối đa sức mạnh máy tính đa xử lý - Tốc độ xử lý song song nhanh nhiều lần so tốc độ xử lý - Tăng tốc ứng dụng, tăng hiệu suất làm việc cho người sử dụng Việc áp dụng kết nghiên cứu tạo điều kiện cho sinh viên chuyên nghành CNTT nói chung sinh viên chuyên ngành CNTT Trường Đại học Đồng Tháp nói riêng, khai thác tối đa lực CPU, tạo tiền đề cho giải toán lớn, đặc biệt tăng tốc độ xử lý mang lại hiệu lĩnh vực an toàn bảo mật thơng tin Tài liệu tham khảo [1] Đồn Văn Ban, Nguyễn Mậu Hân, Xử lý song song phân tán, NXB KH&KT, 2006 [2] TS Trần Văn Hoài, Bài giảng mơn học sau đại học Tính tốn song song [3] PGS.TS Trần Văn Lăng, Bài giảng Tính tốn song song phân tán [4] PGS.TS Nguyễn Đức Nghĩa, Bài giảng mơn Tính Tốn song song, NXB Đại học Bách Khoa Hà Nội, 2008 [5] Hội nghị sinh viên nghiên cứu khoa học năm 2013 Lĩnh vực Khoa học Tự nhiên, Trường Đại Học Đồng Tháp [6] Gunnar Staff “Convergence and Stability of the Parallel algorithm: A numerical and theoretical investigation” – Department of Mathematical Sciences, Norwegian University of Science and Technology, N-7491 Trondheim, Norway [7] “Introduction to OpenMP” – subpercomputing Institute of Minnesota University [8] http://www.ieev.org/2009/12/kiem-tra-so-nguyen-to-primality-test.html [9] http://vi.m.wikipedia.org/wiki/Danh_sách_số_nguyên_tố [10] http://vi.wikipedia.org/wiki/ RSA_(mã_hóa) [11] http://old.voer.edu.vn/module/khoa-hoc-xa-hoi/he-ma-rsa.html ... thực chương trình, tốc độ xử lý, khả lưu trữ nhớ,… Trong bối cảnh chúng tơi định Xây dựng chương trình xử lý song song xác định số nguyên lớn có phải số nguyên tố hay không? nhằm giải vấn đề. .. tra số ngun tố lớn Việc tính tốn số nguyên lớn nhiều thời gian, đòi hỏi phải xử lý song song cho trình xác định số ngun lớn có phải số ngun tố khơng? Muốn giải thuật kèm theo phải thuật toán song. .. song song 2.2 Thiết kế thuật toán song song cho toán xác định số nguyên lớn có phải số ngun tố hay khơng?” 2.2.1 Định nghĩa số nguyên tố Số nguyên tố số ngun dương chia hết cho Theo định nghĩa số

Ngày đăng: 15/01/2020, 04:49

Từ khóa liên quan

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

Tài liệu liên quan