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

Nâng cao hiệu năng tính toán cho các bài toán tìm đường đi ngắn nhất và cây khung nhỏ nhất

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 (1.85 MB, 85 trang )

Đ I H CăĐĨăN NG
TR
NGăĐ I H CăS ăPH M
----------

NGUY NăĐĔNGăKHOA

NÂNG CAO HI UăNĔNGăTệNHăTOỄNă
CHO CỄCăBĨIăTOỄNăTỊMăĐ
NGăĐIăNG N NH T
VÀ CÂY KHUNG NH NH T

LU NăVĔNăTH CăSƾ
H TH NG THÔNG TIN

ĐƠăN ng, 2019


Đ I H CăĐĨăN NG
TR
NGăĐ I H CăS ăPH M
----------

NGUY NăĐĔNGăKHOA

NÂNG CAO HI UăNĔNGăTệNHăTOỄNă
CHOăCỄCăBĨIăTOỄNăTỊMăĐ
NGăĐIăNG N NH T
VÀ CÂY KHUNG NH NH T

Chuyên ngành: H th ng thông tin


Mã s : 848.01.04

LU NăVĔNăTH CăSƾ

NG

IăH
NG D N KHOA H C:
TS. NGUY NăĐỊNHăL U

ĐƠăN ng, 2019



ii

L I C Mă N
L i đầu tiên tôi xin gửi l i cảm ơn chân thành đến các quý thầy cô giáo, Khoa
chuyên ngành Công nghệ thông tin, Trư ng Đại học Sư Phạm đã tận tình giảng dạy,
truyền đạt những kiến th c, kinh nghiệm quý báu trong suốt th i gian tơi theo học tại
chương trình. Các kiến th c, kinh nghiệm quý báu c a các thầy cơ giáo khơng chỉ giúp
cá nhân tơi hồn thiện hệ thống kiến th c trong học tập mà còn giúp tơi ng dụng các
kiến th c đó trong cơng việc hiện tại.
Đặc biệt, tôi xin g i l i cảm ơn chân thành và sâu sắc nhất đến thầy giáo c a tơi
là TS. Nguy năĐìnhăL u, ngư i Thầy đã tận tình hướng dẫn và tạo điều kiện tốt nhất
để tơi hồn thành luận văn này.
Tơi cũng xin được bày tỏ tình cảm với gia đình, đồng nghiệp, bạn bè đã tạo điều
kiện để tơi có thể dành th i gian cho khóa học. Xin chân thành cảm ơn các anh chị em
trong lớp K34 đã luôn hỗ trợ tơi trong q trình học tập để có được kết quả như ngày
hôm nay, tôi sẽ nhớ mãi về lớp K34 thân thương này.

Tuy có nhiều cố gắng, nhưng chắc chắn luận văn khơng tránh khỏi những thiếu
sót nhất định. Tơi rất mong nhận được ý kiến đóng góp quý báu c a các quý thầy cô
giáo và các anh chị, các bạn để luận văn ngày càng được hoàn thiện hơn.
Trân trọng cảm ơn!






v

M CL C
L IăCAMăĐOAN ...........................................................................................................i
L I C Mă N ............................................................................................................... ii
TÓM T T .................................................................................................................... iii
M C L C ...................................................................................................................... v
DANH M C CÁC T VI T T T, KÝ HI U ........................................................ vii
DANH M C CÁC B NG......................................................................................... viii
DANH M C CÁC HÌNH ............................................................................................ix
M

Đ U ......................................................................................................................... 1
1. Lý do chọn đề tài...................................................................................................1
2. Mục tiêu và nhiệm vụ ........................................................................................... 1
3. Đối tượng và phạm vi nghiên c u: .......................................................................1
4. Phương pháp nghiên c u ...................................................................................... 2
5. Bố cục đề tài..........................................................................................................2
6. Ý nghĩa khoa học và thực tiễn c a đề tài .............................................................. 2


