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

Xử lý truy vấn trên cơ sở dữ liệu tích hợp XML

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 (25.91 MB, 69 trang )

DAI HỌC QUOC GIA HÀ NỘI
KHOA ( ÔNC, NGHỆ
NGUYỄN VIỆT ANH
XỬ LÝ SONG SONG TRÊN PVM
VÀ ỨNG DỰNG TRONG BÀI TOÁN BẢO MẬT THÔNG TIN
C H U Y Ê N N G À N H : C Ô N G N G H E T H Ô N G T IN
MÃ Số: 1.01.10
LUẬN VĂN THẠC s!
■ •
N G Ư Ờ I H Ư Ớ N G D ẪN K H O A HỌ C:
T S K H . P H Ạ M T R Ằ N N H U
V - L O / Z Z 1
HÀ NỘI -2003
MỤC LỤC
4
DANH MỤC CÁC TỪ VIẾT TẮT.
DANH M Ụ C BẢNG BIỂU HÌNH VẼ
M ớ Đ Â U


5
Chương 1 Tổng quan về xử lý song song

7
1.1 Máy tính song song

.

1
1.2 Phân loại máy tính song song
£


1.2.1 Phân loại dựa trên cơ chế điều khiển clm n g

.
8
a) Hộ thống đa xử lý một dòng lệnh nhiều dòng dữ 8
b) Hệ thống đa xử lý nhiều dòng lệnh nhiều dòng dữ liệu 9
1.2.2 Cách phân loại dựa trên sự tương tác giữa các BXL
.

.


9
a) Chia sè bộ nhớ chung



JQ
b) Truyền thông điệp


J J
1.3 M ô hình lập trình song song

I I
1.3.1 Mô hình nhiệm vụ - kcnli liên lạc 12
a) Tốc đ ộ

.
' !

í
b) Tính độc lập ánh xạ

I
c) Tính module.
d) Tính xác đ ịnh 14
1.3.2 M ô hình chia SC bộ nhớ chung
14
1.4 Hiệu năng cùa xử lý song song

.7.

<5
1.4.1 Dịnh luật A m dahl's

I
1.4.2 Cân bàng tài ^
a) Các thuật toán cân bằng tài tập trung ](•’
b) Các thuật toán cân bàng tài phân tán hoàn loàn 16
c) Các thuật toán cân bàng tài phân tán một nửa 17
d) Sự bế tắc (Deadlock)

.

I ý
Chương 2 Song song hoá thuật toán tự

.

.

]<)
2.1 Các chiên lược phát triên ứng dụng song song

Ị ọ
2.1.1 Song song hoá tự động


.


ỊỌ
2.1.2 Xây dựng các thư viện song song Ị ọ
2.1.3 Kế thừa các thành phần chính

20
2.2 Các bước cơ bàn song song hoá tlniật toán tuần tự
2.2.1 Phân r ã 21
a) Kỹ thuật phân rã theo m iền
21
b) Kỹ thuật phân rã chức n ă n g 22
c) Tiêu chuân đánli giá giai đoạn phân rã 23
2.2.2 Truyền thông


21
a) Truyền thông cục b ộ 2 <5
b) Truyền thông toàn c ục
2C
c) 1 ruyền thông động và không có cấu trúc
27

d) Truyền thông không dồng bọ 27
e) Tiêu chuẩn đánh gia thiết kế truyền thông ló
2.2.3 Tồng hợp

.

.

29
a) Tăng kích thước nhiệm v ụ
3Q
b) Bào đảm tính mềm d eo

21
c) Giảm chi phí xây dựng phần m ềm

' '

31
d) Tiêu chuẩn đánh giá giai đoan tổng hợ p


ỳ )
2.2.4 Ánh xạ „
>s r*'
1-i I .
.1




2.3 Các chicn lược thict ké

2.3.1 Song song hoá kếí q u á
.


Y I
2.3.2 Song song hon dại diện 3g
2.3.3 Song song hoá chuyên b iệt 39
2.3.4 Phân lớp các bài toán áp dụng chiến lược thiết kế 41
a) So sánh ba chiến lược thiết kể 41
b) Phân lớp các bài toán 41
2.4 Môi trường lập trinh song s o ng 43
2.4.1 Một số môi trường lập trình phổ biến 43
a) MPI (Message Passing Interface) 43
b) PVM (Parallel Virtual Machine) 44
c) So sánh giữa MPI và P V M 44
2.4.2 Máy ào sone, song (PV M ) 45
a) Khái quát chu n g 45
b) Một số dặc điểm cùa P V M 46
c) Một số thành phần cùa PVM 46
d) Nguyên lý hoạt động 4 g
e) M ột số mô hình áp dụng trong các ứng dụng trên P V M 50
Chưoìig 3 Bài toán bảo mật thông (in SI
3.1 Bài toán mã hoá trong bào mật thông tin 51
3.1.1 Bài toán 51
3.1.2 Một số hệ mã phổ biến 52
a) Hệ mã chuẩn DES (Data Encryption Standard)
52
b) Hệ mã công kh ai 52

3.2 Thuật toán mã hoá công khai R SA 53
3.2.1 Thuật to án 53
3.2.2 Quy trình mã hoá và giải mã với hệ mã R S A 53
a )T ạ ok ho á 53
b) Mã hoá tệp tin 54
c) Giãi mã tệp tin 54
3.2.3 Song song hoá thuật toán tìm số nguyên t ố 55
3.3 Thử nghiệm 55
3.3.1 Cài đãt thuật toán tìm sổ theo ha chiến lược thiết k ế 55
a) Song song hoá kết q u à 55
b) Song song lioá dại diện 56
c) Song song hon chuyên biệt 57
3.3.2 Thử nghiệm, đánh giá kết quả 58
a) Thử nghiệm

58
b) Kết quà (hử nghiệm 58
c) Đánh giá, nhận xc t 59
3.3.3 Chương trình mã hoá văn bàn với klioá R S A

59
KÉT LU Ậ N

.

.

.

.

TẢI I.ĨỆŨ TI IAM 6!
PHỤ LỤ C

