Tải bản đầy đủ (.pdf) (61 trang)

(Luận văn thạc sĩ) 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

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (692.49 KB, 61 trang )

ĐẠ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 TỐN CƠ BẢN
TRONG TÍNH TỐ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 TỐN CƠ BẢN
TRONG TÍNH TỐ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 quá trình tìm hiểu nghiên cứu để hồn thành luận văn, tơi gặp khơng ít
khó khăn, nhưng những lúc như vậy, tôi luôn nhận được sự động viên, khích lệ của
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 tơi trong phương pháp nghiên cứu khoa học cũng như hỗ trợ tơi trong việc tìm
tài liệu.
Để có được những kết quả trong luận văn này, tôi 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 Tố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 cũng xin gửi lời cảm ơn đến các thầy cô của tôi về sự dạy dỗ ân cần trong
thời gian tôi học cao học tại trường Đại học KHTN - ĐHQGHN. Tôi xin cảm ơn
các thầy cô, các anh chị của Trung Tâm Tính Tốn Hiệu Năng Cao đã tạo điều kiện
và giúp đỡ tơi rất nhiều trong việc hồn thành luận văn.
Cuối cùng tơi xin cảm ơn gia đình, người thân và các bạn của tôi những người
đã luôn bên cạnh, động viên và khích lệ tơi để có được kết quả như ngày hôm nay.

Hà Nội, ngày 29 tháng 9 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.


MỤC LỤC
Trang
Trang phụ bìa ............................................................................................................
Mục lục .....................................................................................................................

Danh mục các ký hiệu ...............................................................................................
Danh mục các bảng ...................................................................................................
Danh mục các hình vẽ ...............................................................................................
Danh mục các thuật toán............................................................................................

MỞ ĐẦU ........................................................................................................ 1
Chương 1 – TÍNH TỐN SONG SONG ..................................................... 3
1.1.

Tổng quan về xử lý song song ............................................................ 3

1.2.

Các mơ hình lập trình song song ......................................................... 9

1.3.

1.4.

1.2.1.

Mơ hình chia sẻ bộ nhớ ........................................................... 9

1.2.2.

Mơ hình luồng ........................................................................ 9

1.2.3.

Mơ hình truyền thơng điệp .................................................... 10


1.2.4.

Mơ hình phân hoạch dữ liệu .................................................. 11

Thiết kế và đánh giá thuật toán song song ....................................... 11
1.3.1.

Định nghĩa thuật toán song song ........................................... 11

1.3.2.

Các nguyên lý thiết kế thuật toán song song.......................... 12

1.3.3.

Các cách tiếp cận trong thiết kế thuật toán song song............ 13

1.3.4.

Phân tích và đánh giá thuật tốn song song. .......................... 13

Mơ hình lập trình truyền thơng điệp – MPI song song ...................... 17
1.4.1.

Giới thiệu mơ hình truyền thơng điệp.................................... 17

1.4.2.

Lập trình truyền thơng điệp - MPI ......................................... 18



1.4.3.

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

Chương 2 – SONG SONG HĨA THUẬT TỐN TÌM XÂU CON
CHUNG DÀI NHẤT ................................................................................... 22
2.1.

Đặt vấn đề ........................................................................................ 22

2.2.

Bài tốn tìm xâu con chung dài nhất ................................................. 23

2.3. Thuật toán quy hoạch động giải bài tốn tìm xâu con chung dài nhất
của hai xâu. .................................................................................................. 24
2.4.

Phương pháp phần tử trội trong bài toán xâu con chung dài nhất. ..... 28

2.5.

Phương pháp song song trong bài toán xâu con chung dài nhất. ....... 33

2.6.

Kết luận chương. .............................................................................. 40


Chương 3 – KẾT QUẢ THỰC NGHIỆM.................................................. 41
3.1.

Bộ dữ liệu ......................................................................................... 41

3.2.

Môi trường chạy ............................................................................... 42

3.3.

Kết quả chạy thực nghiệm ................................................................ 43

KẾT LUẬN .................................................................................................. 50
TÀI LIỆU THAM KHẢO........................................................................... 51


