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

Tiểu luận môn điện toán lưới và đám mây Tính toán song song – Parallel Computing

44 499 2

Đ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

Cấu trúc

  • Phần 1. CƠ SỞ LÝ THUYẾT

    • 1.1 Tính toán song song

      • 1.1.1 Giới thiệu

      • 1.1.2 Xử lý song song

      • 1.1.3 Máy tính song song

    • 1.2 Kiến trúc hệ thống song song

      • 1.2.1 Kiến trúc SISD (đơn dòng lệnh dơn luồng dữ liệu)

      • 1.2.2 Kiến trúc SIMD (đơn dòng lệnh da luồng dữ liệu)

      • 1.2.3 Kiến trúc MISD (đa dòng lệnh đơn luồng dữ liệu)

      • 1.2.4 Kiến trúc MIMD (đa dòng lệnh đa luồng dữ liệu)

    • 1.3 Các mô hình lập trình song song

      • 1.3.1 Lập trình bộ nhớ dùng chung

      • 1.3.2 Lập trình truyền thông điệp

      • 1.3.3 Mô hình song song dữ liệu

      • 1.3.4 Mô hình hướng đối tượng

      • 1.3.5 Mô hình logic

    • 1.4 Kiến trúc máy tính song song

      • 1.4.1 Máy tính truy cập ngẫu nhiên song song

      • 1.4.2 Kiến trúc MISD theo nguyên lý hình ống

    • 1.5 Hiệu quả tính toán song song

      • 1.5.1 Thời gian tính toán

      • 1.5.2 Thời gian truyền thông

  • Phần 2. LẬP TRÌNH SONG SONG TRONG CSHARP

    • 2.1 Task Parallel Librabry (TPL)

      • 2.1.1 Task

      • 2.1.2 Vòng lặp song song (Parallel loops)

        • 2.1.2.1 Parallel.For()

        • 2.1.2.2 Parallel.ForEach

      • 2.1.3 Parallel.Invoke

        • 2.1.3.1 Bài toán 1: using Parallel.invoke parallel, to view result output different

        • 2.1.3.2 Bài toán 2: Encryption with 100 Unicode string using AES and MD5

      • 2.1.4 AsParallel

    • 2.2 Parallel Language INtegrated Query (PLINQ)

  • Phần 3. LẬP TRÌNH SONG SONG VỚI MPI

    • 3.1 Cơ bản về truyền thông điệp

      • 3.1.1 Mô hình truyển thông điệp

      • 3.1.2 Hàm send và receive

    • 3.2 MPI

      • 3.2.1 Giới thiệu

      • 3.2.2 Cấu trúc lệnh MPI

      • 3.2.3 Sử dụng MPI trên Windows với visual C++

      • 3.2.4 Một số chương trình

        • 3.2.4.1 Tìm số nguyên tố

        • 3.2.4.2 Thuật toán QuickSort

Nội dung