CH
NGă1.ăX LÝ SONG SONG VÀ L P TRÌNH V I MPI ............................. 3
1.1. Giới thiệu về xử lý song song ...................................................................................3
1.2. Kiến trúc máy tính song song ...................................................................................4
1.2.1. Mơ hình SISD .................................................................................................5
1.2.2. Kiến trúc song song SIMD .............................................................................5
1.2.3. Kiến trúc song song MISD .............................................................................6
1.2.4. Mơ hình máy tính MIMD ...............................................................................7
1.3. Thuật tốn song song ................................................................................................ 8
1.3.1. Quy trình thiết kế thuật toán song song .......................................................... 8
1.3.2. Nguyên lý thiết kế thuật toán song song ......................................................... 9
1.3.3. Các cách tiếp cận trong thiết kế ......................................................................9
1.3.4. Phân tích đánh giá thuật tốn song song ....................................................... 10
1.4. Các mơ hình lập trình song song ............................................................................12
1.4.1. Mơ hình chia sẽ bộ nhớ .................................................................................13
1.4.2. Mơ hình luồng ............................................................................................... 13
1.4.3. Mơ hình truyền thơng điệp ............................................................................13
1.4.4. Mơ hình phân hoạch dữ liệu .........................................................................14
1.2. Lập trình song song trong môi trư ng MPI ............................................................ 14
1.2.1. Giới thiệu ......................................................................................................14
1.2.2. Một số đặc điểm c a lập trình MPI............................................................... 15


vi
1.2.3. Một số vấn đề hiệu năng ...............................................................................18
1.3. Tìm hiểu tập lệnh c a thư viện MPI .......................................................................21
1.3.1. Các lệnh quản lý môi trư ng MPI ................................................................ 21
1.3.2. Các kiểu dữ liệu ............................................................................................ 23
1.3.3. Cơ chế truyền thông điệp ..............................................................................24
1.3.4. Các lệnh truyền thông điệp blocking ............................................................ 26

1.3.5. Các lệnh truyền thông điệp non-blocking ..................................................... 28
1.3.6. Các lệnh truyền thông tập thể .......................................................................29
1.4. Kết luận chương .....................................................................................................32
CH
NGă2.ăCỄCăTHU TăTOỄNăTRểNăĐ TH ................................................33
2.1. Thuật tốn Dijkstra tìm đư ng đi ngắn nhất........................................................... 33
2.1.1. Mơ tả thuật tốn ............................................................................................ 33
2.1.2. Ví dụ minh họa.............................................................................................. 34
2.2. Thuật tốn tuần tự Prim tìm cây khung cực tiểu .................................................... 37
2.2.1. Mơ tả thuật tốn ............................................................................................ 37
2.2.2. Ví dụ minh họa.............................................................................................. 37
CH
NGă 3.ă NGHIểNă C U NG D NG THU T TOÁN SONG SONG
TRểNăTH ăVI N MPI .............................................................................................. 39
3.1. Thuật tốn song song Prim tìm cây khung cực tiểu ...............................................39
3.1.1. Cách thực hiện thuật tốn .............................................................................39
3.1.2. Ví dụ thực hiện thuật toán song song Prim ................................................... 40
3.2. Thuật tốn song song Dijkstra tìm đư ng đi ngắn nhất từ một đỉnh đến tất cả
các đỉnh .......................................................................................................................... 42
3.2.1. Cách thực hiện thuật tốn .............................................................................42
3.2.2. Ví dụ thực hiện thuật tốn song song Dijkstra..............................................43
3.3. Thực nghiệm chương trình ..................................................................................... 52
3.3.1. Đăng nhập hệ thống ...................................................................................... 53
3.3.2. Cách chạy chương trình trên hệ thống ccs1 ..................................................54
3.3.3. Kết quả thu được ........................................................................................... 56
3.3.4. Đánh giá thuật toán ....................................................................................... 57
K T LU NăVĨăH
NG PHÁT TRI N .................................................................60
DANH M C TÀI LI U THAM KH O ...................................................................61
QUY TăĐ NHăGIAOăĐ TÀI LU NăVĔNă(B n sao)



