Mn X L TNH TON SONG Tm hiu

  • Slides: 28
Download presentation
Môn: XỬ LÝ TÌNH TOÁN SONG Tìm hiểu thư viện hỗ trợ lập trình

Môn: XỬ LÝ TÌNH TOÁN SONG Tìm hiểu thư viện hỗ trợ lập trình song

Bản đánh giá đóng góp công việc Tên thanh viên Đóng góp Nguyễn Hữu

Bản đánh giá đóng góp công việc Tên thanh viên Đóng góp Nguyễn Hữu Thức 2001180355 50% Lê Thanh Lâm 2001180427 50%

Tầm quan trọng của đa luồng • Khi mà tốc độ của CPU không

Tầm quan trọng của đa luồng • Khi mà tốc độ của CPU không còn có thể cải thiện thêm nhiều thì hệ thống multicore bắt đầu trở lên phổ biến hơn. • Do đó, các lập trình viên cũng cần nắm bắt về parallel programming nhiều hơn, đưa ứng dụng thực hiện nhiều công việc hơn cùng lúc.

#Giới thiệu một cách cơ bản nhất về Open. MP (Open Multi - Processing)

#Giới thiệu một cách cơ bản nhất về Open. MP (Open Multi - Processing) là một giao diện lập trình ứng dụng Application Program lnterface (API) dược sứ dụng dế điều khiến các luồng (Thread) dựa trên cấu trúc chia sẻ bộ nhớ chung.

# Các thành phần của Open. MP Các chỉ thị biên dịch (Compilcr Directive).

# Các thành phần của Open. MP Các chỉ thị biên dịch (Compilcr Directive). Thư viện runtime (Runtime Library Rountines). Các biến môi trường (Enviroment Variables). Được định nghĩa dựa trên một nhóm phạm trù phần cứng và phần mềm, Open. MP là một thư viện, giúp cho người lập trình đơn giản và mềm dẻo để phát triển chương trình song chạy trên máy PC hỗ trợ nhiều bộ xử lý.

Mục đích của Open. MP • Có thể sử dụng Open. MP để giải

Mục đích của Open. MP • Có thể sử dụng Open. MP để giải quết các vấn đề giới hạn về thời gian như bài toán • dự báo thời tiết, và để mô phỏng các vấn đề thực tế như bài toán mô phỏng tai nạn xe hơi, • giải quyết các bài toán khoa học yêu cầu khối lượng tính toán lớn như bài toán mô phỏng • N-Body, dự báo thời tiết …

Mục đích của Open. MP ra đời với mục tiêu cung cấp một chuẩn

Mục đích của Open. MP ra đời với mục tiêu cung cấp một chuẩn chung cho rất nhiều kiến trúc và nền tảng phần cứng. Nó thiết lập một tập các chỉ thị biên dịch hỗ trợ việc lập trình song trên máy tính chia sẻ bộ nhớ chung.

Mục đích của Open. MP Một mức song chính thường được thực thi với

Mục đích của Open. MP Một mức song chính thường được thực thi với ba đến bốn chỉ thị. Open. MP ra đời giúp cho việc lập trình song một cách dễ dàng nó cung cấp khả năng song hóa chương trình tuần tự mà không dùng đến thư viện thông điệp v. v. . .

Mô hình lập trình song trong Open. MP sử dụng mô hình Fork-Join. Trong

Mô hình lập trình song trong Open. MP sử dụng mô hình Fork-Join. Trong mô hình này tất cả các chương trình song đều bắt đầu với việc xử lý đơn bởi một luồng chủ (master thread). Luồng chủ này sẽ thực thi một cách tuần tự cho tới khi bắt gặp vùng song (parallel region) đầu tiên.

Mô hình lập trình song trong Open. MP FORK: Có nghĩa là luồng chủ

Mô hình lập trình song trong Open. MP FORK: Có nghĩa là luồng chủ sau đó sẽ tạo ra một tập các luồng song. Và sau đó đoạn mã trong vùng song được thực thi song bởi tập luồng song vừa tạo ra. JOIN: Khi mà tập luồng song đã hoàn thành đoạn mã trong vùng song chúng sẽ được đồng bộ và kết thúc rồi sau đó công việc lại được thực hiện bởi luồng chủ.

Open. MP trong C++ • Open. MP bao gồm một tập các chỉ dẫn

