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

ỨNG DỤNG LẬP TRÌNH SONG SONG ĐỂ NÂNG CAO TỐC ĐỘ XỬ LÝ CỦA CHƯƠNG TRÌNH

18 892 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

Thông tin cơ bản

Định dạng
Số trang 18
Dung lượng 448,5 KB

Nội dung

LỜI NÓI ĐẦUSự phát triển của Công Nghệ Thông tin, tin học gắn liền với sự phát triển không ngừng của các ngôn ngữ lập trình nhằm đáp ứng nhu cầu ngày càng lớn về công nghệ thông tin của

Trang 1

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI

VIỆN ĐIỆN TỬ VIỄN THÔNG

BÁO CÁO BÀI TẬP LỚN

MÔN: HỆ ĐIỀU HÀNH

Đề Tài: ỨNG DỤNG LẬP TRÌNH SONG SONG

ĐỂ NÂNG CAO TỐC ĐỘ XỬ LÝ CỦA CHƯƠNG TRÌNH

Giảng viên hướng dẫn : Ts Vũ Song Tùng

Sinh viên thực hiện :

1, Trần Văn Phú - 20149513 2,

3,

Hà Nội, 11/2014

Trang 2

LỜI NÓI ĐẦU

Sự phát triển của Công Nghệ Thông tin, tin học gắn liền với sự phát triển không ngừng của các ngôn ngữ lập trình nhằm đáp ứng nhu cầu ngày càng lớn về công nghệ thông tin của con người.Có rất nhiều cuộc bùng nổ về kĩ thuật lập trình nhằm thỏa mãn được cao nhất yêu cầu của con người , nhờ đó các mô hình ngôn ngữ lập trình trở nên

đa dạng và vô cùng phong phú.Bên cạnh đó là tốc độ xử lý xử lý thông tin là những vấn đề mà chúng ta đang muốn nâng cao, nhất là trong những ứng dụng yêu cầu thời gian thực hay là những thuật toán lớn cần 1 khoảng thời gian mới có thể thực hiện được Là những sinh viên của Viện Điện tử viễn thông ,chúng em rất muốn tìm hiểu về các loại ngôn ngữ lập trình, một kỹ thuật lập trình mới

Với những kiến thức chưa đầy đủ của chúng em về chuyên ngành, cũng như khả năng tìm hiểu chưa sâu, nên bài em làm của mình chúng em vẫn còn nhiều sai sót , vì vậy chúng em mong thầy hướng dẫn em để bài viết được hoàn thiện hơn

Em xin chân thành cảm ơn

Trang 3

MỤC LỤC

Trang 4

DANH MỤC HÌNH VẼ

Trang 5

DANH MỤC BẢNG BIỂU

Trang 6

THUẬT NGỮ VIẾT TẮT

Trang 7

CHƯƠNG 1 MỞ ĐẦU

1.1 Đặt vấn đề

Hiện nay, để giải quyết các bài toán lớn người ta thường nghĩ đến việc sử dụng các siêu máy tính hoặc việc kết hợp nhiều máy tính với nhau để tính toán Tuy nhiên, với phương pháp lập trình cổ điển thì không thể nào phát triển được chương trình có thể tận dụng được sức mạnh của các hệ thống đó, nhất là ngày nay công nghệ phần cứng cho phép nhiều hơn một bộ vi xử lý(CPU) vào trong một chíp, mà trong khi một chương trình ứng dụng đa phần chỉ chạy trên một lõi(core) duy nhất Điều đó dẫn đến

việc lãng phí nguồn tài nguyên có sẵn trong một máy tính Đó chính là lý do lập trình

song song ra đời.

Lập trình song song là một công việc phức tạp hơn so với lập trình tuần tự thông

thường, người phát triển phải thực hiện một quá trình “song song hóa”, biến đổi các chương trình tuần tự thành chương trình song song có khả năng tận dụng tối đa sức mạnh của hệ thống

Lập trình song song bao gồm các bước :