. . ^ . . . . . . . . . . . . . . Z Z Z Z Z Z Z Z [ " Z Z Z Z Z [ Z ' " Z Z Z Z Z Z Z Z Z m
7
DANH MỤC CÁC TỪ VIÉT TẮT
Viêt tăt
Tiêng Viêt
Ticng Anh
BXL
Bộ xử lý
Processor
PVM
Máy ảo song song
Parallel Virtual Machine
TID Định danh nhiệm vụ
Task Identifier
RSA
Rivert Shamir Adleman
MPI
Message Passing Interface
SIMD
Single Intruction Multiple Data
MIMD
Multi Intruction Multiple Data
4
Bàng 1 Mối quan hệ giữa tiến trình và nhiệm v ụ 41
Báng 2 Cấu trúc clurơng trinh 41
Bàng 3 So sánh một số tính năng giữa PVM và MPI 45
Hình 1-1 Hệ thống một dòng lệnh nhiều dòng dữ liệu (SIM D ) 9

Hỉnh 1-2 Hệ thống nhiều dòng lệnh nhiều dòng dữ liệu (M IM D ) 9
Hình 1-3 Máy tính song song chia sẻ bộ nhớ ch u ng 10
Hình 1-4 M áy tính song song có bộ nhớ phân tá n 11
Hình 1-5 Sự phụ thuộc thời gian vào số lượng BXL cùa định luật A m dahl 15
Hình 1 -6 B XL P|( kết khối để gửi X cho Pj vì vùng đệm của Pj đầy 18
Hình 2-1 Song song hoá tự động 19
I í ình 2-2 Xây dựng các tlnr viện song s ong 20
Hình 2-3 Sử dụng lại các thành phần c hính 20
Hình 2-4 Mỗi nhiệm vụ đảm nhận công việc tại điểm lưới và truyền thông với 4 lân cận cùa nó 26
Hình 2-5 Mỗi tiến trình xử lý một phần việc cùa kết q u à 37
Hình 2-6 Các tiến trình thực hiện song song từng công việc thành phần 38
Hình 2-7 Cấu trúc của T ID 47
Hinh 3-1 Sơ đồ khối thuật toán tạo khoá hệ R S A 54
Hình 3-2 Mỗi tiến trình “đàm đương” một nhiệm vụ 56
]lình 3-3 Nhiều tiến trình đàm nhận nhiều nhiệm vụ 56
Hình 3-4 Mối tiến trình dám nhận chuyên biệt kiểm tra một số nguyên t ố

57
Hình 3-5 Kết quà tliir nghiệm chiến lược với số lượng các BXL khác n h a u 59
Hình 3-6 Giao diện chính cùa chương trình 67
Hình 3-7 Tạo khoá với 11= 1234 67
Hình 3-8 Tệp till dùng để mã hoá 69
Hình 3-9 Tệp till đã được mã hoá với cặp khoá (e,n) 60
DANH MỤC BẢNG BIÉƯ HÌNH VẼ
MỞ ĐÀU
Sự phát triển khoa học kỹ thuật thường dược thách thức bởi lớp bài toán lớn
cần phải giải quyết trong mọi lĩnh vực của đời sổng xã hội như dự báo thời tiết, khai
phá dữ liệu, xử lý ảnh, trí tuệ nhân tạo. an toàn dữ liệu, tự động hoá V V. Lớp các
bài toán này vừa đòi hỏi đáp ứng thời gian thực vừa yêu cầu xử lý trên khối lượng
dữ liệu không lô. Việc giải quyết lớp các bài toán này thường đòi hỏi phải sử dụng

các bộ xử lý có hiệu năng cao.
Máy tính song song ra đời để đáp ứng đòi hỏi đó và xử lý song song ra đời dựa
trên các máy tính loại này. Theo [14], [17] xử lý song song là thao tác xử lý thông
tin đồng thời trên các phần tử dữ liệu thuộc một hay nhiều tiến trình để giải quyết
một vấn đề nào đó. Máy tính song song đơn giản là một tập hợp các BXL (thường
là cùng kiểu) cỏ mối liên hệ với nhau theo một cách thức nhất định có khả năng xử
lý song song.
Xử lý song song phát triển với mục đích làm tăng khà năng tính toán của máy
tính băng cách kết hợp nhiều bộ xử lý tham gia vào quá trình tính toán thay vì sử
dụng các máy tính chuyên dụng đắt tiền.
Các xu hướng VC ứng dụng, kiến trúc máy tính và mạng cho thấy rằng trong
tương lai cơ chế song song sẽ được sir dụng không chỉ trong các sicii máy tính mà
ngay ca trong các trạm làm việc, máy tính cá nhân và mạng máy tính. Khi đó các
chương trình phải tận dụng được không những các BXL trcn cùng một máy tính mà
còn cả các BXL khác có thể sử dụng được trcn mạng. Do phần lớn các giải thuật
hiện nay là các giải thuật tuần tự nên cần có những giải thuật và cấu trúc dữ liệu
mới cho phép nhiều thao tác dược thực hiện đồng thời. Bởi vậy khả năng chạy dồng
thời đang trờ thành một trong những đòi hỏi cơ bản của các phần mềm.
Xử lý song song ngày càng thể hiện rõ sức mạnh của mình trong việc giải
quyết nhiều lớp bài toán và trong các ứng dụng cụ thể. Các bài toán về an toàn dữ
liệu cũng là một trong các ứng dụng đó.
Nhir chung ía bict an toàn và bào mật dữ liệu đã được quan tâm từ rốt sớm
Gần (tây với sự phát triển cùa mạng toàn cầu Internet, ván (lồ an toàn và bảo mật (lữ
liệu được đặt ra càng cấp bách hơn và nhu cầu ứng dụng xử lý song song trong lĩnh
5
vực này do cũng vậy cũng tăng lên.
Trong khuôn khổ luận văn “Xử lý song song trên PVM và ứng dụng trong bài
toán bảo mật thông tin” chúng tôi nghiên cứu, áp dụng xử lý song song làm tăng
hiệu quà thuật toán mã hoá công khai RSA - một trong thuật toán mà hoá phổ biến.
Luận văn dược trình bày trong ba chương:

Chương 1: Tổng quan về xử lý song song: trình bày tồng quan các khái niệm,
các mô hình máy tính, mô hình lập trình, vấn đề hiệu năng của xử lý song song. Các
vân đề được trình bày trong chương này là nền tảng cho các nghiên cứu của chúng
tôi trong suốt quá trình thực hiện đề tài.
Chương 2: Song song hoá thuật toán tuần tự: trình bày các bước cơ bản dể
song song hoá thuật toán tuần tự, từ những các bước cơ bản này tập trung nghicn
cứu một số bước quan trọng, nghicn cứu một số chiến lược thiết kế song song phổ
biến cùng với môi trường lập trinh song song Parallel Virtual Machine (PVM) để
tiến hành thử nghiệm bài toán. Thông qua thử nghiệm, cũng như một số nghicn cứu
của các nhà khoa học khác, chúng tôi mạnh dạn đề xuất sự phân lớp các bài toán
dựa trcn tập dữ liệu kết quà dể sử dụng chiến lược thiết kể phù hợp.
Chương 3: Bài toán hảo mật thông tin: Chúng tôi đề cập đến bài toán bảo mật
thông tin và tập trung vào bài toán mã lioá công khai RSA. Trong bài toán mã hoá
RSA chúng chúng tôi áp dụng xử lý song song giải thuật tìm số nguyên tố - là một
bước quan trọng trong giải thuật RSA. Chúng tôi tiến hành thử nghiệm cài đặt áp
dụng các chiến lược thiết kế đã trình bày trong chương 2. Từ kết quả thừ nghiệm,
tiến hành so sánh và chọn một giải pháp song song hoá tói ưu nhất để xây dựng
chương trình mã hoá tệp văn bản.
Phân kết luận, tóm tắt các vấn đề dã trinh bày trong các chương cũng như kết
quả đạt được. Ngoài ra phần két luận cũng chỉ ra một số vấn đề chưa được giải
quyêt thâu đáo trong quá trình thực hiện đc tài và hướng nghiên cứu trong tương lai
của chúng tôi.
6
7
Chương 1 Tổng quan về xử lý song song
1.1 Máy tính song song
Tốc độ của chiếc máy tính nhanh nhất dã tăng theo hàm mũ kể từ năm 1945
cho đen nay với tỷ lệ (rung bình là 10 lần trong 5 năm. Sự tăng trưởng này SC vẫn
tiếp diễn, do đã có sự thay đổi quan trọng trong kiến trúc máy tính là sự thay đổi từ
kiến trúc tuần tự sang kiến trúc song song nhàm duy trì được tốc độ tăng này.

Tốc độ của máy tính phụ thuộc vào thời gian cần thiết để thực hiện một thao
tác cơ bản và số iượng các thao tác cơ bản có thể được thực hiện đồng thời. Rõ ràng
là thời gian thực hiện một thao tác cơ bản sẽ bị giới hạn bởi chu kỳ đồng hồ của
BXL, nghĩa là thời gian để thực hiện thao tác nguycn tổ nhất. Tuy nhiên thời gian
cùa một chu ki đồng hồ đang giảm đi rất chậm và dường như sắp tiếp cận tới giới
hạn vật lý. Do vậy không thể dựa trên những BXL nhanh hơn để làm tăng tốc độ
tính toán.
Nham vượt qua những giới hạn này các nhà thiết kế đã sử dụng khả năng tính
toán song song trong một con chip, chẳng hạn tiến hành tính toán đồng thời trên cả
64 bit trong thao tác nhân hai số. Tuy nhiên một kết quả trong lý thuyết về dộ phức
tạp VLSI (Very Large Scale Inlergration) [14],[24] cho thấy ràng chiến lược này đòi
hỏi chi phí rất cao. Kct quả này được phát hiểu như sau: Với các tính toán truyền
dẫn (là các lính toán trong dó bất kì đầu ra nào cũng phụ thuộc vào tất cả đầu vào)
thì thời gian T dể một chip có diện tích A giải quyết một bài toán phải thoả mãn
điều kiện [AxT2J > f(N) (Í'(N) là một hàm phụ thuộc vào kích thước vấn đề, và N là
kích thước của vấn dề).
Từ kết quả trên có thổ thấy việc xây dựng các thành phàn (Component) ricng
rẽ chạy nhanh hơn khônẹ những là nít khó khăn mà việc thực hiện diều (ló cũng
không kinh tế. Thay vào đó việc sử dụng dồng thời nhiều thành phần có tốc độ
chậm hơn có the SC rẻ hơn.
Những nhà thiết kế máy tính cỏ thổ sử dụng nhiều kỹ thuật khác nhau để vượt
qua giới hạn này và làm tàng tốc độ một máy tính đơn như cơ chế pipeline, hay sir
dụng nhiều đơn vị tỉnh toán (Multi function units). Một xu hướng nữa là các nhà
thiết kế sử dụng nhiều máy lính mà mỗi máy trong số chúng có BXL, bộ nhớ ricng
rẽ và được kêt nôi theo một logic nào đó. Cách tiếp cận này ngày càng trở ncn dễ
thực hiện hơn hời các kỹ thuật VLSI cho phép làm giảm số lượng thành phần cần
thiết cho một máy tính. Do giá cùa một máy tính tỷ lệ với sổ thành phần mà nó có
ncn khả năng tích hợp cho phép tăng số lượng BXL có trên một máy tính với cùng
giá như cu. Kêt quà là số lượng BXL trên một máy tính ngày càng tăng lên.
Sô lượng BXL trên một máy tính đang tiếp tục tăng và hiện tại trong một số

môi trường tỷ lệ tăng đang là hai lần trong một hoặc hai năm. Do đó các ứng dụng
có thể được sử dụng trên các máy tính có số lượng BXL ngày càng tăng trong vòng
đời cua chúng. Bởi vậy khả năng mở rộng (scalability) (khả năng phần mềm tận
dụng được nhiều nhất các BXL có thể sử dụng) trờ thành một thuộc tính quan trọng
cho phép chuyển đổi và bảo vệ chi phí đầu tư cho ứng dụng.
1.2 Phân loại máy tính song song
Theo Flynn [14] phân loại kiến trúc máy tính dựa vào hai khái niệm dòng lệnh
(instruction stream) và dòng dữ liệu (data stream). Một dòng lệnh là một chuỗi các
lệnh được thực hiện hởi một máy tính. Một dòng dữ liệu là chuỗi dữ liệu được xử lý
bời một dòng lệnh. Dựa trcn hai ticu chí này, máy tính được phân loại dựa trên cơ
chê điều khiển chung. Ngoài ra một số cách phân loại máy tính khác dựa trcn sự
tương tác giữa các BXL, kiêu và sô lượng các BXL và việc thực hiện xử lý là đồng
bộ hay không đồng bộ [4],
1.2.1 Phân loại (lựa trên cơ chế diều khiển chung
Phân lớn các máy tính song song thường có một cơ chế điều khiển chung song
vân đề đặt ra ở dây là các hoạt dộng của máy lính dược điều khiển ở mức độ nào.
Xcm việc điêu khiên theo hai khái cạnh khác nhau, một khía cạnh, cơ chế điều
khiển chung chỉ được sử dụng để nạp chương trình và dữ liệu vào các BXL còn sau
đó các BXL hoạt động độc lập. Khía cạnh khác, cơ chế điều khiển được sử dụng để
hướng dẫn cho các BXL các công việc phái làm tại mỗi bước. Giữa hai khía cạnh
này là những cơ chế điều khiển trung gian. Hai loại cơ chế điều khiển phổ biến nhất

a) Hệ tliổng đa x ử lý một (lòng lệnh nhiều dòng (lữ liệu
Các máy tính véc-tơ thuộc vào loại này, Mỗi máy tính véc-tơ có thể thực hiện
8
một dòng lệnh, tuy nhiên nỏ có nhiều BXL số học khác nhau mà mỗi BXL này có
khả năng nạp và xử lý dữ liệu ricng của nó. Bởi vậy trong hất kỳ thời điểm nào một
thao tác luôn ờ cùng trạng thái thực thi trên nhiều đơn vị xử lý mà mỗi trong sổ
chúng có the xử lý dữ liệu riêng rẽ. Một ví dụ là chiếc máy CM - 200
9

IIìiili 1-1 llộ (hống một dòng lệnh nhiều (lòng dữ liệu (SI1MD)
b) Hệ tliông đa xử lý nhiêu (lòng lệnh nhiều dòng dí7' liệu
Phần lớn các máy tính da xử lý hiện nay đều thuộc vào loại này. Trong các
máy tính loại này nhiêu dòng lệnh có thể dược thực hiện cùng mội lúc và mỗi dòng
lệnh có thê xử lý clữ liệu ricng biệt. Các máy tính MIMD ban đầu có rất ít tương lác
giữa các CPU song hiện nay phần lớn các máy tính đều được thiết kế cho phép
tương tác giữa các CPU được thực hiện một cách hiệu quả. Có thể liệt kc một số
máy tính MIMD như Symmetry, TC2000, nCƯBE2, Paragon XP/S và Connection
Machine CM-5.
Hình 1-2 Hộ thống nhiều (lòng lộnli nhiều dòng ch! liệu (MIMD)
1.2.2 Cách phân loại dựa trên sự tương tác giữa các BXL
Một trong những khía cạnh quan trọng cun các máy tính song song là vơ ché
trao đổi thông tin giữa các BXĨ., lĩai kiến trúc phổ biến là kiến trúc chia xẻ bộ nhớ
(shared memory) và kiên true truyền thông điệp (message passing).
a) Chìa sẻ bộ nhỏ' chung
Sử dụng một bộ nhớ chia sẻ toàn cục (global shared memory) mà tất cà các
BXL đều có thể truy nhập đến. Một BXL có thể trao đổi với một BXL khác bằng
cách ghi vào bộ nhớ toàn cục và BXL thứ hai sẽ đọc tại cùng vị trí đó trong bộ nhớ.
Điêu này cho phép giải quyết vắn đề trao đổi thông tin giữa các BXL, tuy nhiên lại
dẫn đến vấn đề về việc truy nhập dồng thời các vị trí khác nhau trong bộ nhớ bởi
nhiêu BXL. Có 2 cách tiếp cận chù yếu để xử lý vấn đề truy nhập bộ nhớ là sử dụng
hệ thống chuyển mạch (switching systems) hoặc các BXL truy nhập bộ nhớ thông
qua bus hệ thống.
Đối với các hộ thống truy nhập bộ nhớ thông qua bus chung, việc thiết ké
tương dối đan giản, song nếu có nhiều BXL thì bus có thể trở thành nút cổ chai khi
có nhiều BXL cùng truy nhập bộ nhở. Bởi vậy số lượng BXL trong các hệ thống
nay thường tương dôi nhỏ và cao nhất là vào khoảng vài chục BXL
Nhăm tránh các nut cổ chai khi truy nhập bộ nhớ, các nhà thiết kế sử dụng hộ
thông chuyển mạch để cung cấp nhiều dường truy nhập vào bộ nhớ toàn cục. Trong
những hộ thống này các BXL dược nối vào bộ nhở thông qua một hoặc nhiều lớp

chuyên mạch. Mặc dù cung cáp băng thông lớn hơn các hệ thống sử dụng bus song
khi có nhiều truy nhập đến bộ nhớ cùng sử dụng một chuyển mạch thì tốc độ truy
nhập cũng sẽ giám đi rắt nhiều. Một khó khăn nữa của việc sử dụng hệ thống
chuyên mạch là thời gian truy nhập bộ nhớ sẽ cao và không đồng bộ. Tuy nhiên
việc sử dụng kiến trúc này khiến cho việc thiết kế giải thuật trở nên đơn giản và ở
mức cao hơn bởi hệ thống được xử lý như là tất cả các BXL đều được nối trực tiếp
với nhau.
10
Hình 1-3 Máy lính song song chia SẺ bộ nhó chung
b) Truyền thông điệp
Ngược lại với với các máy tính chia xẻ bộ nhớ chung là các máy tính song
song có bộ nhớ phân tán trong đó không tồn tại bộ nhớ chia sẻ chung mà mỗi BXL
có bộ nhớ cục bộ riêng của chúng. Với kiến trúc như vậy việc mở rộng các máy tính
có bộ nhớ phân tán trở nên đơn giản hơn rất nhiều. Kết quả là các nhà thiết kế có thể
dưa ra các hệ thống có tới hàng nghìn BXL mà không phải thay đổi nhiều trong cấu
trúc thiết kế. Trong các máy tính song song có hộ nhớ phân tán các BXL liên lạc với
nhau băng các thông điệp (message) qua một mạng liên kết (interconnection
network) gồm các liên kết truyền thông trực tiếp giữa một số cặp BXL. Một trong
những lựa chọn quan trọng trong thiết kế lúc đó sẽ là các cặp BXL nào được nối với
nhau. Tốc độ licn lạc là tối ưu khi các BXL được nối trực tiếp với nhau tuy nhiên
điều này thường là không khả thi do số lượng các liên kết là quá lớn đẫn đến việc
tăng giá thành của hệ thống. Cách thứ hai đưực sử dụng là các BXL liên lạc thông
qua một bus chia sẻ, điều này thường dẫn đến độ trễ cao khi số lượng BXL lớn do
vấn đồ tranh chap bus.
Hình 1-4 Máy tính song song cỏ hộ nhó phân tán
1.3 Mô hình lập trình song song
Việc dư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 trờ nên dơn giàn hơn. Lập trình tuần tự đã có mô hình truyền thống là
mô hình VonNeuman. Lập trình song song dư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 liếp quá trình thực
hiện song song của hàng ngàn BXL và kết hợp hàng triệu tương tác liên BXL. Bời
vậy khả năng trừu tượng và tính module là các đặc tính rất quan trọng trong lập
trình song song.
Vậy mức độ trừu tượng nào sẽ phù hợp với mô hình lập trình song song. Rõ
ràng là mô hỉnh này cần cho phép đánh giá cụ thể về khả năng thực hiện đồng thời
cũng như tính cục bộ để cho phép phát triển các chương trình có khả năng mở rộng
và có tính module. Mô hình đó cũng cần phải đơn giản và phù hợp với mô hình kiến
trúc của máy tính song song.
Dưới đây chủng tôi trình bày hai mô hình đáp ứng được các yêu cầu nêu trên
là nhiệm vụ - kênh liên lạc (Task - channel) và mô hình chia sẻ bộ nhớ chung.
1.3.1 Mô hình nhiệm vụ - kênlí liên lạc
Mô hình nhiệm vụ/kênh licn lạc [15] có thế được lỏm tắt như sau:
❖ Một công việc tính toán song song hao gồm một hoặc nhiều nhiệm vụ.
Các nhiệm vụ có thể được thực hiện đồng thời, số lượng nhiệm vụ có
the thay đổi trong thời gian thực thi chương trình.
❖ Mồi nhiệm vụ là một chương trình tuần tự và có bộ nhớ cục bộ (có the
coi đó là một máy VonNeuman ào). Một tập các cổng vào và cổng ra
(ĩnports and oulports) được định nghĩa như giao diện của nó với môi
trường.
❖ Một nhiệm vụ có thẻ thực hiện 4 thao tác cơ bản ngoại trừ việc dọc và
ghi vào bộ nhớ cục hộ, dó là: gửi thông điệp tới các cổng ra, nhận thông
điệp từ các cổng vào, tạo ra nhiệm vụ mới và kết thúc viêc thực thi
chương trình.
❖ Thao tác gửi dữ liệu là không đồng bộ (nó dược hoàn thành ngay lập
tức). Thao tác nhận dữ liệu là đồng bộ theo nghĩa là nó khiến cho việc
thực thi của nhiệm vụ phải dừng lại cho đến khi nhận được thông diệp.
❖ Các cặp cổng vào/cổng ra cố thể được nối bởi một hàng thông điệp dược
gọi là một kcnh licn lạc. Các kcnh liên lạc có the được lạo ra lioặe xoa
di.

12
•> Các nhiệm vụ được ánh xạ vào các BXL vật lý theo nhiều cơ chế khác
nhau, cơ chế ánh xạ được sử dụng không làm ảnh hưởng tới ngữ nghĩa
của chương trình. Có thể có nhiều nhiệm vụ được ánh xạ lên một BXL
Đặc điểm của mô hình nhiệm vụ - kênh liên lạc
a) Tốc độ
Các khái niệm trừu tượng về lập trình tuần tự trong mô hỉnh như khái niệm thù
tục và cấu trúc dữ liệu là hiệu quả bởi chúng có thể được ánh xạ trực tiếp và đơn
giàn lên chiếc máy tính VonNeuman. Các khái niệm về nhiệm vụ và kênh liên lạc
cũng có thể được ánh xạ trực tiếp lên mô hình máy tính song song. Một nhiệm vụ
đại diện cho một đoạn mã được thực hiện tuần tự trên một BXL. Nếu hai nhiệm vụ
licn lạc với nhau qua một kcnh chung được ánh xạ lcn các BXL khác nhau thỉ kênh
liên lạc giữa chúng được thể hiện như truyền thông liên BXL, nếu chúng được ánh
xạ lẻn cùng một BXL thì một cơ chế hiệu quả hơn có thể được sử dụng.
b) Tỉnh độc lập ánh xạ
Trong mô hình trên các nhiệm vu tương tác với nhau sử dụng cùng một cơ
chế là kcnh licn lạc không tính đến vị trí cùa nhiệm vụ. Do đó kết quà đưa ra hởi
chương trình không phụ thuộc vào vị trí nhiệm vụ thực thi. Bởi vậy việc thiết kế các
giải thuật song song có thể được thực hiện mà không cần tính đến số lượng BX1,
trong thực tê. rhông thường các thiết kế đều đưa đến sổ lượng nhiệm vụ tạo ra lớn
hơn sô lượng BXL có, khi đó việc đạt dược khả năng mở rộng (scalability) là tương
đôi rõ ràng. Việc tạo ra nhiêu nhiệm vụ hơn số BXL cũng cho phép giảm bớt chi
phí truyền thông hởi khi một nhiệm vụ đang truy nhập dữ liệu ở xa thì một nhiệm
vụ khác có thể đang thực hiện công việc tính toán.
c) Tính module
Khi thiêt kê một chương trình có tính module, nhiều thành phần của chương
trinh có thể được phát triển như các module độc lập và sau đó đưc kết hợp lại để tạo
thành chương trình. Các module có thể được thay đổi mà không cần thay đổi các
thành phần khác. Các dặc tính của chương trình có thể được xác định lừ các đặc tả
về các module và các mã lệnh nổi các module. Việc áp đụng có hiệu quả các thiết

kế module sẽ giúp giảm bớt độ phức tạp cùa chương trinh cũng như cho phép tái sử
dụng các đoạn mà.
13
Khái niệm mội nhiệm vụ trong mô hình nhiệm vụ/kênh liên lạc phù hợp một
cách tự nhiên với một module trong quá trình thiết kế. Một nhiệm vụ ở đây bao gồm
cả dừ liệu và mã lệnh thao tác trên dữ liệu này, các cổng mà nó gửi và nhận thông
điệp tạo nên giao diện của nó. Bởi vậy các ưu điểm của thiết kế module có thể được
áp dụng trực tiếp trong mô hình nhiệm vụ/kênh liên lạc.
Gi ưa mô hình nhiệm vụ/kênh liên lạc và các thuật ngữ lập trinh hướng đối
tượng cũng có nhiêu điểm giống nhau. Các nhiệm vụ cũng giống như các đổi tượng
bao bọc dữ liệu và mã của nhiệm vụ thao tác trên dữ liệu đó. Sự khác biệt giữa
chúng là mô hình nhiệm vụ/kênh licn lạc cung cấp khả năng thực hiện đồng thời sử
dụng các kênh liên lạc chứ không phải các phương thức để thực hiện các tương tác
và không hỗ trợ khả năng thừa kế.
d) Tính xác định
Một giải thuật hay một chương trình được coi là xác định nếu như sự thực thi
với một dữ liệu vào riêng biệt luôn đưa ra một két quả duy nhất. Nếu giải thuật là
khong xác đinh thì các lân thực thi khác nhau của chương trình sẽ đưa ra những kết
quà khác nhau. Mặc dù tính không xác định đôi khi là hữu ích và được hồ trợ việc
hỗ trợ tính xác định của chương trình trên mô hình lập trình song song giúp cho việc
viet chương trình trở ncn dê dàng hơn nhiêu. Một chương trình xác định sẽ (lỗ hiểu
và dễ kiểm tra tính đúng đắn hơn,
Trong mô hình nhiệm vụ/kcnh liên lạc mỗi kênh có một nhiệm vụ gửi và một
nhiệm vụ nhận, nhiệm vụ ycu cầu dữ liệu phải ngừng thực thi cho đến khi có thông
diệp tới giúp cho việc đảm bảo tính xác định của chương trình.
1.3.2 Mô hình chia sẻ bộ nhớ chung
Trong mô hình bộ nhớ chung [ 15] các nhiệm vụ cùng chia xẻ một không gian
địa chỉ chung có thể được truy nhập đọc ghi theo phương thức không dồng bộ. Các
cơ chê khác nhau như khoá (Locks) và semaphore được sử dụng để điều khiển
việc truy nhập tới bộ nhớ chung. Xct theo quan điểm của lập trình viên thì ưu điểm

của mô hình nảy là không có khái niệm sờ hữu (lữ liệu, nghĩa là không phải chỉ định
rỗ ràng quá trình truyền dữ liệu giữa nhiệm vụ gửi và nhiệm vụ nhận dữ liệu. Tính
chất này giúp cho việc phát triền chương trình dơn gián hơn. Tuy nhicn khi dó việc
hiểu và đảm hào lính cục hộ trờ nôn khó khăn và cũng dược chú ý nhiều nhắt trong
14
phần lớn các kiến trúc chia xẻ hộ nhớ chung. Việc viết các chương trinh xác định
cũng trờ nên khó khăn.
1.4 Hiệu năng cùa xử lý song song
Trong phấn này chúng tôi trinh bày một số vấn đề liên quan đến hiệu năng cùa
xử lý song song bao gồm: khỉ năng tăng tốc độ lính toán, việc cân bằng tài (Load
balancing) và sự bế tắc (Deadlock).
1.4.1 Định luật Amdahl's
Trong nhiều ứng dụng thực tế đòi hòi thời gian thực, vấn đề cần giải quyết có
kích thước cố định, do đó khối lượng công việc phải làm cũng tlurờng xác định
được trước. Định luật (lo Amdahl [91 phát biểu (1967) nhàm đánh giá hiệu năng cùa
VICC tinh toán cho các bai toán thuộc dạng này
Khi tăng số lượng BXL trong hệ (hống máy song song, khói lượng công việc
đưạc phân phối cho nhiều BXL thực hiện. Mục tiêu chính là tìm được kết quả cùa
bài nhanh nhắt có thể hay nói một cách khác là giảm đến mức tối đa thời gian tính
toán.
Định luật Amdahl: Gọi f là phần nhỏ của (hao tác tính toán trong quá trình tính
toán phải thực hiện một cách tuần tụ. 0 < f < 1. Tốc độ tối đa s có thể đạt được bằng
cách Sừ dụng máy tính song song với p BXL dược cho bởi công thức:
s < ———?———
./+0 ~ /)/?
Thời gian cho phần việc xử lý song song của ứng dụng sẽ giảm dần đến 0 khi
ta tăng sổ lượng BXL. Thời gian cho phần việc xử lý tuần tự luôn là hàng số.
15
p-l P 2 !>=4
llìnli 1-5 Sụ phụ thuộc thời ginn vàn số lirợng 11X1, của định luật Amdahl

1.4.2 Cân bằng tái
Ciià sử răng nếu dữ liệu được phân tán trên các bộ nhớ địa phương của các
BXL trong hệ thống nhiều máy tính, khi đó khối lượng công việc của các BXL cần
phải được phân phôi hợp lý trong suôt quá trình tính toán. Trong nhiều trường hợp
giả sử này là đúng, tuy nhiên trong thực tế điều không phải lúc nào cũng thực hiện
được. Giải pháp dược đưa ra ở đây là cân bằng tải động nhằm mục đích làm thay
đổi sự phân phối khối lượng công việc giữa các BXL trong quá trình thực hiện tính
toán.
ỉ hông thường sau khi phân phối khối lượng công việc cho mồi BXL, quá trình
cân bàng tải động thực hiện bốn bước cơ bản dưới đây: Giám sát hiệu năng của mỗi
BXL, trao dôi thông tin trạng thái giữa các BXL, tính toán và ra quyết định phân
phối lại khối lượng công việc và cuối cùng là thực hiện viêc chuyển đổi dữ liệu thực
De thực hiện điều này rất nhiều thuật toán để thực hiện cân bàng tải động dược
đê xuât. í heo kêt quà Znati ct al [14] phân lớp các thuật toán này theo chiến lược
tập trung, phân tán hoàn toàn (Fully distributed) và phân tán một nửa (Scmi -
distributed).
a) Các thuật toán cân bằng tải tập trung
Nhằm đưa ra quyết định có tính chất tổng thể trong việc phân phối lại khối
lượng công việc cần thực hiện cho các RXL. Một vài thuật toán trong lớp này sử
dụng thông tin hệ thông có tính toàn cục đổ lưu trạng thái của các máy ricng biệt
trong hệ thống. Thông tin này sẽ cho phép thuật toán phân phối công việc cho các
BXL một cách dễ dàng. Tuy nhiên khối lượng thông tin tăng theo tỷ lệ thuận với số
lượng các BXL, do đó đòi hỏi khối lượng lớn hộ nhớ trên một BXL để lưu thông tin
trạng thái. Vỉ vậy các thuật toán thuộc lớp này không được tiếp cận một cách rộng
h) Cúc thuật toán cân bằng tải phân tản hoàn toàn
Trong chiên lược này, môi BXL có một bàn sao về thông tin trạng thái của hệ
thông. Các BXL trao đổi thông tin trạng thái với nhau và sử dụng các thông tin này
dể làm thay đổi một cách cục bộ việc phân chia công việc. Tuy nhicn các BXL chỉ
có thông tin trạng thái cục hộ ncn việc cân hẩng tải không tốt bằng các thuật toán
16

cân băng tải tập trung.
c) Cúc thuật toán cân bằng tải phân tán một nửa
Các thuật toán thuộc lớp này chia các BXL thành từng miền. Trong mỗi miền
sử dụng thuật toán cân bằng tải tập trung để phân phối công việc cho các BXL
thuộc miền đó.
ả) Sự bế tắc (Deadlock)
Các tiến trình xử lý bị rơi vào tình trạng bế tấc [14] nếu mỗi tiến trình đó nắm
giữ tài nguyên mà một vài tiến trình khác đang yêu cầu để xử lý.
Lý do tiềm ẩn tồn tại sự bế tắc là do nhiều liến trình cùng sử dụng nguồn tài
nguyên chung mà không có sự kiểm soát tốt. Sự bế tắc tồn tại trong các các hệ điều
hành đa nhiệm, cũng như các hệ thống đa BXL và đa máy tính.
Đổi với các hệ thống da máy tính, một trong các sự bế tắc phổ biến là bế lắc
vùng đệm (Buffer deadlock) - xảy ra khi một tiến trinh đợi một thông điệp mà thông
điệp này có thể không bao giờ nhận được do vùng đệm hệ thống dã đày .
Xem xét hệ thống đa máy tính với các BXL xử lý không đồng bộ. BXL Pj gửi
thông diệp cho BXL khác Pj không kết khối cho tới khi có thao tác đọc thông điệp
đó. Mặt khác khi BXL Pj gửi thông điệp cho BXL Pj, nội dung của thòng điệp được
lưu trong vùng độp của hộ thống cho đến khi BXL Pj nhận và đọc thông điệp. Giả
sử rang trong cùng một thời điểm có nhiều BXL cùng gửi thông điệp đến BXL Pj và
điều này sẽ làm cho vùng đệm bị đầy. Việc gửi các thông điệp tiếp theo chỉ thực
hiện được khi BXL Pj đọc một hay nhiều thông điệp.
Giả sử BXL pk là một trong các BXL có khả năng gửi thông điệp đến BXL Pj.
Neu BXL Pj cố gắng đọc thông điệp do BXL pk gửi đến, nó sẽ bị kết khối cho đến
khi nội dung thông điệp có trong vùng đệm. Rõ ràng BXL pk bị kết khối cho đến
khi BXL Pj loại bỏ một hay nhiều thông điệp từ vùng đệm, và như vậy BXL Pị và pk
rơi vào sự bế tác.
17
ỊTRUW5TÀM ĨHG-:; ĨIN ' :L" ■
! Nr V: LO/ 1 i
IX

Hình 1-6 B X L pk kết khối để gùi X cho Pj vì vùng đệm của Pj đầy.
Pj không thể để nhận được X. Pj và p k roi vào sự bế (ắc
Theo kết quà nghiên cứu cùa Coffman và Denning, bốn điều kiện dưới đây là
nguyên nhân gây ra sự bể tác.
1 Sự loại trừ lẫn nhau: Mỗi tiến trình có sự độc quyền trong việc sử dụng
tài nguyên cùa nó
2 Không có sự ưu tiên: Mỗi tiếp trinh không bao giờ giải phóng tài
nguycn mà tiến trình đó đang chiếm giữ cho đến tận khi không còn sử
dụng chúng nữa.
3 Sự chờ đợi tài nguyên: Mỗi tiến trình dang chiếm giữ tài nguyên trong
khi lại chờ đợi các tiến trình khác giải phóng chúng.
4 Sự chờ đợi giữa các tiến trình: Tiến trình đợi tài nguyên mà tiến trình kế
ticp dang chiêm giữ mà tài nguyên dỏ không dược giải phóng.
Một so cách khắc phục sự bế tắc
Cách tiêp cận thứ nhất là dò tìm sự bế tắc khi chúng xảy ra và cố gắng khôi
phục lại. Một cách khác dể tránh sự bế tắc thông qua sử dụng các thông tin yêu cầu
lài nguycn của các tiến trình để điều khiển sự phân phối để khi tiếp tục phân phối
các tài nguyên không là nguyên nhân dổ các tiến trình rơi vào sir bế tắc. Cách tiếp
cận thứ ba đê tránh sự bê tăc là ngăn câm không để xảy ra ba điều kiện nêu sau cùng
trong bốn điều kiện nêu trên.
Chương 2 Song song hoá thuật toán tự
2.1 Cac chiên lược phát triển ứng dụng song song
Một câu hỏi được đặt ra khi phát triển ứng dụng song song là sự lựa chọn giữa
việc chuyên đôi từ một ứng đụng tuần tự đã có sẵn hay là xây dựng một ứng dụng
song song từ ban đầu. í rong khuôn khổ luận văn, chúng tôi chỉ tập trung vào việc
phát triển ứng dụng song song dựa trên ứng dụng tuần tự [15] đã có sẵn.
Có ba chiên lược thông dụng phổ biến để tạo ra ứng dụng song song là song
song hoá tự động, sử dụng các thư viện song song và lưu lại các thành phần chính
của chương trinh tuân tự. Sau đây chúng tôi trình bày khái quát về các chiến lược
này.

2. L ĩ Song song hoó tự động
Mục đích của chiến lược này là giúp dỡ người lập trình thực hiện các nhiệm
vụ một cách song song. Bộ hiên dịch có thể chấp nhận các đoạn mã lệnh và thực
hiện song song hoá chúng một cách hiệu quà mà không cần người lập trình bỏ công
sưc. I uy nhiên, dicii nay là rất khó trờ thành hiện thực vì khó xây dựng công nghệ
cho bộ biên dịch.
19
Existing
Source Code
Minor C'ode


Automatic
Parallel
Modification
Parallelization
w

Application
Hình 2-1 Song song hoá (ụ động
2.1.2 Xây (ỉiptg các thư viện song song
Y tương cua phương pháp này là xây các đoạn mã lệnh song song được sử
dung lại nhiều lần trong một số ứng dụng thành các thư viện để có thể dùng nó xây
dựng ưng dụng khác một cách dễ dàng. I hư viện này có thổ được hình thành theo
hai cách, cách thứ nhất bao gói (Encapsulate) các cấu trúc điều khiển của các lớp
dối tượng trong ứng đụng, cách thứ hai tiến hành cài đặt song song một số thuật
toán cốt lõi cùa các thủ tục.
20
Hình 2-2 Xây dụng các thu' viện song song
2.1.3 Ke tliừa các ílìànli plíần chỉnh

c hiên lược này xây dựng ứng dụng song song ngay từ đầu, để giúp người lập
trình thoải mái trong lựa chọn ngôn ngữ và lựa chọn mô hình iập trình để phát triển
ưng dụng. 'I uy nhiên công việc này thường gặp nhiều khó khăn vì sử dụng lại rất ít
mã nguồn cùa ứng dụng tuần tự dã có sẵn.
Hình 2-3 Sử clụnỊỊ lại các thành phần chính
2.2 Các bước cơ bản song song hoá thuật toán tuân tự
Phân lớn các bài toán lập trình đều có nhiều giải pháp để thực hiện song
song. Một trong các giải pháp đó là song song hoá các giải thuật tuần tự. Phương
pháp thiêl kê này nhăm dưa ra một cách tiếp cận cho phép xét đến các vấn đề độc
lập với máy tính như mức độ song song trong những giai đoạn đầu của thiết kế và
đưa những quyết định liên quan đến loại máy tính cụ thể vào giai đoạn sau. Trong
phương pháp này quá trình thiết kế được chia thành 4 giai đoạn: Phân chia
(Partitioning), truyên thông (Communication), tổng hợp (Agglomeration) và cuối
cùng là ánh xạ (Mapping), ỉ rong 2 giai đoạn dầu mức độ song song cũng như khả
năng mở rộng (Scalability) của bài toán được chú ý nhiều hơn nhằm tìm ra các giải
thuật có các đặc tính này. I rong các giai đoạn 3 và 4, các tính chắt khác như tính
cục bộ và các ticu chuẩn có liên quan đến tốc độ sẽ được chú ý.
2.2.1 Phân rã
Trong giai đoạn này những tính toán cần thực hiện cũng như các dữ liệu cần
thao tác dược phân rã thành các nhiệm vụ nhó hơn. Các vấn đề liên quan đến như số
lượng BXL trên máy tính được bỏ qua để tập trung vào việc tổ chức lại quá trình
tính toán nhằm đạt được mức độ song song cao nhất.
! rong giai đoạn này cần tập trung vào việc dưa ra nhiều nhiệm vụ nhỏ nhằm
dạt được mức phân rã mịn (Fine grained decomposition) của vấn đề. Cũng như việc
đô các hạt cát mịn là dê hơn việc đổ một đống gạch, một cách phân rã mịn cho phép
đạt được một giải thuật song song ờ mức độ cao nhất.
Một cách phiìn rã tốt cilia vấn (lề thảnh các phần nhỏ bao gồm cà công việc
linh toan và dù liệu mà nó thao tác. Khi thực hiện phân rã, các lập trình vicn thường
tập trung vào dừ liệu cua vân đc, xác định một cácli phân rã dữ liệu phù hợp. và
cuôi cùng là dưa ra các tính toán tương ứng với dữ liệu phân rã. Kỹ thuật phân rã

như vậy dược gọi là phân rã tlieo miền (Domain decomposition). MỘI cách liếp cận
khác là phân rã công việc tính toán cần dược thực hiện trước hết và sau đó mới xem
\c( (lên dư liệu (lược thao tác. Kỹ thuật này dược gợi là phân rã theo chức năng
(Functional decomposition). Dáy là hai kỹ thuật bổ sung cho nhau và có thể dược áp
dụng trong các phân khao nhau cua hài toán hoặc cho cùng một hài toán để dạt được
các giải thuật song song khác nhau.
I rong giai đoạn (lâu cùa thiêt kế cần tnính việc nhân bản công việc tính toán
và dữ liêu, nghĩa là cân dưa ra các nhiệm vụ IIIÍÌ cà công việc tính toán cũng như dừ
liệu dêu dộc lập với nhau.
Vân đè kích cỡ phân rã (Granularity) sc được xét đến trong các giai đoạn sau
khi mà việc nhân bàn tính toán và dữ liệu cho phép giảm hớt chi phí truyền thông.
a) Kỹ thuật phân rã theo miền
Khi phân rã bài toán băng kỹ thuật phân rã theo miền, trước tiên xót việc phân
rã dữ liệu cùa bài toán. Ncn phân chia dữ liệu thành các phần nhỏ có kích cỡ bẳne
* c
nhau nêu có thê dược. I iêp dó công việc tính toán cũng dược phân rã chu yếu là
gán mồi phán việc tính (oán với (lũ liệu mà nó than tác. Cách phân rã này Ihường
21
dan den một tập các nhiệm vụ mà mỗi trong số chúng hao gồm dữ liệu và các thao
tóc trốn dữ liệu dó. Một số công việc tính toán có thể đòi hỏi dữ liệu từ nhiều nhiệm
vụ khác và do vậy phải có sự trao đổi (lữ liệu giữa các nhiệm vụ. vấn đề này dược
xét đihi trong giai đoạn sau cùa quá trinh thiết kế.
Dữ liệu (hrợc phân rã có thẻ là dữ liệu vào cùa chương trình, kết quà tính
toan của ehirang trinh, hoặc các giá trị tính toán trung gian trong chương trình. Có
thê có nhiêu cách phân rã khác nhau dựa trên các cấu trúc dữ liệu khác nhau. Một
trong những nguyên tắc cần chú ý là tập trung vào các cấu trúc dữ liệu lớn nhất
hoặc các cấu trúc dữ liệu thường được truy nhập nhất. Các giai đoạn khác nhau cùa
qua trinh tính toán có thổ Ihao tác trên các cấu trúc dữ liệu khác nhau hoặc đòi hỏi
các cách phân rã khác nhau cùa cùng một cấu trúc dữ liệu. Trong trường hợp này,
các giai đoạn linh toán sẽ dược xét độc lập và cuối cùng tổng hợp các cách phân rã

và giải thuật song song dược phát triển cho các giai đoạn khác nhau.
b) Kỹ thuật phân rũ chừc năng
Môi cách phàn rã theo chức năng thổ hiên một cách nghĩ khác về cùng mộí
v;m (Ic. I rong Cỉích licp cận này (lầu licn công việc lính (oán cần thực hiện sẽ (lược
xét <!èn chư không phải là (lữ liệu dược thao tác hời những tính (Oil 11 đỏ Khi tin
phân chia còng việc tính toán thành những nhiệm VỊI độc lập nhau thì công việc liếp
theo là xác (lịnh dữ liệu mà mỗi nhiệm vụ sử dụng. Nốu những dữ liệu này là dộc
lập thi việc phân rã dược hoàn thành. Ncu chúng giao nhau quá nhiều cần xét đến
cơ ché truyền thòng giữa các nhiệm vụ đẻ tránh nhân hàn dữ liệu. Dây cũng là dấu
hiệu cho thây vice sir dụng kỹ thuật phân rã Ihco miền có thể phù hợp hơn.
Mặc dù kỹ thuật phân rã thc.0 miền là nền tàng cùa phần lớn các giải thuật
song song nhưng nên chủ ý đốn kỹ thuật phân rã theo chức năng bởi chúng cho một
cách nhìn khác với bài toán. Chỉ ricng lý do này cũng cho thấy việc xem xét kỹ
thuật phan ra nảy la cân thiết khi phát triển giải thuật song song. Hơn nữa việc tập
trung vào công việc tính toán cần thực hiện có thẻ làm bộc lộ ra cấu trúc của bài
toán và khả năng tối ưu hoá mà đôi khi khó có thể thấy được nếu chỉ xem xét đen
dữ liệu.
Kỹ thuật phân rã theo chức năng cũng đóng vai trò quan trọng trong việc cấu
true lại chương trình. Một cách phân rà tlico chức năng phân chia không chỉ công
22
việc tính toán cân thực hiện mà cà đoạn mã chương trình thực hiện công việc tính
toán dó và do vậy làm giảm bới mức độ phức tạp trong thiết kế tổng thể. Ví dụ như
việc xây dựng mô hình máy tính cho một hệ (hống phức tạp có thể được thực hiện
như một tập các mô hình đơn giàn kết nối với nhau qua các giao diện.
c) Tiêu ch nân ilúnh giá ỊỊÌai đoạn pit ân rũ
Sau khi phan rã bill toán cân đưa ra một sô tiêu chnân đê đánh giá xem việc
phân rã như vậy có lối ưu hay không. Sau dây là một số tiêu chuẩn để đánh giá:
❖ Liệu số lượng nhiệm vụ dược tạo ra theo cách phân rã có ít hơn số lượng
BXL trong hộ thống máy tính hay không? Nếu câu trà lời là không thì
giải thuật có thổ có mức linh hoạt thấp trong các giai đoạn thiết kế sau

dó.
*•’ ( <r chế phân rã dưa ra có tránh dược việc tính toán và lưu trữ thừa
không? Nêu câu trà lơi la không thì cách pliân rã có thể không phù hợp
với hài toán khi dữ liệu rất lớn.
V L iẹu cac nlnọm vụ có kích thước Xcìp xỉ nh au không? K hi các nhiệm vụ
có kích (hước chênh lệch quá lớn thỉ việc phân chia cho các BXI lượng
công việc xấp xí nhau có thể là khó khăn.
Cơ chê phân rã có tạo ra sô lượng nhiệm vụ tỷ lệ với kích cỡ hài toán không?
Trong một cách phân rã lý tường khi kích thước bải toán tăng sẽ làm tăng số nhiệm
vụ chư khong phcii lci kích thươc Ciici môi nhiộm vụ. Ncu câu trả lời là không thi giíìi
thuật song song dược dưa ra có thể không giíìi quyết được hài toán với kích cỡ lớn
hơn mặc dù có thêm BXL.
2.2.2 Truyền thông
Các nhiệm vụ dược sinh ra trong giai đoạn phân rã là nhằm được thực hiện
song song nlnrng nói chung không thổ được thực hiện một cách độc lập. Việc tính
toán trong một nhiệm vụ đôi khi cần dán dữ liêu của một nhiệm vụ khác. Khi đó cần
có sự trao đôi dữ liệu giữa các nhiệm vụ để quá trình tính toán được tiếp lục thực
hicn Vice dim ra các dòng thông tin này (lược xác định trong giai đoan truvền ílióng
cùa quá trình thicí kế.
ĩrong mô hình lập trình được đưíi ra nhiệm vụ/kcnh liên lạc, nhu cầu ỉruyỏn
23
24
H'.'Mg giũa hai nhiộm vụ dirợc mô hull, hoá như mội kênh Men lạc nói giữa |u,i
nhiệm vụ. trên dó ,„01 nhiệm vụ có (hè gửi <19 liệu và nhiệm vụ kia có thè nliặn dữ
I.CII đo. BAi vậy cơ ché truyền thông cho một piái Ihuậi có thổ được xác định trong
liỊiị giai đo;,<ii;,i ,lon„ (làu lủ (lịnh nghĩa những kênh nối (Irực liếp hoặc gián tiếp)
giữa nhiệm vụ cần dữ liệu và nhiệm VỊ1 sờ hữu dft liệu đó. Tiếp đó xác định các
II,ông diệp dược gứi và nhận Ircn các kênh này. ví dụ như trong các ngôn ngữ song
song vẽ dừ liệu chi cần (Un ra các thao tác song song về dữ liệu cũng nhu co chá
phân lán dữ liại. Tuy nhiên việc xét đến các nhiệm vụ và kênh truyền thông cho

phép lập (rình viên lưựng hoá dược các vấn dề về lính cục bộ cũng như chi phí
truyền tlìônp.
\ iệc đưa ra một kênh truyền thông là quá trình suy nghĩ và tính toán lý
thuyi"t CÒn việc gửi các lhôns điêp liôn quan đến các chi phí cụ thể. Bởi vậy cần
tranh lạo ra các kcnli và các thao tác truyền thông không cần thiết. Tốc độ cùa giải
th" f c0ng cỏ íhl- dư<TC ,ổi ưu hoá hàng cách phân tán thao lác truyền (hông giữa
nhiều nhiệm vụ vả lố chức các thao tác truyền thông nhầm đạt được mức độ song
song cao nhất.
Việc xác (lịnh chi phí truyền (hông cho giai Ihuậl song song sứ dụng kỹ thuật
pMn rn ‘hc° miỏn cỏ íllẻ »•' k,lỏ khăn. Kỹ thuật này trưác hết phân rã cẩu trúc (lữ
lieu Ill,inh cac tạp rời nhau va liên kêt các phần này với công việc tính (oán (ương
ứng. ( ong việc thiết ké này có thể In đơn giàn (uy nhiên có các tính toán đòi hỏi dừ
liỌu tù nhiều nhiệm vụ khác nhau nôn cần phải trao đổi dữ liệu giữa các nhiệm vụ
tưorng ứng. Bài vậy việc lố chức quá trinh truyền thông một cách có hiệu quà có the
là rât khó và thậm chí một cách phân rã (1(711 giàn cũng cỏ (hổ đẫn đến một cấu trúc
truyền thông phức tạp.
Ngược lại cơ chế truyền thông trong các giải thuật song song đạt dược bảng
kỹ thuật phàn rã theo clurc năng thường rõ ràng và lương ứng với đòng dữ liệu trao
dôi giữa các nhiệm vụ. Một số cách phân loại các kiểu truyền thông phổ hiến: cục
bộ/toàn cục. có cấu trúc/không có cấu trúc, tĩnh/động và đồng bộ/không đồng hộ:
1 Trong truyền thông cục hộ mồi nhiệm vụ chi liên lạc với một tập nhò
các nhiệm vụ khác còn truycn thông toàn cục (lòi hòi mỗi nhiệm vụ liên
lạc với nhiêu nhièm vu kliik'.

×