Tiểu luận: Tính toán song song – Parallel Computing LỜI NÓI ĐẦU Việc sử dụng các tài nguyên dùng chung ngày càng phổ biến, việc lưu trữ và xử lý dữ liệu lớn càng được quan tâm, đã đưa nhu cầu tính toán trong lĩnh vực khoa học, công nghệ ngày càng cao. Từ đó các giải pháp nhằm tăng tốc độ tính toán đã được ra đời. Ban đầu, người ta thường sử dụng tăng tốc độ CPU để thu được kết quả tính toán nhanh, tuy nhiên trong quá trình tăng tốc độ xung của CPU các nhà sản xuất đã gặp phải vấn đề về nhiệt độ của CPU sẽ quá cao và các giải pháp tản nhiệt khí đã đến mức tới hạn không thể đáp ứng được khả năng làm mát khi CPU hoạt động ở xung quá cao như vậy. Vì vậy việc gia tăng xung hoạt động của CPU không sớm thì muộn cũng sẽ đi vào bế tắc. Trước tình hình này, các nhà nghiên cứu vi xử lý đã chuyển hướng sang phát triển công nghệ đa lõi, đa luồng với cơ chế xử lý song song trong các máy tính nhằm tăng hiệu năng và tiết kiệm năng lượng. Lập trình song song có thể giải quyết được các bài toán với thời gian xử lý nhanh chóng. Qua môn học điện toán lưới và đám mây, người viết đã được tìm hiểu về các kỹ thuật song song hóa để cải thiện thời gian tính toán cho các bài toán, trong đó lập trình song song xem như là công cụ mạnh. Người viết xin gửi lời cảm ơn chân thành đến PGS.TS Nguyễn Phi Khứ trường Đại học Công Nghệ Thông Tin và các quí Thầy Cô đã tận tình giảng dạy, giúp đỡ để người viết hiểu thêm và hoàn thành tiểu luận này. Mặc dù đã rất nỗ lực, cố gắng nhưng kiến thức còn hạn chế nên bài viết không thể bao quát hết những kiến thức đã học, mục đích chủ yếu tiểu luận này là để ứng dụng kỹ thuật song song hóa vào một vài giải thuật để tăng hiệu năng chương trình. GVHD: PGS.TS Nguyễn Phi Khứ HVTH: Nguyễn Ngọc Vọng – CH1301118 1 Tiểu luận: Tính toán song song – Parallel Computing NHẬN XÉT CỦA GIẢNG VIÊN GVHD: PGS.TS Nguyễn Phi Khứ HVTH: Nguyễn Ngọc Vọng – CH1301118 2 Tiểu luận: Tính toán song song – Parallel Computing MỤC LỤC LỜI NÓI ĐẦU 1 NHẬN XÉT CỦA GIẢNG VIÊN 2 MỤC LỤC 3 Ph n 1. C S LÝ THUY Tầ Ơ Ở Ế 4 1.1 Tính toán song song 4 1.2. So sánh XLTT và XLSS 5 1.2 Ki n trúc h th ng song songế ệ ố 6 1.3. Mô t phân lo i ki n trúc c a Flynnả ạ ế ủ 6 1.3 Các mô hình l p trình song songậ 10 1.4 Ki n trúc máy tính song songế 13 1.4. S p x p theo nguyên lý hình ngắ ế ố 14 1.5 Hi u qu tính toán song songệ ả 15 Ph n 2. L P TRÌNH SONG SONG TRONG CSHARPầ Ậ 18 2.1 Task Parallel Librabry (TPL) 18 2.2 Parallel Language INtegrated Query (PLINQ) 26 Ph n 3. L P TRÌNH SONG SONG V I MPIầ Ậ Ớ 29 3.1 C b n v truy n thông đi pơ ả ề ề ệ 29 3.2 MPI 30 KẾT LUẬN 44 TÀI LIỆU THAM KHẢO 45 GVHD: PGS.TS Nguyễn Phi Khứ HVTH: Nguyễn Ngọc Vọng – CH1301118 3 Tiểu luận: Tính toán song song – Parallel Computing Phần 1. CƠ SỞ LÝ THUYẾT 1.1 Tính toán song song 1.1.1 Giới thiệu Trong những thập niên 60, nền tảng để thiết kế máy tính đều dựa trên mô hình của John Von Neumann (Hình 1.1. ), với một đơn vị xử lý được nối với một vùng lưu trữ làm bộ nhớ và tại một thời điểm chỉ có một lệnh được thực thi. Hình 1.1. Mô tả kiến trúc Von Neumann Với những bài toán yêu cầu về khả năng tính toán và lưu trữ lớn thì mô hình kiến trúc này còn hạn chế. Để tăng cường sức mạnh tính toán giải quyết các bài toán lớn có độ tính toán cao, người ta đưa ra kiến trúc mới, với ý tưởng kết hợp nhiều bộ xử lý vào trong một máy tính, mà hay gọi là xử lý song song (Multiprocessor) hoặc kết hợp sức mạnh tính toán của nhiều máy tính dựa trên kết nối mạng (gọi là máy tính song song - multicomputer). Ngày nay các chương trình chúng ta đang sử dụng thông thường là các chương trình được viết theo các giải thuật tuần tự, nghĩa là một bài toán được giải quyết thông qua một chuỗi các câu lệnh tuần tự, thường thì bài toán này sẽ được thực hiện trên một máy tính đơn với một BXL. Tính toán song song là một bước tiếp theo và là tất yếu của sự phát triển của khoa học máy tính. Tính toán song song, đó là sự giải quyết bài toán dựa trên sự thực thi một cách đồng thời của 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 với nhiều BXL - Nhiều máy tính đơn BXL kết nối với nhau GVHD: PGS.TS Nguyễn Phi Khứ HVTH: Nguyễn Ngọc Vọng – CH1301118 4 Tiểu luận: Tính toán song song – Parallel Computing - Kết hợp cả hai loại trên Tính toán song song được sử dụng để giải quyết các vấn đề 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 lượng dữ liệu lớn như: các bài toán dự báo thời tiết,các vấn đề khoa học như khai phá dữ liệu, trí tuệ nhân tạo, xử lý ảnh ba chiều (3-D), mô phỏng các hệ thống lớn. Hầu hết các bài toán này, những máy tính xử lý tuần tự đều không đáp ứng được yêu cầu về thời gian và khối lượng công việc. 1.1.2 Xử lý song song Mặc dù tốc độ tính toán của các BXL tăng nhiều qua từng năm, nhưng do giới hạn vật lý nên khả năng tính toán của chúng không thể tăng mãi. Nếu muốn tăng khả năng tính toán thì chúng ta phải khai thác được khả năng xử lý song song. Xử lý song song là quá trình xử lý gồm nhiều tiến trình được kích hoạt đồng thời và cùng tham gia giải quyết một bài toán trên hệ thống có nhiều bộ xử lý. Hình 1.2. Mô tả xư lý song song Sự khác nhau cơ bản giữa xử lý song song và xử lý tuần tự: 1.2. So sánh XLTT và XLSS Xử lý tuần tự Xử lý song song Mỗi thời điểm chỉ thực hiện được 1 phép toán Mỗi thời điểm chỉ thực hiện được nhiều phép toán Thời gian thực hiện phép toán chậm Thời gian thực hiện phép toán nhanh GVHD: PGS.TS Nguyễn Phi Khứ HVTH: Nguyễn Ngọc Vọng – CH1301118 5 Tiểu luận: Tính toán song song – Parallel Computing 1.1.3 Máy tính song song Máy tính song song (MTSS) là một tập các bộ xử lý (BXL) (thường là cùng một loại) kết nối với nhau theo một kiểu nào đó để có thể hợp tác với nhau cùng hoạt động và trao đổi dữ liệu với nhau. 1.2 Kiến trúc hệ thống song song Một trong những phân loại kiến trúc máy tính song song được biết đến nhiều nhất là phân loại của Flynn, được sử dụng từ năm 1966. Michael Flynn dựa vào đặc tính về số lượng bộ xử lý, số chương trình thực hiện, cấu trúc bộ nhớ, … để phân máy tính thành bốn loại dựa trên sự biểu hiện của cặp khái niệm: dòng lệnh (Instruction stream) và dòng dữ liệu (Data stream), mỗi loại nằm trong một trong hai trạng thái đơn (single) hoặc đa (multiple) được thể hiện trong bảng sau: 1.3. Mô tả phân loại kiến trúc của Flynn Dòng lệnh (Instruction stream) Dòng dữ liệu (Data stream) Loại kiến trúc Trạng thái đơn (single) Trạng thái đơn (single) SISD Single Instruction Single Data Trạng thái đơn (single) Trạng thái đa (multiple) SIMD Single Instruction Multiple Data Trạng thái đa (multiple) Trạng thái đơn (single) MISD Multiple Instruction Single Data Trạng thái đa (multiple) Trạng thái đa (multiple) MIMD Multiple Instruction Multiple Data 1.2.1 Kiến trúc SISD (đơn dòng lệnh dơn luồng dữ liệu) Máy tính SISD chỉ có một CPU, ở mỗi thời điểm thực hiện một chỉ lệnh và chỉ đọc, ghi một mục dữ liệu. Tất cả các máy tính SISD chỉ có một thanh ghi (register) được gọi là bộ đếm chương trình, được sử dụng để nạp địa chỉ của lệnh tiếp theo và kết quả là thực hiện theo một thứ tự xác định của các câu lệnh. GVHD: PGS.TS Nguyễn Phi Khứ HVTH: Nguyễn Ngọc Vọng – CH1301118 6 Tiểu luận: Tính toán song song – Parallel Computing . Hình 1.1. Mô hình SISD Hình 1.2. Ví dụ mô hình SISD 1.2.2 Kiến trúc SIMD (đơn dòng lệnh da luồng dữ liệu) Máy tính SIMD có một đơn vị điều khiển để điều khiển nhiều đơn vị xử lý thực hiện theo một luồng các câu lệnh. CPU phát sinh tín hiệu điều khiển tới tất cả các phần xử lý, những bộ xử lý này cùng thực hiện một phép toán trên cấc mục dữ liệu khác nhau, nghĩa là mỗi bộ xử lý có luồng dữ liệu riêng. Hình sau đây mô tả mô hình SIMD, với IS: Instruction Stream PU: Processing Unit LM: Local Memory DS: Data Stream Hình 1.3. Mô hình SIMD GVHD: PGS.TS Nguyễn Phi Khứ HVTH: Nguyễn Ngọc Vọng – CH1301118 7 Tiểu luận: Tính toán song song – Parallel Computing Hình 1.4. Ví dụ mô hình SIMD Mô hình SIMD còn được gọi là SPMD, đơn chương trình và đa dữ liệu. Đây chính là mô hình máy tính phổ biến có trên thị trường như: DAP và Connection Machine CM-2 1.2.3 Kiến trúc MISD (đa dòng lệnh đơn luồng dữ liệu) Máy tính loại MISD có thể thực hiện nhiều chương trình (nhiều lệnh) trên cùng một mục dữ liệu (ngược với máy tính loại SIMD). Hình sau đây mô tả mô hình MISD, với IS: Instruction Stream PU: Processing Unit CU: Control Unit LM: Local Memory DS: Data Stream Hình 1.5. Mô hình MISD GVHD: PGS.TS Nguyễn Phi Khứ HVTH: Nguyễn Ngọc Vọng – CH1301118 8 Tiểu luận: Tính toán song song – Parallel Computing Hình 1.6. Ví dụ mô hình MISD 1.2.4 Kiến trúc MIMD (đa dòng lệnh đa luồng dữ liệu) Máy tính loại MIMD gọi là đa bộ xử lý, trong đó mỗi bộ xử lý có thể thực hiện những luồng lệnh (chương trình) khác nhau trên các luồng dữ liệu riêng. Hầu hết các hệ thống MIMD đều có bộ nhớ riêng và cũng có thể truy cập vào bộ nhớ chung khi cần, do vậy giảm thiểu được thời gian trao đổi dữ liệu giữa các bộ xử lý trong hệ thống. Đây là loại kiến trúc phức tạp nhất, nhưng nó là mô hình hỗ trợ xử lý song song cao nhất và đã có nhiều máy tính được thiết kế theo kiến trúc này, ví dụ: BBN Butterfly, Alliant FX, iSPC của Intel, Hình 1.7. Mô hình MIMD GVHD: PGS.TS Nguyễn Phi Khứ HVTH: Nguyễn Ngọc Vọng – CH1301118 9 Tiểu luận: Tính toán song song – Parallel Computing Hình 1.8. Ví dụ mô hình MISD Một vài nhận xét: - Theo Flynn: có hai họ kiến trúc quan trọng cho các máy tính song song: SIMD và MIMD. Những kiến trúc khác có thể xếp theo hai mẫu đó. - Mục tiêu của xử lý song song là khai thác đến mức tối đa các khả năng sử dụng của các thiết bị phần cứng nhằm giải quyết nhanh những bài toán đặt ra trong thực tế. - Kiến trúc phần cứng là trong suốt đối với người lập trình. - Trong kiến trúc tuần tự có thể tận dụng tốc độ cực nhanh của BXL để thực hiện xử lý song song theo nguyên lý chia sẻ thời gian và chia sẻ tài nguyên. - Những chương trình song song trên máy đơn BXL có thể thực hiện được nếu có HĐH cho phép nhiều tiến trình cùng thực hiện, nghĩa là có thể xem hệ thống như là đa bộ xử lý. 1.3 Các mô hình lập trình song song 1.3.1 Lập trình bộ nhớ dùng chung Lập trình bộ nhớ dùng chung hay còn gọi là lập trình chia sẻ bộ nhớ. Trong mô hình này được thiết kế cho máy tính xử lý song song (multiprocessors), các tác vụ chia sẻ không gian địa chỉ dùng chung, được đọc/ghi một cách không đồng bộ. Một số kỹ thuật được dùng trong lập trình bộ nhớ dùng chung như khoá (locks) hay cờ (semaphores) được sử dụng để điều khiển truy nhập đến bộ nhớ dùng chung. Truyền thông giữa các tác vụ thông qua các biến dùng chung. GVHD: PGS.TS Nguyễn Phi Khứ HVTH: Nguyễn Ngọc Vọng – CH1301118 10 [...]... Vọng – CH1301118 24 Tiểu luận: Tính toán song song – Parallel Computing Hình 1.5 Mô hình AES, MD5 tuần tự - Parallel Parallel.Invoke( () => GenerateAESKeys(), () => GenerateMD5Hashes()); Thời gian để chạy song song Hình 1.6 Mô hình AES, MD5 song song 2.1.4 AsParallel Với AsParallel, ta có thể thực hiện tính toán song song Bài toán sau đây cho thấy 2 cách tính tổng mảng theo cách tuần tự và song song... HVTH: Nguyễn Ngọc Vọng – CH1301118 32 Tiểu luận: Tính toán song song – Parallel Computing Hình 1.2 Chỉnh các thông số Project GVHD: PGS.TS Nguyễn Phi Khứ HVTH: Nguyễn Ngọc Vọng – CH1301118 33 Tiểu luận: Tính toán song song – Parallel Computing 6 Viết chương trình, biên dịch cho ra file exe Copy file này vào C:\Program Files\MPICH\mpd\bin Hình 1.3 Run file exe Để chạy song song 2 máy tính ta có thể cấu... Vọng – CH1301118 27 Tiểu luận: Tính toán song song – Parallel Computing Console.ReadLine(); } } Kết quả Hình 1.9 Kết quả sử dụng Reduce GVHD: PGS.TS Nguyễn Phi Khứ HVTH: Nguyễn Ngọc Vọng – CH1301118 28 Tiểu luận: Tính toán song song – Parallel Computing Phần 3 LẬP TRÌNH SONG SONG VỚI MPI 3.1 Cơ bản về truyền thông điệp 3.1.1 Mô hình truyển thông điệp Trong mô hình truyển thông điệp, các đơn vị xử lý song. .. có độ phức tạp O(n) 1.5 Hiệu quả tính toán song song 1.5.1 Thời gian tính toán Thời gian tính toán của giải thuật song song là thời gian dành để thực hiện tính toán Đối với giải thuật tuần tự thì thời gian này chỉ phụ thuộc vào kích thước của bài toán nhưng với tính toán song song thì việc tính toán lặp trên các tác vụ có thể có Do đó thời gian tính toán sẽ phụ thuộc vào số tác vụ thực hiện Đối với... Khứ HVTH: Nguyễn Ngọc Vọng – CH1301118 20 Tiểu luận: Tính toán song song – Parallel Computing diễn dưới dạng này Còn việc thực hiện song song là do trình biên dịch và CPU đảm nhiệm Ví dụ sau đây, phương thức ParallelParitionGenerateMD5Hashes với việc sử dụng vòng lặp tuần tự và song song: private static void ParallelPartitionGenerateMD5Hashs() { var sw = Stopwatch.StartNew(); Parallel. ForEach(Partitioner.Create(1,... khác nhau với cùng phép toán Mô hình song song dữ liệu thiết kế chủ yếu dành cho máy tính song song kiểu bộ xử lý mảng GVHD: PGS.TS Nguyễn Phi Khứ HVTH: Nguyễn Ngọc Vọng – CH1301118 11 Tiểu luận: Tính toán song song – Parallel Computing Hình 1.11 Mô hình lập trình song song dữ liệu 1.3.4 Mô hình hướng đối tượng Trong mô hình hướng đối tượng này, ánh xạ các đơn vị thực hiện vào các đối tượng Các... Các bước lập trình song song trên windows và thực thi chương trình song song: 1 Tải MPICH và cài đặt 2 Copy các thư viện tại vị trí C:\Program Files\MPICH\SDK\Lib vào C:\Program Files\Microsoft Visual Studio\VC98\Lib 3 Mở MS Developer Studio – Visual C++ 4 Tạo một project mới GVHD: PGS.TS Nguyễn Phi Khứ HVTH: Nguyễn Ngọc Vọng – CH1301118 31 Tiểu luận: Tính toán song song – Parallel Computing 5 Chỉnh... Khứ HVTH: Nguyễn Ngọc Vọng – CH1301118 12 Tiểu luận: Tính toán song song – Parallel Computing 1.4 Kiến trúc máy tính song song 1.4.1 Máy tính truy cập ngẫu nhiên song song Chứa một đơn vị điều khiển CU, một bộ nhớ chung, một tập không giới hạn các BXL Mỗi BXL lại có bộ nhớ riêng và có một chỉ số duy nhất được sử dụng để xác định địa chỉ trong quá trình trao đổi các tín hiệu và quản lý các ngắt Tất cả... tự cộng với bất kỳ thời gian nào thêm vào do thực hiện song song Chẳng hạn như thời gian tính toán lặp lại cùng một công việc trên các tác vụ GVHD: PGS.TS Nguyễn Phi Khứ HVTH: Nguyễn Ngọc Vọng – CH1301118 15 Tiểu luận: Tính toán song song – Parallel Computing 1.5.2 Thời gian truyền thông Thời gian truyền thông của một giải thuật là thời gian các tác vụ dành để gửi và nhận thông điệp Có hai loại truyền... Ngọc Vọng – CH1301118 17 Tiểu luận: Tính toán song song – Parallel Computing Phần 2 LẬP TRÌNH SONG SONG TRONG CSHARP 2.1 Task Parallel Librabry (TPL) 2.1.1 Task Chương trình cần lấy dữ liệu từ database, nó sẽ truy vấn đến database thông qua LINQ, sau đó được đưa đến các thư viện chứa các Task (Task Parallel Library- viết tắt là TPL) Tại đây chương trình sẽ được chia nhỏ thành các tác vụ và được lập . PGS.TS Nguyễn Phi Khứ HVTH: Nguyễn Ngọc Vọng – CH1301118 5 Tiểu luận: Tính toán song song – Parallel Computing 1.1.3 Máy tính song song Máy tính song song (MTSS) là một tập các bộ xử lý (BXL) (thường. LUẬN 44 TÀI LIỆU THAM KHẢO 45 GVHD: PGS.TS Nguyễn Phi Khứ HVTH: Nguyễn Ngọc Vọng – CH1301118 3 Tiểu luận: Tính toán song song – Parallel Computing Phần 1. CƠ SỞ LÝ THUYẾT 1.1 Tính toán song song 1.1.1. HVTH: Nguyễn Ngọc Vọng – CH1301118 12 Tiểu luận: Tính toán song song – Parallel Computing 1.4 Kiến trúc máy tính song song 1.4.1 Máy tính truy cập ngẫu nhiên song song Chứa một đơn vị điều khiển CU,

Ngày đăng: 20/05/2015, 05:45

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w