- Phân hủy một thuật toán hay các dữ liệu đầu vào

- Phân chia nhiệm vụ cho các bộ phận để làm việc trong bộ vi xử lý cùng một lúc

- Phối hợp và trao đổi giữa các bộ vi xử lý

1.2 Phạm vi nghiên cứu

Trong khuân khổ của bài tập lớn môn Hệ Điều Hành, chúng em thực hiện 02 kịch bản ứng dụng phương pháp lập trình song song để chứng minh việc áp dụng lập trình song song vào các chương trình để nâng cao tốc độ xử lý, trong đó bao gôm:

 Xử dụng thư viện mã nguồn mở OpenMP vào bài toán cộng ma trận vuông kịch thước lớn: Trong mô hình này chúng em xử dụng các ma trân với kịch thước lớn (500x500), đồng thời đo đạc khoảng thời gian tính trong những lần chạy thử

và tính toán các thông số về thời gian trung bình cũng như thời gian đỉnh

 Ứng dụng lập trình đa luồng (thread) vào bài toán chia sẽ dữ liệu giữa các máy

PC trong một mạng cục bộ (local): Trong mô hình này, chúng em xử dụng 5 luồng dữ liệu để điều khiển 5 cặp giao thức client/server trong giao thức TCP/IP để chia sẻ file cho nhau

Trang 8

Toàn bộ source code mã nguồn chúng em viết trên hệ điều hành mã nguồn mở Linux

và xử dụng ngôn ngữ lập trình C để viết

1.3 Quy trình thực hiện

1.3.1 Ứng dụng lập trình song song vào bài toán cộng ma trận

1.3.2 ứng dụng lập trình song song vào giao thức chia sẻ dữ liệu

Trang 9

CHƯƠNG 2 TỔNG QUAN LÝ THUYẾT

2.1 Tổng quan về lập trình song song

2.1.1 mô hình tính toán song song

Tính toán song song

Như chúng ta đã thấy các phần mềm phổ biến ngày nay hầu hết đều được viết trên cơ

sở của tính toán tuần tự Các phần mềm này thường được thực hiện trên một máy tính đơn với duy nhất một bộ xử lý Vấn đề ở đây được giải quyết thông qua một chuỗi các lệnh tuần tự được thực hiện bởi một bộ xử lý Tại một thời điểm chỉ có một lệnh được thực hiện

Tính toán song song ra đời là một sự cải tiến của tính toán tuần tự Nó là sự giải quyết vấn đề dựa trên sự thực thi đồng thời của nhiều tài nguyên máy tính

Tài nguyên máy tính đây bao gồm:

- Một máy tính đơn với nhiều bộ xử lý

- Nhiều máy tính nối lại với nhau thành một mạng máy tính

- Kết hợp cả hai loại trên

Tính toán song song thường được dùng để giải quyết các vấn đề hết sức 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 dữ liệu lớn như các bài toán dự báo thời tiết, mô phỏng tai nạn xe hơi, xây dựng các mô hình thương mại và các vấn đề khoa học như khai phá dữ liệu , trí tuệ nhân tạo, an toàn dữ liệu

Tại sao phải tính toán song song?

Việc tính toán song song là rất cần thiết Ngoài hai nguyên nhân chính là nó được dùng để tính toán các bài toán yêu cầu thời gian tính toán lớn và khối lượng dữ liệu lớn còn có các nguyên nhân khác như để sử dụng tài nguyên của các máy khác trong một mạng LAN hoặc thông qua mạng internet, có thể sử dụng nhiều tài nguyên tính toán nhỏ kết hợp lại tạo nên một siêu máy tính Do giới hạn về không gian lưu trữ của

bộ nhớ trên một máy đơn để giải quyết một vấn đề lớn việc sử dụng nhiều bộ nhớ trên nhiều máy tính là rất hữu hiệu trong trường hợp này

Giới hạn của tính toán tuần tự bao gồm cả hai nguyên nhân thực tế và nguyên nhân vật