vii

DANH M C CÁC T

VI T T T, KÝ HI U
ụănghƿa

T vi t t t
MPI

Message Passing Interface

SISD

Single Instructions Stream, Single Data Stream
Máy tính một dịng lệnh, một dịng số liệu

SIMD

Single Instructions Stream, Multiple Data Stream
Máy tính một dịng lệnh, nhiều dịng số liệu

MISD

Multiple Instructions Stream, Single Data Stream
Máy tính nhiều dòng lệnh, một dòng số liệu.

MIMD


Multiple Instruction Stream, Multiple Data Stream
Máy tính nhiều dịng lệnh, nhiều dịng số liệu.

XLSS

Xử lý song song

BXL

Bộ xử lý


viii

DANH M C CÁC B NG
S hi u
b ng

Tên b ng

Trang

1.1.

Một số kiểu dữ liệu cơ bản c a MPI

23

1.2.


Cơ chế giao tiếp Point-to-point

25

3.1.

Bảng đánh giá th i gian thực hiện thuật toán song song so với
thuật toán tuần tự bài toán Dijkstra 1200 đỉnh

57

3.2.
3.3.

Bảng đánh giá th i gian thực hiện thuật toán song song so với
thuật toán tuần tự bài toán Dijkstra 2500 đỉnh
Bảng đánh th i gian thực hiện thuật toán song song so với
thuật toán tuần tự bài toán Prim 2100 đỉnh

58
59


ix

DANH M C CÁC HÌNH
S hi u

Tên hình


hình

Trang

1.1.

Mơ hình John Von Neumann

3

1.2.

Mơ hình kiến trúc song SISD

5

1.3.

Mơ hình kiến trúc MIMD

6

1.4.

Mơ hình MISD chi sẽ bộ nhớ

7

1.5.


Mơ hình MIMD chia sẽ bộ nhớ

7

1.6.

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

8

1.7.

Luật Amdahl

12

1.8.

Mơ tả truyền thơng

13

1.9.

Mơ tả lập trình phân hoạch dữ liệu

14

1.10.


Khả năng tăng tốc độ tính tốn, trư ng hợp lý tư ng

18

1.11.

Khả năng tăng tốc độ tính tốn, trư ng hợp thực tế

19

1.12.

Cơ chế giao tiếp tập thể

26

2.1.

Ghi nhớ kết quả tính được trên đồ thị

36

3.1.

Ma trận trọng số c a đồ thị

43

3.2.


Ví dụ về ma trận trọng số c a đồ thị

44

3.3.

Ma trận A0 và A1 mà 2 bộ xử lý nhận

44

3.4.

Đồ thị ghi nhớ trên bộ xử lý chính (P0).

46

3.5.

Đồ thị ghi nhớ trên bộ xử lý phụ (P1).

47

3.6.

Đồ thị ghi nhớ trên bộ xử lý chính (P0).

51

3.7.


Đồ thị ghi nhớ trên bộ xử lý chính (P1).

51

3.8.

Đồ thị hiển thị kết quả cuối cùng.

52

3.9.

Đăng nhập vào phần mềm WinSCP

53

3.10.

Giao diện khi đã kết nối

54

3.11.

Giao diện phần mềm PuTTY

55

3.12.


Giao diện để gõ lệnh c a hệ thống

55

3.13.

Kết quả thu được chạy bài toán Dijkstra trên hệ thống

56

3.14.

File đầu vào bài toán Dijkstra với 50 đỉnh

57

3.15.

Đồ thị biểu diễn sự đánh giá thuật toán song song so với tuần tự
bài toán Dijkstra 1200 đỉnh