Open. MP trong C++ • Open. MP bao gồm một tập các chỉ dẫn biên dịch #pragma nhằm chỉ dẫn cho chương trình hoạt động. • Các pragma được thiết kế nhằm mục đích nếu các trình biên dịch không hỗ trợ thì chương trình vẫn có thể hoạt động bình thường, nhưng sẽ không có bất kỳ tác vụ song nào được thực hiện như khi sử dụng Open. MP.

Enable tính năng Open. MP của Visual Studio Project Properties (ALT + ENTER) →

Enable tính năng Open. MP của Visual Studio Project Properties (ALT + ENTER) → C/C++ → Language → Open. MP và set là Yes (/openmp)

#Cú pháp • Tất cả các chỉ dẫn Open. MP trong C/C++ đều được

#Cú pháp • Tất cả các chỉ dẫn Open. MP trong C/C++ đều được dùng thông qua #pragma omp theo sau là các thông số và kết thúc bằng một ký hiệu xuống dòng. • #pragma chỉ được áp dụng vào đoạn chương trình ngay sau nó, ngoại trừ lệnh barrier và flush

Sử dụng thư viện Open. MP trong C++ Để sử dụng Open. MP trong

Sử dụng thư viện Open. MP trong C++ Để sử dụng Open. MP trong C++ ta thêm: #include <omp. h> Ví dụ: Chuyển vòng lập for thành sử lý song: → Ta chỉ cần thêm #pragma omp parallel for

Sử dụng thư viện Open. MP trong C++ Vòng lặp bình thường

Sử dụng thư viện Open. MP trong C++ Vòng lặp bình thường

Sử dụng thư viện Open. MP trong C++ Vòng lặp bình thường

Sử dụng thư viện Open. MP trong C++ Vòng lặp bình thường

Sử dụng thư viện Open. MP trong C++ Vòng lặp xử lý song

Sử dụng thư viện Open. MP trong C++ Vòng lặp xử lý song

Sử dụng thư viện Open. MP trong C++ Vòng lặp xử lý song

Sử dụng thư viện Open. MP trong C++ Vòng lặp xử lý song

Sử dụng thư viện Open. MP trong C++ Từ kết quả trên, chúng ta

Sử dụng thư viện Open. MP trong C++ Từ kết quả trên, chúng ta có thể thấy, hệ thống không chạy theo thứ tự từ 0 đến 9 nữa. Open. MP đã phân chia vòng lặp từ 0 - 9 thành 2 phần là 0 - 4, và 5 - 9, sau đó giao cho từng thread xử lý, bởi vậy chúng ta mới có kết quả như vậy.

MPI TRONG C++ Ban đầu MPI được thiết kế cho các kiến trúc bộ

MPI TRONG C++ Ban đầu MPI được thiết kế cho các kiến trúc bộ nhớ phân tán, kiến trúc rất phổ biến thời kỳ 1980 đến đầu năm 1990.

MPI TRONG C++ Xu hướng công nghệ thay đổi, bộ nhớ chia sẻ kết

MPI TRONG C++ Xu hướng công nghệ thay đổi, bộ nhớ chia sẻ kết hợp với mạng máy tính tạo ra dạng lai của hai hệ thống bộ nhớ chia sẻ và bộ nhớ phân tán. Thực thi MPI tương thích với cả hai kiểu kiến trúc trên và cũng tương thích với các kiểu kết nối và giao thức khác nhau.

Ngày nay MPI có thể chạy trên hầu hết các nền tảng phần cứng:

Ngày nay MPI có thể chạy trên hầu hết các nền tảng phần cứng: • Bộ nhớ chia sẻ • Bộ nhớ phân tán • Dạng lai hai loại trên

Cấu trúc chương trình MPI

Cấu trúc chương trình MPI

Cài đặt MPI trong Visual Studio – ngôn ngữ C++ Tải và cài đặt

Cài đặt MPI trong Visual Studio – ngôn ngữ C++ Tải và cài đặt

Cài đặt MPI trong Visual Studio Properties → C/C++ → General → additions iclude

Cài đặt MPI trong Visual Studio Properties → C/C++ → General → additions iclude directories → Edit→ Add C: Program Files (x 86)Microsoft SDKsMPIInclude Properties → Linker → General → additions iclude directories → Edit→ Add C: Program Files (x 86)Microsoft SDKsLibx 86 → Input → Edit → Add msmpi. lib

Sử dụng MPI

Sử dụng MPI

TH A NK FO RW AC H ING

TH A NK FO RW AC H ING