lý Để xây dựng nên một máy tính tuần tự tốc độ cao gặp rất nhiều hạn chế

♣ Về tốc độ truyền dữ liệu: Tốc độ truyền của máy tính tuần tự phụ thuộc trực tiếp vào sự di chuyển dữ liệu trong phần cứng Cho nên việc tăng tốc độ thực hiện phải chủ yếu căn cứ vào các yếu tố tính toán

Trang 10

♣ Về kích cỡ: Công nghệ chế tạo bộ xử lý cho phép gắn nhiều bóng bán dẫn trên một con chip Tuy nhiên việc làm này sẽ làm tăng kích thước của bộ xử lý

♣ Về thương mại: Việc tạo ra một bộ xử lý tốc độ xử lý cao là rất tốn kém Sử dụng nhiều bộ xử lý nhỏ đạt hiệu quả tương tự mà lại ít tốn kém hơn

2.1.2 Các mô hình song song

 Multi-computer: Với mô hình này thì nhiều máy tính được kết nối với nhau để cùng xủ lý một chương trình duy nhất

 Multi-processor/Multi-core: Ở mô hình này xử nhiều bọ vi xử lý trong cùng một máy tính hay một bộ vi xử lý gồm nhiều CPU để chạy một chương trình

 Hệ thống lai ghép: Là việc xử dụng kết hợp cả hai mô hình trên Dùng để tạo nên một hệ thống tính toán khổng lồ và phức tạp

2.2 Thư viện lập trình song song mã nguồn mở OpenMP

2.2.1 Giới thiệu về OpenMP

Theo Wikipedia:

OpenMP (Open Multi-Processing) là một giao diện lập trình ứng dụng API (Application programming interface) hỗ trợ đa nền tảng dựa trên cấu trúc chia sẻ

bộ nhớ chung, đa ngôn ngữ lập trình C, C++, Fortran và hầu hết các bộ kiến trúc vi

xử lý và hệ điều hành Linux, Unix, Mac OS X, nền tảng Microsoft Windows

Trang 11

Nó bao gồm :

Các chỉ thị biên dịch (Compiler directives)

Các thư viện Runtime (Library rountines)

Các biến môi trường (Environment variables)

Hình 1: Kiến trúc OpenMP

2.2.2 Mô hình lập trình song song

Song song hóa dựa trên cơ chế luồng (Thread based parallelism)

Trong mô hình trên chương trình xử lý trên bộ nhớ toàn cục bao gồm nhiều luồng thực thi đồng thời OpenMP dựa vào sự tồn tại của nhiều luồng trên một mô hình lập trình chia sẻ bộ nhớ chung

Mô hình song song hiện (Explicit Parallelism)

Mô hình trên là một mô hình lập trình không tự động Người lập trình có quyền điều khiển việc song song hóa một cách độc lập

Mô hình Fork-Join

Trong các mô hình trên thì OpenMP sử dụng mô hình Fork-Join để thực thi công việc song song

Trang 12

Hình 2: Mô hình Fork-Join

Trong mô hình này tất cả các chương trình song 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 song (parallel region) đầu tiên

FORK: Có nghĩa là luồng chủ sau đó sẽ tạo ra một tập các luồng song song Và sau đó đoạn mã trong vùng song song được thực thi song song bởi tập luồng song song vừa tạo ra

JOIN: Khi mà tập luồng song song đã hoàn thành đoạn mã trong vùng song 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ủ

2.2.3 Các chỉ thị trong OpenMP

Khuôn dạng chỉ thị:

Chỉ thị trong OpenMP được cho dưới dạng sau:

# pragma omp directive-name [clause ] newline

● pragma omp: Yêu cầu bắt buộc đối với mọi chỉ thị OpenMP C/C++

● directive-name: Là tên của chỉ thị phải xuất hiện sau #pragma omp

và đứng trước bất kì mệnh đề nào

● [clause ]: Các mệnh đề này không bắt buộc trong chỉ thị