58

3.16.

Đồ thị biểu diễn sự đánh giá thuật toán song song so với tuần tự
bài toán Dijkstra 2500 đỉnh

58



x
S hi u
hình
3.17.

Tên hình

Trang

Đồ thị biểu diễn sự đánh giá thuật toán song song so với tuần tự
bài toán Prim 2100 đỉnh

59


1

M

Đ U

1. Lý do ch năđ tài
Công nghệ thông tin đang phát triển với một tốc độ chóng mặt, đi cùng đó là
lượng dữ liệu khổng lồ. Để xử lý lượng dữ liệu khổng lồ đó địi hỏi khối lượng tính
tốn rất lớn và th i gian là yếu tố quyết định tính thực tiễn c a bài tốn đó.
Để tăng tốc độ tính tốn, các nhà khoa học đã đưa ra hai giải pháp:
Th nhất là cải tiến công nghệ, tăng tốc độ xử lý c a máy tính. Cơng việc này
địi hỏi nhiều th i gian, cơng s c và tiền bạc nhưng tốc độ thì chỉ đạt đến một giới hạn

nhất định.
Th hai là chia bài toán ra thành những bài toán nhỏ để chạy song song trên
nhiều bộ xử lý.
Các nhà khoa học đã tập trung nghiên c u giải pháp th hai, từ đó ra đ i thuật
tốn song song. Đó là việc sử dụng đồng th i nhiều tài ngun tính tốn để giải quyết
một bài tốn. Các tài ngun tính tốn có thể bao gồm một máy tính với nhiều bộ vi xử
lý hay một tập các máy tính kết nối mạng hay là một sự kết hợp c a hai dạng trên.
Công nghệ tính tốn song song cho phép giảm th i gian thực thi bài toán tùy thuộc
cách phân chia và số bộ xử lý thực thi chương trình. Nguyên tắc quan trọng nhất c a
tính tốn song song chính là tính đồng th i hay xử lý nhiều tác vụ cùng một lúc.
Với mục đích tìm hiểu và nghiên c u về thuật toán song song để giải quyết bài
toán đồ thị một cách hiệu quả hơn, th i gian xử lý ngắn hơn do đó tơi chọn đề tài:
“Nâng cao hiệu năng tính tốn cho các bài tốn tìm đường đi ngắn nhất và cây khung
nhỏ nhất “
2. M c tiêu và nhi m v
2.1. Mục tiêu
Nghiên c u thuật toán song song, ng dụng một thư viện cụ thể nâng cao hiệu
năng tính tốn cho hai thuật tốn Dijkstra và Prim nhằm giảm th i gian thực hiện, góp
phần nâng cao hiệu năng hoạt động c a hệ thống.
2.2. Nhiệm vụ
⁻ Tìm hiểu về lý thuyết đồ thị.
⁻ Nghiên c u về xử lý song song và lập trình song song.
⁻ Xây dựng và giải quyết một số bài tốn đồ thị dựa theo mơ hình thư viện
MPI.
⁻ Cài đặt và đánh giá kết quả bài toán.
3. Đ iăt

ng và ph m vi nghiên c u:

3.1. Đối tượng nghiên cứu của đề tài



2


XLSS và thuật toán song song.




Các bài toán đồ thị.
Lập trình song song với MPI.

3.2. Phạm vi nghiên cứu của đề tài
⁻ Tổng quan về XLSS và phân tán.
⁻ Tổng quan về lý thuyết đồ thị.
4. Ph ngăphápănghiênăc u
4.1. Nghiên cứu lý thuyết
⁻ XLSS và thuật toán song song.
⁻ Đồ thị và các bài tốn trên đồ thị.


Tìm hiểu lập trình song song với MPI.