BẢNG THUẬT NGỮ VIẾT TẮT
Thuật ngữ

Tiếng Anh

Nghĩa tiếng Việt

CPU

Central Processing Unit

Bộ xử lý trung tâm


DNA

Deoxyribo nucleic acid

Axít deoxyribosenucleic

HPC

High Performance Computing

Tính tốn/máy tính hiệu năng cao

LCS

Longest Common Subsequence

Dãy con chung dài nhất.

MIMD

Multiple Instruction multiple Data Đa luồng lệnh đa luồng dữ liệu

MISD

Multiple Instruction Simple Data

Đa luồng lệnh đơn luồng dữ liệu

MPI


Message Passing Interface

Giao diện truyền thông điệp

NUMA

Non-Uniform Memory Access

Truy cập bộ 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 dữ liệu

SISD

Simple Instruction simpleData

Đơn luồng lệnh đơn luồng dữ 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 bộ nhớ đồng thời


DANH MỤC CÁC BẢNG
Trang

Bảng 2.1 Độ dài xâu ký tự của một số dữ liệu tin sinh học .......................... 24
Bảng 2.2 Ví dụ về các điểm trội trong ma trận phương án............................ 29
Bảng 2.3. Ví dụ về việc xây dựng lại ma trận phương án với các phần tử trội.
..................................................................................................... 31
Bảng 2.4. Ví dụ về việc tìm các phần tử trội độc lập trên hai vùng khác nhau.
..................................................................................................... 33
Bảng 2.4. Chia ơ vùng tìm kiếm và xác định các vùng tìm kiếm đồng thời. . 34
Bảng 3.1. Dữ liệu thực nghiệm thuật toán .................................................... 41
Bảng 3.2. Bảng thống kê các loại amino axit [28] ........................................ 42
Bảng 3.3. Số phần tử trội trung bình đối với số xâu khác nhau trên bảng chữ

cái 4 ký tự và độ dài xâu bằng 64:................................................. 43
Bảng 3.4. Số phần tử trội trung bình đối với số xâu khác nhau trên bảng chữ
cái 20 ký tự và độ dài xâu bằng 64: ............................................... 44
Bảng 3.5. Thời gian chạy thuật toán với độ dài xâu là 64 trên bảng chữ cái 4
ký tự (giây) .................................................................................. 44
Bảng 3.6. Thời gian chạy thuật toán với độ dài xâu là 64 trên bảng chữ cái 20
ký tự (giây): .................................................................................. 45
Bảng 3.7. Thời gian chạy thuật toán với độ dài xâu là 128 trên bảng chữ cái 4
ký tự (giây): .................................................................................. 46
Bảng 3.8. Thời gian chạy thuật toán với độ dài xâu là 128 trên bảng chữ cái
20 ký tự (giây): ............................................................................. 46


DANH MỤC CÁC HÌNH VẼ
Trang
Hình 1.1. Mơ tả kiến trúc Von Neumann ................................................................. 3
Hình 1.2: Mơ hình máy MIMD................................................................................ 5
Hình 1.3: Mơ hình máy tính SIMD .......................................................................... 5
Hình 1.4: Mơ hình máy MIMD................................................................................ 6
Hình 1.5: Máy tính chia sẻ bộ nhớ ........................................................................... 7
Hình 1.6: Máy tính bộ nhớ phân tán ........................................................................ 7
Hình 1.7: Mơ hình luồng ....................................................................................... 10
Hình 1.8: Mơ hình truyền thơng điệp ..................................................................... 10
Hình 1.9: Mơ hình lập trình song song dữ liệu ....................................................... 11
Hình 1.10 Luật Amdahl ......................................................................................... 16
Hình 1.11: Sự trao đổi thơng điệp giữa hai tiến trình ............................................. 17
Hình 1.12: Cấu trúc chương trình MPI .................................................................. 21
Hình 3.1. Thời gian chạy của thuật tốn với 8 xâu độ dài 64 trên bảng chữ cái 4 và
20 ký tự................................................................................................... 47
Hình 3.2. Thời gian chạy của thuật toán với 2 xâu độ dài 4096 trên bảng chữ cái 20