● newline : Yêu cầu bắt buộc với mỗi chỉ thị nó là tập mã lệnh nằm trong khối cấu trúc được bao bọc bởi chỉ thị

Phạm vi của chỉ thị:

❖ Phạm vi tĩnh ( Static Extent ): Đó là những đoạn mã nguyên bản trong phạm vi

từ đầu đến cuối khối cấu trúc cho sau mỗi chỉ thị Phạm vi tĩnh của chỉ thị không mở rộng đến các thủ tục và các tệp chứa mã

❖ Chỉ thị đơn độc (Orphaned Directive): Chỉ thị đơn độc là chỉ thị xuất hiện độc lập với chỉ thị khác Nó tồn tại ở ngoài phạm vi tĩnh của chỉ thị khác Chỉ thị đơn độc mở rộng với các thử tục và các tệp mã nguồn

Trang 13

❖ Phạm vi động (Dynamic Extent): Phạm vi động của chỉ thị bao gồm phạm vi tĩnh của của chỉ thị và phạm vi của các chỉ thị mồ côi

OpenMP có rất nhiều chỉ thị như: atomic, barrier, critical, flush, for, master, ordered, parallel, section, single, thread,private

Các cấu trúc thường gặp :

➢ Cấu trúc chia sẻ

➢ Cấu trúc đồng bộ

Cấu trúc chia sẻ

Cấu trúc chia sẻ công việc dùng để chia việc thực hiện công việc trong vùng song song cho các luồng trong tập các luồng thực hiện công việc cho bởi vùng song song Cấu trúc chia sẻ công việc phải được bao bọc bởi một vùng song song để có thể thực hiện song song và cấu trúc này có thể được thực hiện bởi tất cả các luồng trong tập các luồng hoặc chỉ một số luồng trong tập các luồng thực thi vùng song song Có ba loại cấu trúc chia sẻ công việc đó là cấu trúc DO/for, cấu trúc SECTIONS và cấu trúc SINGLE

2.3 Luồng(thread) trong lập trình song song

2.3.1 Tổng quan về luồng

Một luồng thường được gọi là quá trình nhẹ (lightweight proces-LWP), là một đơn vị

cơ bản của việc sử dụng CPU Nó hình thành gồm: một định danh luồng (threadID), một bộ đếm chương trình, tập thanh ghi và ngăn xếp Nó chia sẻ với các luồng khác thuộc cùng một quá trình phần mã, phần dữ liệu, và tài nguyên hệ điều hành như các tập tin đang mở và các tín hiệu Một quá trình truyền thống (hay quá trình nặng) có một luồng điều khiển đơn Nếu quá trình có nhiều luồng điều khiển, nó có thể thực hiện nhiều hơn một tác vụ tại một thời điểm

Một số gói phần mềm chạy trên các máy để bàn PC là đa luồng Điển hình, một ứng dụng được cài đặt như một quá trình riêng rẻ với nhiều luồng điều khiển Một trình duyệt Web có thể có một luồng hiển thị hình ảnh, văn bản trong khi một luồng khác lấy dữ liệu từ mạng Một trình soạn thảo văn bản có thể có một luồng hiển thị đồ họa, luồng thứ hai đọc sự bấm phím trên bàn phím từng người dùng, một luồng thứ ba thực hiện việc kiểm tra chính tảvà từ vựng chạy trong chế độ nền

Trang 14

2.3.2 Pthread trong Linux

Pthreads tham chiếu tới chuẩn POSIX (IEEE 1003.1c) định nghĩa API cho việc tạo và đồng bộ luồng Đây là một đặc tả cho hành vi luồng không là một cài đặt Người thiết

kế hệ điều hành có thể cài đặt đặc tả trong cách mà họ muốn Thông thường, các thư viện cài đặt đặc tả Pthread bị giới hạn đối với các hệ thống dựa trên cơ sở của UNIX như Solaris 2 Hệ điều hành Windows thường không hỗ trợ Pthreads mặc dù các ấn bản shareware là sẳn dùng trong phạm vi công cộng