4.2. Nghiên cứu thực nghiệm
⁻ Xây dựng sơ đồ, thuật tốn song song.
⁻ Lập trình song song với MPI bằng Visual Studio.
5. B c căđ tài
Ngoài phần m đầu và kết thúc, nội dung chính c a luận văn có 3 chương.
Chương 1: Xử lý song song và lập trình với MPI

Chương 2: Các thuật tốn trên đồ thị.
Chương 3: Nghiên cứu ứng dụng thuật toán song song trên thư viện MPI.
6. ụănghƿaăkhoaăh c và thực ti n c aăđ tài
⁻ Nghiên c u và nâng cao hiệu năng c a hệ thống bằng XLSS.
⁻ Tối ưu hơn về th i gian và chi phí so với phương pháp thơng thư ng.
⁻ Có thể áp dụng cho một số lĩnh vực cụ thể và một số bài tốn có độ ph c tạp
về th i gian lớn, những bài toán th i gian thực.
⁻ Làm giảm chi phí giá thành, th i gian cho các cơ quan, doanh nghiệp khi ng
dụng, triển khai thực tế.


3

X

CH
NGă1ă
LÝ SONG SONG VÀ L P TRÌNH V I MPI

1.1. Gi i thi u v x lý song song
Trong những thâp niên 60, nền tảng để thiết kế máy tính trên thế giới đều dựa
trên một mơ hình c a nhà tốn học Hungary 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ơ hình John Von Neumann
Ngày nay, rất nhiều bài toán yêu cầu khả năng tính tốn và lưu trữ rất lớn thì
mơ hình kiến trúc này cịn hạn chế. Do đó để giải quyết các bài tốn này cần có những
hệ thống máy tính đ mạnh để thực hiện một cách nhanh chóng và hiệu quả. Vì vậy,
hướng xử lý song song với việc kết hợp nhiều bộ xử lý vào trong một máy tính được

lựa chọn để giải quyết các bài tốn đặt ra.
Xử lý song song hay tính tốn song song là q 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 vấn đề, nói chung là thực
hiện tính tốn trên những hệ thống đa bộ xử lý [1].
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 song song.
Hệ thống máy tính song song: là một tập các BXL (thư ng là cùng một loại) kết
nối với nhau theo một kiến trúc nào đó để có thể hợp tác với nhau trong hoạt động và
trao đổi dữ liệu được với nhau.
Phân bi t x lý song song v i tu n tự:
Trong tính tốn tuần tự với một BXL thì tại mỗi th i điểm chỉ thực hiện được
một phép tốn.
Trong tính tốn song song thì nhiều BXL cùng kết hợp với nhau để giải quyết
cùng một bài toán cho nen giảm được th i gian xử lý vì mỗ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 BXL đồng th i. Cùng với


4
tốc độ xử lý nhanh hơn, việc xử lý song song cũng sẽ giải được những bài toán ph c
tạp u cầu khối lượng tính tốn lớn.
Ba y u t chính d năđ n vi c xây dựng các h th ng x lý song song:
⁻ Tốc độ xử lý c a các BXL theo kiểu von Neumann đã dần tiến tới giới hạn,
không thể cải tiến thêm được do vậy dẫn tới đòi hỏi phải thực hiện xử lý song song.
⁻ Hiện nay giá thành phần c ng (CPU) giảm mạng, tạo điều kiện để xây dựng
những hệ thống có nhiều BXL với giá thành hợp lý.
⁻ Sự phát triển c a cơng nghệ mạch tích hợp (VLSI) cho phép tạo ra những hệ
thống có hàng triệu transistor trên một chip.
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), thuật tốn và ngơn ngữ lập trình,v.v….
Chúng ta dễ nhận thấy độ ph c tạp c a xử lý song song sẽ lớn hơn xử lý tuần tự
rất nhiều, và tập trung ch yếu
trình.

phương diện trao đổi dữ liệu và đồng bộ các tiến