ký tự. ...................................................................................................... 47
Hình 3.3. Hệ số tăng tốc của thuật toán với 2 xâu độ dài 4096 trên bảng chữ cái 20
ký tự. ...................................................................................................... 48
Hình 3.4. Hệ số tăng tốc của thuật toán với 8 xâu độ dài 64 trên bảng chữ cái 4 và
20 ký tự................................................................................................... 48
Hình 3.5. Hệ số hiệu quả của thuật toán với 8 xâu độ dài 64 trên bảng chữ cái 4 và
20 ký tự................................................................................................... 49


DANH MỤC CÁC THUẬT TỐN

Trang

Thuật tốn 2.1. Thuật tốn tuần tự tìm dãy con chung dài nhất ..................... 26
Thuật tốn 2.2. Thuật toán tuần tự in ra dãy con chung dài nhất ................... 27
Thuật tốn 2.3. Thuật tốn tìm phần tử trội.................................................. 32
Thuật tốn 2.4. Thuật tốn song song tìm xâu con chung dài nhất ............... 38



MỞ ĐẦU
Nhân loại ngày nay đang chứng kiến sự phát triển mạnh mẽ của ngành Công
nghệ thông tin, một trong những ngành mũi nhọn của nhiều quốc gia trên thế giới.
Sự phát triển vượt bậc của nó là kết quả tất yếu của sự phát triển các thiết bị phần
cứng cũng như phần mềm tiện ích. Từ những máy tính đơn giản, tốc độ xử lý chậm,
và chỉ được sử dụng trong một số lĩnh vực kỹ thuật nhất định, thì ngày nay chúng đã
có khả năng tính tốn và tốc độ xử lý vượt trội trở thành một công cụ không thể
thiếu trong mọi lĩnh vực của đời sống.
Những máy tính ra đời đầu tiên, do hạn chế về tốc độ xử lý và cơ chế vào ra dữ
liệu nên việc lập trình rất khó khăn. Điều này làm cho máy tính khơng có khả năng

sử dụng dễ dàng và phổ cập, nó chỉ được ứng dụng trong một số lĩnh vực khoa học
đặc biệt.
Ngày nay, cùng với sự phát triển mạnh mẽ của thiết bị lưu trữ, bộ nhớ, tốc độ
xử lý và các thiết bị ngoại vi,… máy tính đã trở nên thân thiện hơn với người sử
dụng, cũng như tốc độ tính tốn nhanh hơn rất nhiều. Nhờ đó mà rất nhiều bài tốn
lớn đã có khả năng thực thi và nhiều ứng dụng được đưa ra.
Tuy nhiên, một thực tế là còn rất nhiều vấn đề lớn với số lượng cần tính tốn
khổng lồ mà một máy tính thơng thường khơng thể giải quyết được. Vào thập kỷ
70, các nhà khoa học đã đưa ra ý tưởng về cấu trúc song song nhằm kết hợp sức
mạnh của nhiều bộ xử lý trên một máy tính, hoặc kết hợp nhiều máy tính với nhau
thơng qua mạng máy tính tạo thành máy song song ảo. Ngồi việc tính nhanh, các
máy tính song song có độ an tồn cao hơn máy tính đơn, khi một vài bộ xử lý hỏng
thì máy tính song song vẫn có thể hoạt động được trong khi máy tính đơn thì khơng
làm được điều đó.
Hiện nay trên thế giới đã có những máy tính song song chứa đến hàng nghìn
bộ xử lý. Để khai thác tiềm năng và sức mạnh của máy tính song song, cùng với
việc thiết kế kiến trúc song song ta còn phải nghiên cứu những vấn đề quan trọng
khác như hệ điều hành hỗ trợ xử lý song song, các ngơn ngữ lập trình và thuật tốn
song song.

1