Tất cả chương trình Pthread phải chứa tập tin tiêu đề pthread.h pthread_ttid khai báo danh biểu cho luồng sẽ được tạo Mỗi luồng có một tập các thuộc tính gồm kích thước ngăn xếp và thông tin định thời Khai báo pthread_attr_t attr hiện diện các thuộc tính cho luồng Chúng ta sẽ thiết lập các thuộc tính trong gọi hàm pthread_attr_init(&attr)

Vì chúng ta không thiết lập rõ thuộc tính, chúng ta sẽ dùng thuộc tính mặc định được cung cấp Một luồng riêng được tạo với lời gọi hàm pthread_create Ngoài ra, để truyền định danh của luồng và các thuộc tính cho luồng, chúng ta cũng truyền tên của hàm, nơi một luồng mới sẽ bắt đầu thực thi, trong trường hợp này là hàm runner

Trang 15

CHƯƠNG 3 THỰC HIỆN THUẬT TOÁN

3.1 XX

3.2 Ứng dụng Thread vào chương trình chia sẻ dữ liệu

3.2.1 Ý tưởng

Với mục đích là tăng tốc độ truyền dữ liệu giữa các máy trong cùng 1 mạng cục bộ, chúng em có ý tưởng xây xựng một chương trình chia sẻ dữ liệu bằng cách xử dụng giao thức TCP/IP Ở đây thay vì truyền đơn luồng như truyền thống, đó là xây dựng một cặp chương trình khách chủ(client/server) chúng em xây dựng một chương trình

đa luồng, cụ thể là 5 luồng để truyền dữ liệu Trong đó mỗi luồng dữ liệu là một cặp clien/server

3.2.2 Thực hiện

Sau khi phân chia khối dữ liệu cần truyền thành các khung nhỏ có kích thước tùy chọn thì đưa chúng là bộ đệm truyền xử dụng chung Tiếp đến là khởi tạo các luồng

Trang 16

CHƯƠNG 4 ĐÁNH GIÁ KẾT QUẢ

4.1 DD

Trang 17

CHƯƠNG 5 KẾT LUẬN – HƯỚNG PHÁT TRIỂN

5.1 Các kết quả đạt được

Trong đồ án này em đã hoàn thành:

- Thiết kế thành công nút mạng cảm biến không dây chuẩn Zigbee

- Thiết kế thành công 2 cơ cấu chấp hành trong hệ thống: Thiết bị điều khiển giàn tưới phong lan và đồng hồ cảnh báo cháy rừng

- Phát triển các ứng dụng cho mạng cảm biến không dây, điều phối hoạt động của các

cơ cấu chấp hành

- Thực thi thành công giải thuật thức – ngủ phục vụ tiết kiệm năng lượng cho nút mạng cảm biến không dây

- Triển khai thực nghiệm dài hạn hệ thống tại vườn quốc gia Cúc Phương

Nội dung chưa hoàn thành:

- Hiện em chưa thực thi thành công giải thuật điều khiển công suất phát cho nút mạng cảm biến Em vẫn đang tiến hành hạng mục này và cố gắng thực thi trên phần cứng

5.2 Hướng phát triển đề tài

Với các tiêu chí đặt ra, hệ thống cần được hoàn thiện theo một số hướng:

- Thực thi giải thuật điều khiển công suất cho nút mạng nhằm tiết kiệm năng lượng

- Tối ưu hệ thống cho thân thiện hơn với người sử dụng

- Mở rộng cho các ứng dụng khác

Trang 18

TÀI LIỆU THAM KHẢO

[1] Đồ án tốt nghiệp của kỹ sư Lê Huy Hoàng - K51 – viện điện tử viễn thông – đại học Bách Khoa Hà Nội

[2] Đồ án tốt nghiệp của kỹ sư Trần Hữu Cương – KSTN K52 – viện điện tử viễn thông – đại học Bách Khoa – Hà Nội

Ngày đăng: 29/03/2015, 15:23

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w