Để cài đặt các thuật tốn song song trên các máy tính song song chúng ta phải
sử dụng những ngơn ngữ lập trình song song. Nhiều ngơn lập trình song song đang
được sử dụng như: Fortran 90, Pthread với Fortran/C++, MPI với C/C++, PVM với
c/C++, OpenMP với C/C++, v.v…
1.2. Ki n trúc máy tính song song
Theo Seyed H. Roosta và Michael Flynn, kiến trúc máy tính được phân thành 4
loại:
- SISD (Single Instructions Stream, Single Data Stream): Máy tính một luồng
lệnh, một luồng dữ liệu. Các máy tính SISD tương ng với các máy một bộ xử lý mà
chúng ta đã nghiên c u. 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.
- SIMD (Single Instructions Stream, Multiple Data Stream): Máy tính một
luồng lệnh, nhiều luồng dữ liệu. Các máy SIMD có một số lớn các bộ xử lý giống
nhau, cùng thực hiện một lệnh giống nhau để xử lý nhiều luồng dữ liệu khác nhau.
Mỗi bộ xử lý có bộ nhớ dữ liệu riêng, nhưng chỉ có một bộ nhớ lệnh và một đơn vị
điều khiển.
- MISD (Multiple Instructions Stream, Single Data Stream): Máy tính nhiều
luồng lệnh, một luồng dữ liệu. Máy tính loại MISD là ngược lại với SIMD. Máy tính
MISD có thể thực hiện nhiều lệnh trên cùng một mục dữ liệu. Đây là lớp các máy tính
yêu cầu những đơn vị xử lý khác nhau có thể nhận được những chỉ lệnh khác nhau để
thực hiện trên cùng một mục dữ liệu.
- MIMD (Multiple Instruction Stream, Multiple Data Stream): Máy tính nhiều



5
luồng lệnh, nhiều luồng dữ liệu. Các máy MIMD nổi lên và được xem như một kiến
trúc đương nhiên phải chọn cho các máy nhiều bộ xử lý dùng trong các ng dụng
thông thư ng, một tập hợp các bộ xử lý thực hiện một chuỗi các lệnh khác nhau trên
các tập hợp dữ liệu khác nhau. 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.
1.2.1. Mơ hình SISD
Máy tính loại 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 (program counter) đượ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. Hình
1.2 mơ tả hoạt động c a máy tính theo mơ hình SISD.

Hình 1.2. Mơ hình kiến trúc song SISD
Mơ hình SISD cịn được gọi là SPSD (Simple Program Simple Data), đơn
chương trình và đơn dữ liệu. Đây chính là mơ hình máy tính kiểu Von Neumann.
1.2.2. Kiến trúc song song SIMD
Máy tính loại SISD chỉ có một đơn vị điều khiển (CPU),

mỗi th i điểm nhiều

đơn vị xử lý được thực hiện cùng lúc. CPU phát sinh tín hiệu điều khiển đến các đơn
vị xử lý. Tất cả các đơn vị xử lý đều nhận cùng mệnh lệnh từ đơn vị điều khiển nhưng
mỗi đơn vị xử lý lại có luồng dữ liệu riêng. Một máy SIMD có những đặc điểm sau:
xử lý phân tán trên một số lượng lớn phần c ng, thực hiện đồng th i trên nhiều thành

phần dữ liệu khác nhau và thực hiện cùng một câu lệnh trên các thành phần dữ liệu.
Mô hình kiến trúc song song SIMD được Seyed H. Roosta trình bày như trong Hình
1.3.


6

