MỘT số PHƯƠNG PHÁP THIẾT kế THUẬT TOÁN cơ bản TRONG TÍNH TOÁN SONG SONG và ỨNG DỤNG

15 212 0
MỘT số PHƯƠNG PHÁP THIẾT kế THUẬT TOÁN cơ bản TRONG TÍNH TOÁN SONG SONG và ỨNG DỤNG

Đ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

ĐẠI HỌC QUỐC GIA HÀ NỘI TRƢỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN NGÔ THỊ MINH NGUYỆT MỘT SỐ PHƢƠNG PHÁP THIẾT KẾ THUẬT TOÁN CƠ BẢN TRONG TÍNH TOÁN SONG SONG VÀ ỨNG DỤNG LUẬN VĂN THẠC SĨ KHOA HỌC Hà Nội- Năm 2014 ĐẠI HỌC QUỐC GIA HÀ NỘI TRƢỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN NGÔ THỊ MINH NGUYỆT MỘT SỐ PHƢƠNG PHÁP THIẾT KẾ THUẬT TOÁN CƠ BẢN TRONG TÍNH TOÁN SONG SONG VÀ ỨNG DỤNG Chuyên ngành : Cơ sở toán cho tin học Mã số : 60 46 01 10 LUẬN VĂN THẠC SĨ KHOA HỌC NGƯỜI HƯỚNG DẪN KHOA HỌC PGS.TS NGUYỄN HỮU ĐIỂN Hà Nội - Năm 2014 LỜI CẢM ƠN Trong trình tìm hiểu nghiên cứu để hoàn thành luận văn, gặp không khó khăn, lúc vậy, nhận động viên, khích lệ thầy giáo, PGS TS Nguyễn Hữu Điển Thầy tận tình hướng dẫn, định hướng cho phương pháp nghiên cứu khoa học hỗ trợ việc tìm tài liệu Để có kết luận văn này, xin gửi lời cảm ơn sâu sắc đến thầy giáo, PGS TS Nguyễn Hữu Điển, Trung Tâm Tính Toán Hiệu Năng Cao trường Đại học Khoa học Tự nhiên – Đại học Quốc gia Hà Nội Tôi xin gửi lời cảm ơn đến thầy cô dạy dỗ ân cần thời gian học cao học trường Đại học KHTN - ĐHQGHN Tôi xin cảm ơn thầy cô, anh chị Trung Tâm Tính Toán Hiệu Năng Cao tạo điều kiện giúp đỡ nhiều việc hoàn thành luận văn Cuối xin cảm ơn gia đình, người thân bạn người bên cạnh, động viên khích lệ để có kết ngày hôm Hà Nội, ngày 29 tháng năm 2014 Người thực hiện, học viên Ngô Thị Minh Nguyệt Lớp Cao học BĐT 2008 – 2010 BẢNG THUẬT NGỮ VIẾT TẮT Thuật ngữ Nghĩa tiếng Việt Tiếng Anh CPU Central Processing Unit Bộ xử lý trung tâm DNA Deoxyribo nucleic acid Axít deoxyribosenucleic HPC High Performance Computing Tính toán/máy tính hiệu cao LCS Longest Common Subsequence Dãy chung dài MIMD Multiple Instruction multiple Data Đa luồng lệnh đa luồng liệu MISD Multiple Instruction Simple Data Đa luồng lệnh đơn luồng liệu MPI Message Passing Interface Giao diện truyền thông điệp NUMA Non-Uniform Memory Access Truy cập nhớ không đồng thời RNA Ribo nucleic acid Axít ribonucleic SIMD Simple Instruction Multiple Data Đơn luồng lệnh đa luồng liệu SISD Simple Instruction simpleData Đơn luồng lệnh đơn luồng liệu TCP Transmission Control Protocol Giao thức điều khiển truyền thông UDP User Datagram Protocol Giao thức gói người dùng UMA Uniform Memory Access Truy cập nhớ đồng thời MỞ ĐẦU Nhân loại ngày chứng kiến phát triển mạnh mẽ ngành Công nghệ thông tin, ngành mũi nhọn nhiều quốc gia giới Sự phát triển vượt bậc kết tất yếu phát triển thiết bị phần cứng phần mềm tiện ích Từ máy tính đơn giản, tốc độ xử lý chậm, sử dụng số lĩnh vực kỹ thuật định, ngày chúng có khả tính toán tốc độ xử lý vượt trội trở thành công cụ thiếu lĩnh vực đời sống Những máy tính đời đầu tiên, hạn chế tốc độ xử lý chế vào liệu nên việc lập trình khó khăn Điều làm cho máy tính khả sử dụng dễ dàng phổ cập, ứng dụng số lĩnh vực khoa học đặc biệt Ngày nay, với phát triển mạnh mẽ thiết bị lưu trữ, nhớ, tốc độ xử lý thiết bị ngoại vi,… máy tính trở nên thân thiện với người sử dụng, tốc độ tính toán nhanh nhiều Nhờ mà nhiều toán lớn có khả thực thi nhiều ứng dụng đưa Tuy nhiên, thực tế nhiều vấn đề lớn với số lượng cần tính toán khổng lồ mà máy tính thông thường giải Vào thập kỷ 70, nhà khoa học đưa ý tưởng cấu trúc song song nhằm kết hợp sức mạnh nhiều xử lý máy tính, kết hợp nhiều máy tính với thông qua mạng máy tính tạo thành máy song song ảo Ngoài việc tính nhanh, máy tính song song có độ an toàn cao máy tính đơn, vài xử lý hỏng máy tính song song hoạt động máy tính đơn không làm điều Hiện giới có máy tính song song chứa đến hàng nghìn xử lý Để khai thác tiềm sức mạnh máy tính song song, với việc thiết kế kiến trúc song song ta phải nghiên cứu vấn đề quan trọng khác hệ điều hành hỗ trợ xử lý song song, ngôn ngữ lập trình thuật toán song song Việc nghiên cứu thiết kế máy tính song song, thuật toán song song ngôn ngữ lập trình hỗ trợ lập trình song song bắt đầu quan tâm từ năm 70, ứng dụng chúng lan rộng khắp lĩnh vực đời sống đánh giá khả rủi ro tài chính: dùng để mô hình hoá xu hướng thị trường… Hỗ trợ định phân tích thị trường, dự báo thời tiết… Trí tuệ nhân tạo thiết kế robot… Xử lý ảnh ứng dụng công nghệ nhận dạng… Điều khiển tự động… Trong toán có liên quan tới xếp đóng vai trò quan trọng, hay gặp lời giải toán tìm kiếm, tra cứu, … Do việc nghiên cứu thuật toán xếp bản, đặc biệt thuật toán song song toán xếp cần thiết Trong phạm vi luận văn trình bày ba phần chính, Chƣơng trình bày tổng quan xử lý song song, thuật toán song song giới thiệu lập trình song song với MPI , Chƣơng trình bày phương pháp thiết kế thuật toán tìm dãy chung dài tính toán song song; Chƣơng trình bày số kết thực nghiệm liệu cho chương trình song song tìm dãy chung dài nhât Với thời gian tiếp cận vấn đề lượng thông tin hạn chế, luận văn nhiều thiếu sót Tôi mong nhận góp ý thầy, cô anh/chị để tiếp tục phát triển đề tài nghiên cứu đạt kết Chƣơng – TÍNH TOÁN SONG SONG 1.1 Tổng quan xử lý song song Trong thập niên 60, tảng để thiết kế máy tính dựa mô hình John Von Neumann (Hình 1.10), với đơn vị xử lý nối với vùng lưu trữ làm nhớ thời điểm có lệnh thực thi [14] Bộ nhớ Câu lệnh Ghi liệu Đọc liệu Bộ xử lý Hình 1.1 Mô tả kiến trúc Von Neumann Với toán yêu cầu khả tính toán lưu trữ lớn mô hình kiến trúc hạn chế Để tăng cường sức mạnh tính toán giải toán lớn có độ tính toán cao, người ta đưa kiến trúc mới, với ý tưởng kết hợp nhiều xử lý vào máy tính, hay gọi xử lý song song kết hợp sức mạnh tính toán nhiều máy tính dựa kết nối mạng (máy tính song song) Kể từ lúc này, để khai thác sức mạnh tiềm tàng mô hình máy tính nhiều xử lý song song, mô hình mạng máy tính xử lý song song việc xây dựng thiết kế giải thuật song song điều quan trọng Giải thuật song song phân rã công việc phần tử xử lý khác 1.1.1 Một số khái niệm xử lý song song Định nghĩa về xƣ̉ lý song song Tính toán song song hay xử lý song song: trình xử lý thông tin nhiều đơn vị liệu xử lý đồng thời hay nhiều xử lý để giải toán [1] Máy tính song song tập hợp xử lý kết nối với theo kiến trúc xác định để hợp tác hoạt động trao đổi liệu [1] Phân biệt xử lý song song xử lý Trong tính toán với xử lý thời điểm thực phép toán Trong tính toán song song nhiều xử lý kết hợp với để giải toán giảm thời gian xử lý thời điểm thực đồng thời nhiều phép toán Mục đích xử lý song song Thực tính toán nhanh sở sử dụng nhiều xử lý đồng thời Cùng với tốc độ xử lý nhanh, việc xử lý song song giải toán phức tạp yêu cầu khối lượng tính toán lớn Vấn đề xử lý song song Liên quan trực tiếp đến kiến trúc máy tính, phần mềm hệ thống (hệ điều hành), giải thuật ngôn ngữ lập trình, … Độ phức tạp Độ phức tạp tính toán song song không phụ thuộc vào kích cỡ liệu đầu vào mà phụ thuộc vào kiến trúc máy tính song song số lượng xử lý phép sử dụng hệ thống Cài đặt giải thuật song song Để cài đặt giải thuật song song máy tính song song, phải sử dụng ngôn ngữ lập trình song song như: OpenMP với C/C++, MPI với C/C++, v.v 1.1.2 Phân loại kiến trúc máy tinh song song 1.1.2.1 Phân loại theo kiến trúc máy tính Flynn Một phân loại hay nhắc tới Flynn – 1966 [6] Michael Flynn phân kiến trúc máy tính thành bốn loại dựa vào phân phối luông liệu (data stream ) phân phối luồng lệnh (instruction stream) xử lý  Mô hình SISD (đơn luồng lệnh, đơn luồng liệu) Đây kiến trúc Von Neuman , máy tính SISD có CPU, dòng lệnh thực cách Hệ thống SISD (hình 1.2: thời điểm thực lệnh mục liệu) Hình 1.2: Mô hình máy SISD  Mô hình SIMD (Đơn luồng lệnh, đa liệu ) Máy tính loại SIMD có đơn vị điều khiển để điều khiển nhiều đơn vị xử lý thực theo luồng câu lệnh CPU phát sinh tín hiệu điều khiển tới tất phần tử xử lý, xử lý thực phép toán mục liệu khác Hình 1.3: Mô hình máy tính SIMD  Mô hình MISD (Đa luồng lệnh, đơn liệu) Máy tính MISD thực nhiều nhiều lệnh mục liệu, - Các máy tính yêu cầu đơn vị xử lý (PU) nhận lệnh khác để thực mục liệu - Các máy tính có luồng liệu chuyển theo dãy CPU liên tiếp gọi kiến trúc hình ống xử lýtheo vector thông qua dãy bước, bước thực chức sau chuyển kết quảcho PU thực bước  Mô hình MIMD (đa luồng lệnh, đa luồng liệu) Máy tính loại MIMD gọi đa xử lý, xử lý thực luồng lệnh khác luồng liệu riêng Hầu hết hệ thống MIMD có nhớ riêng truy cập vào nhớ chung cần, giảm thiểu trao đổi xử lý hệ thống Hình 1.4: Mô hình máy MIMD Đây kiến trúc phức tạp nhất, mô hình hỗ trợ xử lý song song cao nhất, chúng thực thi lệnh khác nhiều dòng liệu khác thời điểm Theo Flynn: có hai họ kiến trúc quan trọng cho máy tính song song: SIMD MIMD Những kiến trúc khác xếp theo hai mẫu Mục tiêu xử lý song song khai thác đến mức tối đa khả sử dụng thiết bị phần cứng nhằm giải nhanh toán đặt thực tế 1.1.2.2  Phân loại theo mô hình nhớ Mô hình nhớ chia sẻ Đặc điểm máy tính song song loại nút tính toán truy nhập vào nhớ dùng chung nhó toàn cục Nhiều xử lý hoạt động độc lập sử dụng chung nhớ, thay đổi nội dung ngăn nhớ xử lý biết Ưu điểm mô hình cung cấp vúng nhớ toàn cục dễ dàng cho việc lập trình mặt sử dụng nhớ đồng thời việc trao đổi thông tin modul tính toán tương đối nhanh chóng dễ dàng Hình 1.5: Máy tính chia sẻ nhớ Nhược điểm mô hình cân đối CPU nhớ Việc tăng CPU làm tăng thêm lưu lượng đường dẫn từ nhớ tới CPU  Mô hình nhớ phân tán Mô hình yêu cầu mạng truyền thông để kết nối nhớ vi xử lý Mỗi CPU gắn với nhớ riêng thao tác CPU nhớ không CPU khác biết tới Ưu điểm mô hình kích thước nhớ cân với số lượng xử lý Hình 1.6: Máy tính nhớ phân tán Nhược điểm mô hình người lập trình phải tự thiết lập lấy phương thức trao đổi thông tin CPU trình tính toán mà việc khó khăn  Mô hình nhớ lai Hầu hết máy tính nhanh lớn ngày xây dựng dựa kết hợp kiến trúc chia sẻ nhớ chung nhớ phân tán Sự kết hợp tạo nên máy tính với tên gọi máy tính có nhớ lai 1.1.3 Song song hóa máy tính Trong kiến trúc tận dụng tốc độ cực nhanh xử lý để thực xử lý song song theo nguyên lý chia sẻ thời gian chia sẻ tài nguyên Các ghi sử dụng trực tiếp cho ALU Bộ nhớ cache xem vùng đệm xử lý Sự song song hóa trao đổi liệu theo cấu trúc phân cấp cách khai thác chung để cải tiến hiệu xử lý hệ hống Các hệ điều hành máy tính đơn xử lý cho phép thực song song dựa vào cách tiếp cận phần mềm Trong khoảng thời gian, có nhiều tiến trình truy cập vào iệu từ thiết bị vào/ra chung Phần lớn chương trình có hai phần: phần vào/ra thành phần tính toán trình xử lý Các hệ điều hành đa chương trình luân phiên thực chương trình khác Để thực việc hệ điều hành sử dụng Bộ lập lịch chia sẻ thời gian làm nhiệm vụ phân chia CPU cho tiến trình khoảng thời gian cố định theo phương pháp quay vòng tròn Bằng cách đó, tất tiến trình sẵn sàng để thực sở phép sử dụng CPU tài nguyên khác hệ thống Do vậy, nguyên tắc việc phát triển chương trình song song máy đơn xử lý thực có hệ điều hành cho phép nhiều tiến trình thực hiện, nghĩa xem hệ thống đa xử lý 1.2 Các mô hình lập trình song song Việc đưa mô hình máy tính chung cho việc lập trình giúp cho việc thiết kế giải thuật giải thuật trở nên đơn giản Lập trình song song đưa thêm khó khăn vào mô hình lập trình Nếu chương trình thực mức thấp số lệnh thực lớn mà phải quản lý trực tiếp trình thực song song hàng nghìn xử lý kết hợp hàng triệu tương tác liên xử lý Bởi khả trừu tượng tính toán module đặc tính quan trọng lập trình song song Các mô hình thông dụng bao gồm: - Mô hình chia sẻ nhớ - Mô hình luồng - Mô hình truyền thông điệp - Mô hình song song liệu 1.2.1 Mô hình chia sẻ nhớ Trong mô hình này, nhiệm vụ chia sẻ không gian địa chung truy cập đọc ghi theo phương thức không đồng bộ.Các chế khác khóa (locks) semaphore điều khiển để truy cập đến nhớ toàn cục Nhược điểm mô hình khó giữ lại tính nguyên thủy liệu mà nhiều xử lý dùng liệu Lợi mô hình người lập trình không cần định việc truyền sữ liệu task; chương trình phát triển thường đơn giản hóa 1.2.2 Mô hình luồng Trong mô hình luồng chương trình chia thành nhiệm vụ Mỗi nhiệm vụ thực luồng cách đồng thời Mỗi luồng có liệu riêng chia sẻ liệu toàn cục chương trình Các nhiệm vụ đưa cho luồng thủ tục chương trình Và luồng thực thủ tục thời điểm với luồng khác.Trong mô hình luồng luồng kết nối với thông qua nhớ toàn cục 10 với việc kết nối chương trình phải xây dựng cách đồng để tránh lúc có nhiều luồng cập nhập vị trí nhớ toàn cục Hình 1.7: Mô tả chương trình tệp a.out, chương trình khởi động chạy tiến trình đơn, sau tiến trình khởi tạo để chạy đồng thời, tiến trình sử dụng tài nguyên a.out kết thúc riêng rẽ 11 TÀI LIỆU THAM KHẢO Tiếng Việt Đoàn Văn Ban, Nguyễn Mậu Hân (2006), Xử lý song song phân tán, NXB KHKT Nguyễn Hữu Điển (2006), Một số vấn đề thuật toán, NXB giáo dục Tiếng Anh Barry Wilkinson, Michael Allen, Parallel Programming, Prentice Hall, 1999 Cameron Hughes, Tracey Hughes (2003), Programming Using C++, Addison Wesley Parallel and Distributed David Ashton, William Gropp, Ewing Lusk: Installation and User’s Guide to MPICH, a Portable Implementation of MPI Version 1.2.5, Agonne National Laboratory H Roosta (2000), Parallel Processing and Parallel Algorithms, SpringerVerlag Korkin, D., Wang, Q., & Shang, Y (2008, September) An efficient parallel algorithm for the multiple longest common subsequence (mlcs) problem In Parallel Processing, 2008 ICPP'08 37th International Conference on (pp 354-363) IEEE K Hakata and H Imai Algorithms for the longest common subsequence problem for multiple strings based on geometric maxima Optimization Methods and Software, 10(2):233–260, 1998 Myers, G (1999) A fast bit-vector algorithm for approximate string matching based on dynamic programming Journal of the ACM (JACM), 46(3), 395-415 10 M Sasikumar, Dinesh Shikhare, P Ravi Prakash (2000), Introduction to Parallel Processing, Prentice – Hall 11 Jones, N C., & Pevzner, P (2004) An introduction to bioinformatics algorithms MIT press 12 Pevsner, J (2009) Bioinformatics and functional genomics John Wiley & Sons 13 Seyed H Roosta, Parallel Processing and Parallel Algorithms, Springer-Verlag, 2000 12 [...]... trình song song Việc đưa ra một mô hình máy tính chung cho việc lập trình giúp cho việc thiết kế giải thuật giải thuật trở nên đơn giản hơn Lập trình song song đưa thêm những khó khăn mới vào mô hình lập trình tuần tự Nếu chương trình được thực hiện ở mức thấp nhất thì không những số lệnh thực hiện là rất lớn mà nó còn phải quản lý trực tiếp quá trình thực hiện song song của hàng nghìn bộ xử lý và kết... Sự kết hợp đó tạo nên một máy tính với tên gọi máy tính có bộ nhớ lai 1.1.3 Song song hóa máy tính tuần tự Trong kiến trúc tuần tự có thể tận dụng tốc độ cực nhanh của bộ xử lý để thực hiện xử lý song song theo nguyên lý chia sẻ thời gian và chia sẻ tài nguyên Các thanh ghi được sử dụng trực tiếp cho ALU Bộ nhớ cache được xem như vùng đệm giữa bộ xử lý chính Sự song song hóa trong sự trao đổi dữ liệu... chung để cải tiến hiệu quả xử lý của hệ hống Các hệ điều hành của máy tính đơn bộ xử lý cho phép thực hiện song song dựa vào cách tiếp cận phần mềm Trong cùng một khoảng thời gian, có nhiều tiến trình cùng truy cập vào dữ iệu từ những thiết bị vào/ra chung Phần lớn các chương trình đều có hai phần: phần vào/ra và các thành phần tính toán trong quá trình xử lý Các hệ điều hành đa chương trình luân phiên... năng trừu tượng và tính toán module là các đặc tính rất quan trọng trong lập trình song song Các mô hình thông dụng bao gồm: - Mô hình chia sẻ bộ nhớ - Mô hình luồng - Mô hình truyền thông điệp - Mô hình song song dữ liệu 1.2.1 Mô hình chia sẻ bộ nhớ Trong mô hình này, nhiệm vụ cùng chia sẻ một không gian địa chỉ chung có thể được truy cập đọc ghi theo phương thức không đồng bộ.Các cơ chế khác nhau... số lượng các bộ xử lý Hình 1.6: Máy tính bộ nhớ phân tán 8 Nhược điểm chính của mô hình này chính là người lập trình phải tự thiết lập lấy phương thức trao đổi thông tin giữa các CPU trong quá trình tính toán mà việc này đôi khi là rất khó khăn  Mô hình bộ nhớ lai Hầu hết các máy tính nhanh và lớn ngày nay đều xây dựng dựa trên sự kết hợp giữa kiến trúc chia sẻ bộ nhớ chung và bộ nhớ phân tán Sự kết... chia sẻ Đặc điểm của máy tính song song loại này là các nút tính toán đều có thể truy nhập vào bộ nhớ dùng chung như là bộ nhó toàn cục Nhiều bộ xử lý hoạt động độc lập nhưng cùng sử dụng chung một bộ nhớ, mỗi sự thay đổi nội dung các ngăn nhớ đều được các bộ xử lý biết Ưu điểm chính của mô hình này là cung cấp một vúng nhớ toàn cục do đó dễ dàng cho việc lập trình về mặt sử dụng bộ nhớ đồng thời việc... tin giữa các modul tính toán là tương đối nhanh chóng và dễ dàng Hình 1.5: Máy tính chia sẻ bộ nhớ Nhược điểm của mô hình này chính là sự mất cân đối giữa CPU và bộ nhớ Việc tăng CPU làm tăng thêm lưu lượng trên đường dẫn từ bộ nhớ tới CPU  Mô hình bộ nhớ phân tán Mô hình này yêu cầu một mạng truyền thông để kết nối các bộ nhớ của các bộ vi xử lý Mỗi CPU đều gắn với một bộ nhớ riêng và các thao tác của... hiện việc này hệ điều hành sử dụng Bộ lập lịch chia sẻ thời gian làm nhiệm vụ phân chia CPU cho mỗi tiến trình một khoảng thời gian cố định theo phương pháp quay vòng tròn Bằng cách đó, tất cả các tiến trình đều được sẵn sàng để thực hiện trên cơ sở được phép sử dụng CPU và những tài nguyên khác của hệ thống Do vậy, về nguyên tắc việc phát triển những chương trình song song trên máy đơn bộ xử lý thực... nối này thì chương trình phải được xây dựng một cách đồng bộ để tránh cùng một lúc có nhiều luồng cùng cập nhập một vị trí trong bộ nhớ toàn cục Hình 1.7: Mô tả chương trình trong tệp a.out, chương trình khởi động chạy như một tiến trình đơn, sau đó các tiến trình được khởi tạo để chạy đồng thời, các tiến trình có thể sử dụng tài nguyên của a.out và có thể kết thúc riêng rẽ 11 TÀI LIỆU THAM KHẢO Tiếng... hiện bởi các luồng một cách đồng thời Mỗi một luồng có dữ liệu riêng của nó và chia sẻ dữ liệu toàn cục của chương trình chính Các nhiệm vụ đưa cho mỗi luồng là các thủ tục con của chương trình chính Và bất kì luồng nào cũng có thể thực hiện bất kì thủ tục con nào tại cùng thời điểm với các luồng khác .Trong mô hình luồng các luồng kết nối với nhau thông qua bộ nhớ toàn cục 10 với việc kết nối này thì

Ngày đăng: 09/09/2016, 10:37

Từ khóa liên quan

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

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

Tài liệu liên quan