Việc nghiên cứu thiết kế các máy tính song song, và các thuật tốn song song
cũng như các ngơn ngữ lập trình hỗ trợ lập trình song song bắt đầu được quan tâm
từ những năm 70, cho đến nay các ứng dụng của chúng đã lan rộng khắp các lĩnh
vực của đời sống như đánh giá khả năng rủi ro về tài chính: dùng để mơ hình hố
các xu hướng trên thị trường… Hỗ trợ quyết định như phân tích thị trường, dự báo
thời tiết… Trí tuệ nhân tạo như thiết kế robot… Xử lý ảnh ứng dụng trong công
nghệ nhận dạng… Điều khiển tự động… Trong đó bài tốn có liên quan tới sắp xếp

đóng một vai trị quan trọng, hay gặp trong các lời giải các bài toán tìm kiếm, tra
cứu, … Do vậy việc nghiên cứu các thuật toán sắp xếp cơ bản, đặc biệt là các thuật
toán song song trên bài toán sắp xếp là rất cần thiết.
Trong phạm vi luận văn này trình bày ba phần chính, Chương 1 trình bày tổng
quan về xử lý song song, thuật toán song song và giới thiệu lập trình song song với
MPI , Chương 2 trình bày về phương pháp thiết kế thuật tốn tìm dãy con chung
dài nhất trong tính tốn song song; Chương 3 trình bày một số kết quả thực nghiệm
trên dữ liệu cho chương trình song song tìm dãy con chung dài nhât. Với thời gian
tiếp cận vấn đề và lượng thơng tin cịn hạn chế, luận văn cịn nhiều thiếu sót. Tơi rất
mong nhận được sự góp ý của các thầy, các cơ và các anh/chị để có thể tiếp tục phát
triển đề tài đã nghiên cứu và đạt được kết quả.

2


Chương 1 – TÍNH TỐN SONG SONG
1.1.

Tổng quan về xử lý song song
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.10), 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. [14]
Bộ nhớ

Câu lệnh

Ghi dữ liệu

Đọc dữ liệu


Bộ xử lý

Hình 1.1. Mơ tả kiến trúc Von Neumann

Với những bài tốn u cầu về khả năng tính tố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 tốn giải quyết các bài tốn
lớn có độ tính tố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, hay gọi là xử lý song song hoặc kết hợp sức mạnh
tính tốn của nhiều máy tính dựa trên kết nối mạng (máy tính song song).
Kể từ lúc này, để khai thác được sức mạnh tiềm tàng trong mơ hình máy tính
nhiều bộ xử lý song song, cũng như trong mơ hình mạng máy tính xử lý song song
thì việc xây dựng thiết kế giải thuật song song là điều quan trọng. Giải thuật song
song có thể phân rã cơng việc trên các phần tử xử lý khác nhau
1.1.1. Một số khái niệm về xử lý song song
Định nghĩa về xử lý song song
Tính toán song song hay xử lý song song: là quá trình xử lý thơng tin trong đó
nhiều đơn vị dữ liệu được xử lý đồng thời bởi một hay nhiều bộ xử lý để giải quyết
một bài toán. [1]

3


Máy tính song song là tập hợp các bộ xử lý kết nối với nhau theo một kiến trúc
xác định để cùng hợp tác hoạt động và trao đổi dữ liệu. [1]
Phân biệt xử lý song song và xử lý tuần tự
Trong tính tốn tuần tự với một bộ xử lý thì tại mỗi thời điểm chỉ được thực
hiện một phép tốn. Trong tính tốn song song thì nhiều bộ xử lý cùng kết hợp với
nhau để giải quyết cùng một bài toán cho nên giảm được thời gian xử lý vì mỗi thời
điểm có thể thực hiện đồng thời nhiều phép tốn.

Mục đích của xử lý song song
Thực hiện tính tốn nhanh trên cơ sở sử dụng nhiều bộ xử lý đồng thời. Cùng
với tốc độ xử lý nhanh, việc xử lý song song cũng sẽ giải được những bài tốn phức
tạp u cầu khối lượng tính tố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 và ngơn ngữ lập trình, …
Độ phức tạp
Độ phức tạp của tính tốn song song khơng chỉ phụ thuộc vào kích cỡ của dữ
liệu đầu vào mà cịn phụ thuộc vào kiến trúc máy tính song song và số lượng các bộ
xử lý được phép sử dụng trong hệ thống.
Cài đặt giải thuật song song
Để cài đặt các giải thuật song song trên các máy tính song song, phải sử dụng
nhữ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 các kiến trúc của máy tinh song song
1.1.2.1.

Phân loại theo kiến trúc máy tính của Flynn.

Một trong những phân loại hay được nhắc tới là của Flynn – 1966 [6]. Michael
Flynn phân các kiến trúc máy tính thành bốn loại dựa vào sự phân phối luông dữ liệu
(data stream ) và phân phối các luồng lệnh (instruction stream) trên mỗi bộ xử lý.

4




Mơ hình SISD (đơn luồng lệnh, đơn luồng dữ liệu)

Đây chính là kiến trúc tuần tự Von Neuman , máy tính SISD chỉ có một CPU,

các dịng lệnh được thực hiện một cách tuần tự. Hệ thống SISD (hình 1.2: trong đó
tại mỗi thời điểm chỉ thực hiện một lệnh trên một mục dữ liệu)

Hình 1.2: Mơ hình máy SISD



Mơ hình SIMD (Đơn luồng lệnh, đa dữ liệu )
Máy tính loại 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 tử 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.

Hình 1.3: Mơ hình máy tính SIMD



Mơ hình MISD (Đa luồng lệnh, đơn dữ liệu)
Máy tính MISD có thể thực hiện nhiều nhiều lệnh trên cùng một mục dữ liệu,

5


- Các máy tính yêu cầu mỗi đơn vị xử lý (PU) nhận những lệnh khác nhau để
thực hiện trên cùng một mục dữ liệu.
- Các máy tính có các luồng dữ liệu được chuyển tuần tự theo dãy các CPU
liên tiếp gọi là kiến trúc hình ống xử lýtheo vector thơng qua một dãy các bước,

trong đó mỗi bước thực hiện một chức năng và sau đó chuyển kết quảcho PU thực
hiện bước tiếp theo


Mơ hình MIMD (đa luồng lệnh, đa luồng dữ liệu)
Máy tính loại MIMD cịn 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 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
được bộ nhớ chung khi cần, do vậy giảm thiểu được sự trao đổi giữa các bộ xử lý
trong hệ thống.

Hình 1.4: Mơ hình máy MIMD

Đây là 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, bởi chúng có thể thực thi các lệnh khác nhau trên nhiều dòng dữ liệu khác
nhau tại một thời điểm.
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ế.

6


1.1.2.2.


Phân loại theo mơ hình bộ nhớ


Mơ hình bộ nhớ chia sẻ
Đặc điểm của máy tính song song loại này là các nút tính tốn đều có thể truy

nhập vào bộ nhớ dùng chung như là bộ nhó tồ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ớ tồ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 trao đổi thơng tin
giữa các modul tính tố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 mỗi CPU trên
bộ nhớ của mình thì khơng được các CPU khác biết tới.
Ưu điểm của mơ hình này là kích thước bộ nhớ cân bằng với số lượng các bộ
xử lý.

Hình 1.6: Máy tính bộ nhớ phân tán

7


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 q trình tính tố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 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 theo cấu
trúc phân cấp là cách khai thác 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 tốn trong q trình xử lý. Các hệ điều hành đa
chương trình luân phiên thực hiện các chương trình khác nhau.
Để thực 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 hiện được nếu có hệ điều hành cho phép nhiều tiến trình thực
hiện, nghĩa là có thể xem hệ thống như là đa bộ xử lý.


8


1.2.

Các mơ hình lập 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 hợp hàng
triệu tương tác liên bộ xử lý. Bởi vậy khả năng trừu tượng và tính tố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
như khóa (locks) và semaphore được điều khiển để truy cập đến bộ nhớ tồn cục.
Nhược điểm của mơ hình này là khó giữ lại được tính ngun thủy của dữ liệu
khi mà nhiều bộ xử lý dùng cùng dữ liệu này.
Lợi thế của mơ hình là người lập trình khơng cần chỉ định việc truyền sữ liệu
giữa các task; chương trình được phát triển thường được đơn giản hóa.
1.2.2. Mơ hình luồng
Trong mơ hình luồng chương trình chính được chia thành các nhiệm vụ. Mỗi

nhiệm vụ được thực 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 tồ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ớ tồn cục

9


với việc kết 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ớ tồ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ẽ.
1.2.3. Mơ hình truyền thơng điệp
Trong mơ hình truyền thơng điệp chương trình song song được chia thành các
tác nhiệm. Một tập các tác nhiệm sử dụng bộ nhớ cục bộ riêng của chúng trong q
trình tính tốn. Nhiều tác nhiệm có thể nằm trên cùng một máy cũng như nằm trên
nhiều máy.

Hình 1.8: Mơ hình truyền thơng điệp

Các tác nhiệm vụ trao đổi dữ liệu thông qua truyền thông bằng cách gửi và
nhận các thơng điệp.
Có nhiều thư viện truyền thơng điệp, nhưng chúng khác nhau đáng kể, gây
khó khăn cho các nhà lập trình trong việc phát triển các ứng dụng di động. MPI
Forum được lập ra với mục đích thiết lập một chuẩn cho việc triển khai mơ hình
truyền thơng điệp. Hiện nay, MPI là chuẩn cho mơ hình truyền thơng điệp.


10


1.2.4. Mơ hình phân hoạch dữ liệu
Mơ hình lập trình song song dữ liệu giúp lập trình các chương trình song song
được thực hiện trên một tập dữ liệu lớn. Tập dữ liệu ở đây thường được xắp xếp
theo một cấu trúc nhất định như là mảng hoặc theo khối. Với mơ hình này thì các
nhiệm vụ của chương trình làm việc với cùng một cấu trúc dữ liệu. Tuy nhiên mỗi
nhiệm vụ sẽ làm việc trên từng phân vùng khác nhau của dữ liệu và các nhiệm vụ
phải thưc hiện các thao tác giống nhau.

Hình 1.9: Mơ hình lập trình phân hoạch dữ liệu
Trong kiến trúc chia sẻ bộ nhớ chung, tất cả các nhiệm vụ truy cập vào cấu
trúc dữ liệu thơng qua bộ nhớ tồn cục. Cịn đối với kiến trúc bộ nhớ phân tán thì dữ
liệu được chia ra và lưu trữ trên các bộ nhớ cục bộ của các bộ xử lý.
1.3.

Thiết kế và đánh giá thuật toán song song

1.3.1. Định nghĩa thuật toán song song
Thuật toán song song là một tập hợp các tiến trình (process) hay các tác vụ (task)
có thể thực thi đồng thời và có thể trao đổi dữ liệu với nhau để kết hợp giải quyết vấn
đề đặt ra. [6]
Những thuật tốn, trong đó có một số thao tác có thể thực hiện đồng thời được
gọi là thuật toán song song.

11


1.3.2. Các nguyên lý thiết kế thuật toán song song

Khi muốn thực hiện việc xử lý song song ta phải xét cả kiến trúc máy tính và
các thuật tốn song song. Để thiết kế được các thuật toán song song cần phải thực
hiện.
-

Phân chia dữ liệu cho các tác vụ.

-

Chỉ ra cách truy cập và chia sẻ dữ liệu.

-

Phân các tác vụ cho các tiến trình (bộ xử lý)

-

Các tiến trình được đồng bộ ra sao.

Khi thiết kế một thuật tốn song song có thể sử dụng năm ngun lí chính
trong thiết kế thuật tốn song song:
+ Ngun lý lập lịch: Mục đích là giảm tối thiểu các bộ xử lý dùng trong thuật
tốn sao cho thời gian tính tốn là khơng tăng.
+ Ngun lý hình ống: Ngun lý này được áp dụng khi bài toán xuất hiện
dãy các thao tác {T1, T2, . . ., Tn}, trong đó Ti+1 thực hiện sau khi Ti kết thúc.
+ Nguyên lý chia để trị: Chia bài toán thành những phần nhỏ hơn tương đối
độc lập với nhau và giải quyết chúng một cách song song.
+ Nguyên lý đồ thị phụ thuộc dữ liệu: Phân tích mối quan hệ dữ liệu trong tính
tốn để xây dựng đồ thị phụ thuộc dữ liệu và dựa vào nó để xây dựng thuật tốn
song song.

+ Ngun lý điều kiện tương tranh: Nếu hai tiến trình cùng muốn truy cập vào
cùng một mục dữ liệu chia sẻ thì chúng phải tương tranh với nhau.
Ngồi những ngun lý nêu trên, khi thiết kế thuật toán song song ta cịn phải
chú ý đến kiến trúc của hệ thống tính toán. Khi chuyển một thuật toán tuần tự sang
thuật toán song song hoặc chuyển một thuật tốn song song thích hợp với kiến trúc
đang có. Cần xác định được kiến trúc tính tốn nào sẽ phù hợp với bài tốn và
những bài toán loại nào sẽ xử lý hiệu quả trong kiến trúc song song cho trước.

12


1.3.3. Các cách tiếp cận trong thiết kế thuật toán song song
Có ba phương pháp tiếp cận để thiết kế thuật toán song song:
-

Song song hoá những thuật toán tuần tự, biến đổi những cấu trúc tuần tự để
tận dụng khả năng song song tự nhiên của tất cả các thành phần trong hệ
thống xử lý.

-

Thiết kế thuật toán song song mới trên cơ sở thuật toán song song đã có

-

Thiết kế thuật tốn song song hồn tồn mới thích ứng với những cấu trúc
song song.

1.3.4. Phân tích và đánh giá thuật toán song song.
Trong thuật toán tuần tự chúng ta chỉ quan tâm tới độ phức tạp về thời gian và

khơng gian, nhưng trong thuật tốn song song thường có thêm một số đại lượng đo
lường khác. Độ phức tạp thời gian của thuật tốn song song khơng chỉ đơn giản là
việc đếm số câu lệnh cơ bản như trong thuật tốn tuần tự mà thay vào đó nó phụ
thuộc vào các phép tốn cơ bản này có thể được thực hiện trên p p  1 bộ xử lý
như thế nào. Bên cạnh độ phức tạp thời gian độ phức tạp về số bộ xử lý cũng là một
đại lượng quan trọng trong phân tích thuật tốn song song.
Thiết kế thuật toán song song hiệu quả bao gồm việc lựa chọn cấu trúc dữ liệu
phù hợp, phân bố bộ xử lý và cuối cùng là thực hiện thuật toán. Ba đại lượng này
tác động lẫn nhau như một tổ chức tính tốn.
Đánh giá thuật tốn song song
Độ phức tạp tính tốn của thuật tốn song song khơng chỉ phụ thuộc vào kích
cỡ của dữ liệu đầu vào mà cịn phụ thuộc vào kiến trúc máy tính song song và số
lượng các bộ xử lý được phép sử dụng trong hệ thống. Độ phức tạp thời gian là
thước đo quan trọng nhất đánh giá mức độ hiệu quả của thuật tốn song song.
Chúng ta giả thiết rằng mơ hình tính tốn có p bộ xử lý. Nghĩa là mức độ song song
là có giới hạn. Ngược lại, mức độ song song không bị giới hạn khi số các bộ xử lý
là không bị chặn. Độ phức tạp thời gian của thuật toán song song sử dụng p bộ xử
lý để giải một bài tốn có kích cỡ n là hàm f n, p  xác định thời gian cực đại trôi

13


qua giữa thời điểm bắt đầu thực hiện thuật toán bởi một bộ xử lý và thời điểm kết
thúc của các bộ xử lý đối với bộ dữ liệu vào bất kỳ. Có hai loại thao tác khác nhau
trong các thuật toán song song:
1. Các phép toán cơ sở như +, -, *, /, AND, OR, v.v…
2. Các phép toán truyền dữ liệu trên các kênh truyền.
Độ phức tạp thời gian của thuật toán song song được xác định bởi số các phép
toán cơ sở và số các bước truyền tải dữ liệu giữa các bộ xử lý với nhau. Từ đó suy
ra, độ phức tạp thời gian của thuật tốn song song khơng chỉ phụ thuộc vào mơ hình

tính tốn mà cịn phụ thuộc vào số bộ xử lý được sử dụng.
Nói chung, chương trình tính tốn song song thường bắt đầu bằng việc nhập
dữ liệu vào bộ nhớ và kích hoạt một phần tử xử lý. Mỗi bước tính tốn, phần tử xử
lý này có thể đọc một số dữ liệu từ bộ nhớ, thực hiện một số phép toán cơ sở và ghi
kết quả vào bộ nhớ riêng hoặc bộ nhớ chung. Đồng thời mỗi bước tính tốn, một
phần tử xử lý có thể kích hoạt một hay một số phần tử xử lý khác. Thực tế thì các
máy tính đều có số bộ xử lý là hữu hạn, nên những thuật tốn song song khơng bị
giới hạn chỉ có nghĩa sử dụng khi chúng có thể chuyển đổi về thuật toán song song
bị giới hạn.
Thời gian tính tốn song song
Để đánh giá được độ phức tạp tính tốn của các thuật tốn song song, ngồi số
bước tính tốn chúng ta cịn cần đánh giá thời gian truyền thơng của các tiến trình.
Trong một hệ thống truyền thông điệp, thời gian truyền thông điệp cũng phải được
xem xét trong thời gian thực hiện của thuật toán.
Thời gian thực hiện song song: ký hiệu là t p gồm hai phần t comp và t comm

t p  tcomp  tcomm .

(1.1)

Trong đó, t comp là thời gian tính tốn và t comm là thời gian truyền thơng dữ liệu.
Thời gian tính tốn t comp được xác định giống như thuật tốn tuần tự. Khi có
nhiều tiến trình thực hiện đồng thời thì chỉ cần tính thời gian thực hiện của tiến trình

14


phức tạp nhất. Trong phân tích độ phức tạp tính tốn, chúng ta ln giả thiết rằng,
tất cả các bộ xử lý là giống nhau và cùng một tốc độ xử lý như nhau. Đối với những
cụm máy tính khơng thuần nhất thì điều này khơng đảm bảo nên việc đánh giá thời

tính tốn của những hệ như thế là rất phức tạp.
Thời gian truyền thông t comm lại phụ thuộc vào kích cỡ của các thơng điệp, vào
cấu hình kết nối mạng đường truyền và cả cách thức truyền tải thông điệp. Công
thức ước lượng thời gian truyền thông được xác định như sau:

tcomm  tstartup  n  tdata .

(1.2)

Trong đó, t startup là thời gian cần thiết để gửi những thơng điệp khơng phải là
dữ liệu. Nó bao gồm cả thời gian để đóng gói thơng điệp ở nơi gửi và thời gian mở
gói ở nơi nhận. Để đơn giản chúng ta giả thiết thời gian này là hằng số.
t data là thời gian cần thiết để chuyển một mục dữ liệu (data word) từ nơi gửi tới

nơi nhận, được giả thiết là hằng số và n là số từ dữ liệu được trao đổi trong hệ
thống.
Chi phí cho một thuật tốn song song được xác định bằng tích của thời gian
tính tốn song song và số bộ xử lý được sử dụng. Chi phí này phản ánh tổng số thời
gian mà một bộ xử lý dùng để giải quyết bài toán.
Một thuật toán song song sử dụng p bộ vi xử lý để giải quyết bài toán đặt ra
trong OT  đơn vị thời gian, sử dụng p bộ xử lý trong t p đơn vị thời gian, khi đó
chi phí cho thuật tốn song song C p :

Cp  p  tp .

(1.3)

Hệ số tăng tốc cũng là yếu tố đáng chú ý khi đánh giá thuật tốn song song
được song song hóa từ một thuật toán tuần tự.
Hệ số tăng tốc là tỉ lệ giữa thời gian thực hiện của thuật toán tuần tự ts và thời

gian thực hiện của thuật toán song song t p với p bộ xử lý
Sp 

ts
tp

,

(1.4)

1  Sp  p

15


×