Hình 1.3. Mơ hình kiến trúc MIMD
Máy tính SIMD có thể hỗ trợ xử lý kiểu vector, trong đó có thể gán các phần tử
c a vector cho các phần tử xử lý để tính tốn đồng th i.
1.2.3. Kiến trúc song song MISD
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, nên còn được gọi là MPSD (đa chương trình, đơn luồng dữ liệu).
Kiến trúc kiểu này có thể chia thành 2 nhóm:
Lớp các máy tính u cầu những đơn vị xử lý khác nhau có thể nhận được
những chỉ lệnh khác nhau để thực hiện trên cùng một mục dữ liệu. Đây là kiến trúc
khó và hiện nay chưa có loại máy tính nào được sản xuất theo loại này.
Lớp 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. Đây là kiến trúc hình ống thực hiện 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. Hoạt động c a máy tính theo kiến trúc loại này giống như hệ
tuần hồn nên cịn được gọi là hệ tâm thu. Hình 1.4 mơ tả hoạt động c a máy tính theo
mơ hình MISD.


7

Hình 1.4. Mơ hình MISD chi sẽ bộ nhớ
1.2.4. Mơ hình máy tính MIMD
Máy tính 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 (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 được
vào bộ nhớ chung (global) khi cần, do vậy giảm thiểu được sự trao đổi giữa các bộ xử
lý trên hệ thống.
Đâ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 và đã có nhiều máy tính được sản xuất theo kiến trúc này, ví dụ: BBN Butterfly,
Alliant FX, iSPC c a Intel…
Mơ hình MIMD gồm hai loại: loại các bộ kết nối chặt và loại các bộ kết nối r i
tùy thuộc vào cách th c mà các bộ xử lý truy cập vào bộ nhớ. Những bộ xử lý kết nối
chặt được chia sẻ từ một hệ thống bộ nhớ chung được hiểu là hệ thống chia sẻ bộ nhớ.
Mơ hình này được Seyed H. Roosta trình bày như trong Hình 1.5.

Hình 1.5. Mơ hình MIMD chia sẽ bộ nhớ


8
Đối với hệ thống MIMD kết nối r i chia sẻ từ bộ nhớ hệ thống nhưng mỗi bộ
xử lý có một bộ nhớ riêng được hiểu như hệ thống truyền thơng điệp. Những máy tính
truyền thơng điệp gửi đến nhiều máy tính trong đó mỗi bộ xử lý có bộ nhớ riêng và chỉ
truy cập đến bộ xử lý đó. Mơ hình này được Seyed H. Roosta trình bày như trong Hình
1.6

Hình 1.6. Mơ hình MIMD truyền thơng điệp
1.3. Thu t tốn song song
1.3.1. Quy trình thiết kế thuật tốn song song
Song song hóa thuật tốn là chuyển một thuật tốn tuần tự đã có thành một
thuật tốn song song. Quy trình thiết kế thuật tốn song song thực hiện qua bốn công
đoạn: phân rã (Partition), truyền thông (Communication), tích tụ (Agglomeration) và
ánh xạ (Mapping).
- Phân rã: Khi bài tốn được xác định, cơng việc tính tốn và dữ liệu c a bài

toán được phân rã thành nhiều tác vụ. Ta cố gắng chú trọng vào việc xác định được
nhiều tác vụ càng nhiều càng tốt nếu có thể. Số lượng tác vụ có thể lớn hơn nhiều so
với số lượng bộ xử lý để linh hoạt hơn khi áp dụng vào mơ hình thực tế. Trong giai
đoạn này ta chưa đề cập đến vấn đề truyền thông, cấu trúc máy tính song song mà chỉ
đề cập đến việc xác định được các khả năng thực hiện song song c a bài tốn. Mục
đích c a cơng đoạn này là ta tìm ra tập các tác vụ độc lập với nhau c a bài toán và chú
ý việc kết hợp dữ liệu, xác định kết hợp tính tốn với dữ liệu như thế nào.
- Truyền thông: Công đoạn truyền thông được thể hiện thông qua luồng thông
tin sao cho các tác vụ được tạo ra trong công đoạn trên sẽ được thực hiện đồng th i.
Tính tốn thực hiện trong một tác vụ thư ng sẽ yêu cầu dữ liệu kết hợp với các dữ liệu
khác. Sau đó, dữ liệu phải được truyền giữa các tác vụ để cho phép thực hiện tính tốn.
- Tích tụ: Cơng đoạn này sẽ gộp các tác vụ nhỏ đã tạo ra công đoạn phân rã
thành các tác vụ có kích thước lớn hơn. Khi tích tụ các tác vụ nhỏ thành các tác vụ lớn


9
thì chi phí truyền thơng sẽ giảm đi nhưng sẽ làm giảm tiềm năng thực hiện đồng th i.
- Ánh xạ: Đây là công đoạn cuối cùng, mỗi tác vụ sẽ được ấn định vào một bộ
xử lý nào đó.
1.3.2. Nguyên lý thiết kế thuật toán song song
Những thuật toá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.
Để 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
Có năm ngun lý chính trong thiết kế thuật tốn song song [1]:
1. Các nguyên lý lập lịch: Tạo lịch trình để giảm tối thiểu các bộ xử lý sử dụng
trong thuật tốn sao cho th i gian tính tốn là khơng tăng (xét theo khía cạnh độ ph c

tạp).
2. Nguyên lý hình ống: Nguyên lý này được áp dụng khi bài toán xuất hiện một
dãy các thao tác {T1, T2, . . ., Tn}, trong đó Ti+1 thực hiện sau khi Ti kết thúc.
3. 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.
4. 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 đó để ng dụng thuật toán song
song.
5. Nguyên 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, nghĩa là chúng có
thể cản tr lẫn nhau.
Ngoài những nguyên lý nêu trên, khi thiết kế thuật tốn song song cịn một số
điểm cần quan tâm:
1. Hiệu quả thực hiện c a thuật tốn song song có thể rất khác nhau, mà yếu tố
quan trọng nhất ảnh hư ng tới độ ph c tạp tính tốn là cấu hình tơ pơ liên kết mạng.
2. Thuật tốn song song phải được thiết kế dựa trên những kiến th c về kiến
trúc máy tính, ngơn ngữ lập trình song song và các phương pháp tính tốn.
1.3.3. Các cách tiếp cận trong thiết kế
Song song hóa các thuật tố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 tốn song song hồn tồn mới.
Thiết kế thuật tốn song song từ những thuật toán song song đã được xây dựng.


10
1.3.4. Phân tích đánh giá thuật tốn song song
Trong thuật toán tuần tự chúng ta chỉ quan tâm đến độ 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 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 thiết kế thuật toá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 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 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 qua giữa th i điểm bắt đầu thực hiện thuật
toán vớ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…
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 đề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.



11
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. [5]
Thời gian thực hiện song song, ký hiệu là tp gồm hai phần là tcomp và tcomm
tp = tcomp + tcomm
(1.1)
Trong đó tcomp là th i gian tính tốn và tcomm là th i gian truyền thông dữ liệu.
Th i gian tính tốn tcomp đượ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 ph c tạp
nhất. Trong phân tích độ ph c tạp thuật 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 gian 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 tcomm lại phụ thuộc và 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 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 điệp được xác định như sau:
Trong đó, tstartup

tcomm = tstartup + n tdata
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ố.
tdata 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.
Hệ số tăng tốc cũng là yếu tố đáng chú ý khi đánh giá thuật toán song song
được song song hoa 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 tp với p bộ xử lý
Sp = ts / tp
Giả sử các bộ xử lý trong hệ thống song song hoàn toàn giống với bộ xử lý sử
dụng trong tính tốn tuần tự và ts là th i gian thực hiện bài tốn bằng tính tốn tuần tự
tối ưu nhất. Hệ số tăng tốc lý tư ng đạt được khi Sp = p.
Rõ ràng khả năng tăng tốc càng lớn thì giải thuật song song càng tốt.
Tuy nhiên, năm 1967 Amdahl đã đưa ra luật về giới hạn khả năng tăng tốc như


×