[OpenMP-Phần 1]Tính toán song song là gì?

1.1 Tính toán song song là gì?

Hầu hết mọi người đều đã quen với “serial computing” hay còn gọi là tính toán tuần tự, thậm chí họ không nhận ra rằng nó được gọi như vậy. Hầu hết mọi chương trình được lập trình và chạy hằng ngày là các chuơng trình tuần tự. Chương trình tuần tự chạy trên các máy tính đơn lẻ, thường là đơn nhân (các chương trình chúng ta thường viết, mặc dù được chạy trên các vi xử lý đa lõi như core i5,i7 hay xeon đều chỉ sử dụng sức mạnh của một lõi đơn).

Các chỉ thị trong chương trình được thực thi lần luợt từ lệnh này sang lệnh khác, theo trình tự, và chỉ một chỉ thị được thực hiện tại một thời điểm nhất định.

Tính toán song song là một dạng mà cho phép nhiều chỉ thị trong chương trình có thể chạy cùng lúc, song song. Để làm được điều này, chương trình hải chia ra làm các phần độc lập, mỗi core sẽ thực hiện một phần của chương trình cùng lúc với các core khác. Tính toán song song có thể thực hiện trên các máy tính đơn-single computer với đa lõi- multiplie processors.

1.2 OpenMP

OpenMP( Open Multi-Processing) được giới thiệu vào năm 1997 và là API để viết ứng dụng dạng chia sẻ bộ nhớ (shared memory) cho C/C++ và Fortran.

OpenMP có ưu điểm là rất dễ để tích hợp vào code có sẵn( code tuần tự) để giúp nó có thể chạy song song. Nó cũng có ưu điểm là được sử dụng rộng rãi, tính di động vao và rất lý tưởng cho các bộ vi xử lý đa nhân.

Các chương trình OpenMP xuất phát từ một tác vụ đơn, được gọi là master thread (tác vụ chủ). Master thread này thực hiện code tuần tự cho tới khi gặp “vùng song song”. Tại đây, tác vụ chủ sẽ nhân lên một lượng tác vụ khác gọi là “worker threads”. Chỉ thị trong vùng song song được thực hiện bởi đội “worker threads”. Khi kết thúc vùng song song, các threads sẽ đồng bộ và kết hợp lại thành một tác vụ duy nhất. Thông thường ta sẽ chạy mỗi threads trên một nhân, nhưng thường có thể chạy hơn một tác vụ.

Song song hóa với OpenMP được chỉ định thông qua chỉ định biên dịch, ở công đoạn biên dịch code.

1.3 Ai nên sử dụng OpenMP?

Tất cả mọi người sử dụng C/C++/Fortran đều có thể sử dụng OpenMP.

Nếu bạn sử dụng những ngôn ngữ này và bạn có code mà nó hơi tốn thời gian chút khi chạy tuần tự( các bài toàn vật lý thường rất tốn thời gian) bạn nên sử dụng tính toán song song với OpenMP, nó chỉ tốn một chút công sức để học và sẽ rất tiện lợi cho công việc của bạn.

Nếu bạn sử dụng C/C++/Fortran, nó sẽ rất nhanh để bạn tích hợp OpenMP (vì C/C++/Fortran đã khá khó để học rồi, khi bạn hiểu được thì hầu như mọi ngôn ngử bạn đều nhanh chóng làm quen được. )

 

Bài viêt trong khuôn khổ tôi cũng đang học về OpenMP, nên tôi viết serial này để chia sẻ những gì tôi học được, có thể có chỗ tôi hiểu chưa đúng.

Môi trường ập trình tôi sử dụng là Ubuntu Linux, ngôn ngữ tôi sử dụng là C/C++, trình biên dịch gcc/g++ 4.8

 

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Create a free website or blog at WordPress.com.

Up ↑

mlcvGru

Random thoughts on Machine Learning, Deep Learning and (sometimes) Computer Vision

LazyT

Góc nhỏ của Quyền

phanlan

we get what we give, sống là cho đi

Codeaholicguy

software engineer, team lead at #kobiton, blogger at @codeaholicguy

Maths 4 Physics & more...

Blog Toán Cao Cấp (M4Ps)

Vatlyvietnam's Blog

Thế Giới Song Song

Darren Wilkinson's research blog

Statistics, computing, data science, Bayes, stochastic modelling, systems biology and bioinformatics

Ông Xuân Hồng

Chia sẻ kiến thức và thông tin về Machine learning

Từ coder đến developer - Tôi đi code dạo

Lập trình viên giỏi không phải chỉ biết code

Computational Biology and Molecular Modelling

An interface between biology, chemistry and computer science

Moriator - I can do it!

Linux dễ dàng hơn bạn nghĩ!

VinaCode

Lập trình & Cuộc sống

Blog của Chiến

Học. Thực hành. Sáng tạo

Bespoke Blog

Science! Culture! Computational Engines!

Vuhavan's Blog

Just another WordPress.com weblog

%d bloggers like this: