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

Xử lý song song áp dụng đối với một số bài toán trong lý thuyết đồ thị

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 (865.82 KB, 69 trang )

i
..

ĐẠI HỌC THÁI NGUYÊN

TRƢỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
VÀ TRUYỀN THÔNG

VÕ QUANG HUY

XỬ LÝ SONG SONG
ÁP DỤNG ĐỐI VỚI MỘT SỐ BÀI TOÁN
TRONG LÝ THUYẾT ĐỒ THỊ

Chuyên ngành: Khoa học máy tính
Mã số: 60 48 01

TĨM TẮT LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH

Thái Ngun - 2013

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên




ii

LỜI CẢM ƠN

Trong quá trình học tập và nghiên cứu tại lớp Cao học khóa 9 chuyên ngành


Khoa học máy tính tại Trường Đại học Cơng nghệ thơng tin và Truyền thông - Đại
học Thái Nguyên, Tôi đã nhận được rất nhiều sự giúp đỡ nhiệt tình của các thầy, cô
giáo trong Trường Đại học Công nghệ thông tin và Truyền thông; Viện công nghệ
thông tin thuộc Viện khoa học và Công nghệ Việt Nam. Các thầy, cô luôn giúp đỡ,
tạo điều kiện cho tơi trong q trình học tập. Tôi xin bày tỏ lời cảm ơn chân thành
tới tập thể các thầy, cô giáo trong Trường Đại học Công nghệ thông tin và Truyền
thông; Viện công nghệ thông tin thuộc Viện khoa học và Công nghệ Việt Nam.
Đặc biệt Tôi xin gửi lời cảm ơn sâu sắc tới thầy giáo TS Vũ Vinh Quang đã định
hướng và tận tình hướng dẫn tơi hồn thành nội dung bản luận văn này.
Tôi xin cảm ơn các bạn đồng nghiệp và người thân đã động viên, giúp đỡ tơi
trong q trình nghiên cứu và thực hiện luận văn.
Trong một khoảng thời gian ngắn, với kiến thức của bản thân còn hạn chế nên
luận văn khơng tránh khỏi những thiếu sót về mặt khoa học, tơi rất mong nhận được
những đóng góp ý kiến của các Thầy cô giáo cùng bạn bè để bản luận văn được
hoàn chỉnh hơn.
Xin trân trọng cảm ơn!

Thái Nguyên, ngày

tháng

năm 2013

Học viên

Võ Quang Huy

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên





iii

MỤC LỤC
LỜI CẢM ƠN ................................................................................................................................................................................................................................................................................................................ i
MỤC LỤC .......................................................................................................................................................................................................................................................................................................................iii
DANH MỤC CÁC HÌNH VẼ .................................................................................................................................................................................................................................................v
LỜI NĨI ĐẦU............................................................................................................................................................................................................................................................................................................1
Chƣơng 1: MỘT SỐ KIẾN THỨC CƠ BẢN VỀ XỬ LÝ SONG SONG...................................................2
1.1 Khái niệm cơ bản về xử lý song song ..........................................................................................................................................................................2
1.2 Các mơ hình máy tính song song .............................................................................................................................................................................................5
1.2.1. Mơ hình SISD: Đơn luồng lệnh, đơn luồng dữ liệu...........................................................................................5
1.2.2. Mơ hình SIMD: Đơn luồng lệnh, đa luồng dữ liệu .............................................................................................6
1.2.3. Mơ hình MISD: Đa luồng lệnh, đơn luồng dữ liệu .............................................................................................7
1.2.4. Mơ hình MIMD: Đa luồng lệnh, đa luồng dữ liệu ................................................................................................7
1.3 Khái niệm về thuật toán song song .....................................................................................................................................................................................9
1.3.1 Định nghĩa ........................................................................................................................................................................................................................................................................9
1.3.2 Các cách tiếp cận trong thiết kế.......................................................................................................................................................................... 10
1.4 Đánh giá các chương trình song song .................................................................................................................................................................... 10
1.5. Phân tích và đánh giá thuật toán song song .......................................................................................................................................... 12
1.6. Khái niệm chương trình dịch, hệ điều hành ......................................................................................................................................... 15
1.7. Một số ngơn ngữ lập trình song song.................................................................................................................................................................... 17
1.7.1. Lập trình song song với OCCAM .............................................................................................................................................................. 17
1.7.2. Lập trình song song với PVM .............................................................................................................................................................................. 21
Chƣơng 2: CÁC THUẬT TỐN TỐI ƢU TRÊN MƠ HÌNH ĐỒ THỊ....................................................25
2.1 Một số khái niệm đồ thị .............................................................................................................................................................................................................................. 25
2.1.1 Mơ hình đồ thị ................................................................................................................................................................................................................................................. 25
2.1.2. Các khái niệm cơ bản ................................................................................................................................................................................................................. 27
2.1.3 Đường đi, chu trình. Đồ thị liên thông ............................................................................................................................................. 29

2.1.4 Cây và cây khung của đồ thị ....................................................................................................................................................................................... 29
2.2 Mơ hình các bài tốn tối ưu .............................................................................................................................................................................................................. 29
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên




iv

2.2.1 Bài toán cây khung nhỏ nhất ...................................................................................................................................................................................... 29
2.2.2 Bài toán xác định đường đi ngắn nhất ............................................................................................................................................... 34
2.2.3 Bài tốn tơ màu đồ thị.................................................................................................................................................................................................................. 38
Chƣơng 3:THIẾT KẾ CÁC THUẬT TOÁN SONG SONG TRÊN ĐỒ THỊ ....................................47
3.1. Một số thuật toán sắp xếp song song ..................................................................................................................................................................... 47
3.1.1 Thuật toán sắp xếp đánh số ............................................................................................................................................................................................ 47
3.1.2 Thuật toán sắp xếp so sánh và đổi chỗ ............................................................................................................................................. 48
3.1.3 Thuật toán sắp xếp MergeSort ............................................................................................................................................................................... 51
3.2. Song song hóa một số thuật tốn tối ưu trên đồ thị .......................................................................................................... 54
3.2.1 Song song hóa thuật tốn Kruskal................................................................................................................................................................ 54
3.2.2 Song song hóa thuật tốn Prim ............................................................................................................................................................................. 56
3.2.3. Song song hóa thuật tốn Floyd ...................................................................................................................................................................... 59
3.2.4 Song song hóa thuật tốn tơ màu đồ thị ....................................................................................................................................... 61
PHẦN KẾT LUẬN .............................................................................................................................................................................................................................................................................63
TÀI LIỆU THAM KHẢO................................................................................................................................................................................................................................................64

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên





v

DANH MỤC CÁC HÌNH VẼ
Hình 1.1. Mơ tả kiến trúc Von Neumann................................................................................................................................................................ 2
Hình 1.2. Mơ hình của kiến trúc SISD .......................................................................................................................................................................... 6
Hình 1.3. Mơ hình của kiến trúc SIMD ....................................................................................................................................................................... 6
Hình 1.4. Mơ hình của kiến trúc MISD ....................................................................................................................................................................... 7
Hình 1.5. Mơ hình của kiến trúc MIMD ................................................................................................................................................................... 8
Hình 1.6. Các mẫu hình kiến trúc xử lý song song........................................................................................................................ 8
Hình 1.7. Mơ hình tính tốn của PVM .................................................................................................................................................................... 22
Hình 1.8. Một kiến trúc của PVM ....................................................................................................................................................................................... 22
Hình 2.1. Sơ đồ mạng máy tính với đa kênh thơng báo .............................................................................................. 26
Hình 2.2. Mạng máy với các kênh thoại một chiều................................................................................................................ 26
Hình 2.3. Đồ Thị có hướng G ......................................................................................................................................................................................................... 28
Hình 2.4.

..............................................................................................................................................................................................................................................................................................

28

Hình 2.5. ................................................................................................................................................................................................................................................................................................. 28
Hình 2.6. ................................................................................................................................................................................................................................................................................................. 28
Hình 3.1. Quá trình phân rã và hịa nhập trong Mergesort .................................................................................. 52
Hình 3.2. Thuật tốn tô màu đồ thị song song trên PRAM ................................................................................ 62

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên





1

LỜI NĨI ĐẦU
Trong thực tế, có rất nhiều lĩnh vực như xử lý đồ họa, trí tuệ nhận tạo, lý
thuyết đồ thị, lý thuyết nhận dạng, dự báo thời tiết... đều dẫn đến các bài toán xử lý
một khối lượng dữ liệu rất lớn dẫn tới yêu cầu cần phải có những hệ thống máy tính
thật mạnh mới thực hiện được những yêu cầu của thực tế. Hầu hết những bài tốn
này, những máy tính xử lý tuần tự kiểu von Neumann là không đáp ứng yêu cầu.
Trong thời gian gần đây, vấn đề nghiên cứu xử lý song song là một hướng nghiên
cứu đang được quan tâm trong lĩnh vực tốn học và Cơng nghệ thơng tin. Một trong
những bài toán nổi bật là các bài toán tối ưu trên mơ hình lý thuyết đồ thị.
Với mục đích nghiên cứu vấn đề thiết kế các thuật toán song song dựa trên các
thuật toán tuần tự, luận văn đặt vấn đề nghiên cứu về lý thuyết xử lý song song và
ứng dụng trên một số bài tốn trong mơ hình đồ thị.
Cấu trúc của luận văn gồm phần mở đầu và 3 chương nội dung như sau
Phần mở đầu giới thiệu về hướng nghiên cứu và các mục đích nghiên cứu
Chương 1: luận văn trình bày các khái niệm về vấn đề xử lý song song, mơ
hình máy tính song song, thuật tốn song song cùng một số ngơn ngữ song song.
Đây là các khái niệm quan trọng làm cơ sở cho các vấn đề được đưa ra trong các
chương tiếp sau.
Chương 2: luận văn đưa ra các khái niệm cơ bản về lý thuyết đồ thị, mơ hình
các bài tốn tối ưu và mơ tả các thuật tốn tuần tự kinh điển giải các bài toán tương
ứng, đánh giá độ phức tạp của các thuật toán tuần tự.
Chương 3: Trên cơ sở các thuật tốn đã trình bày trong chương 2 kết hợp với
lý thuyết xử lý song song, luận văn đưa ra một số hướng thiết kế các thuật toán song
song giải các bài toán tối ưu trên mơ hình đồ thị, đánh giá độ phức tạp của các thuật
toán tương ứng.
Kèm theo luận văn là các phần mềm thử nghiệm các thuật toán tuần tự được
viết bằng ngơn ngữ C++.


Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên




2

Chƣơng 1
MỘT SỐ KIẾN THỨC CƠ BẢN VỀ XỬ LÝ SONG SONG
1.1 Khái niệm cơ bản 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 (Xem 0), 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ơ 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, mà hay gọi là xử lý song song (Multiprocessor) 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 (gọi là máy
tính song song - multicomputer).
Trong thời đại thơng tin bùng nổ, con người càng ngày càng trở nên bận rộn
thì nhu cầu của xử lý song song ngày càng được nâng cao nhằm xử lý được một
lượng dữ liệu lớn nhất trong thời gian nhanh nhất có thể. Xử lý song song ngày
càng được quan tâm trên thế giới vì 2 lý do chính sau đây:
- Đạt được hiệu năng cao hơn trong khi tiết kiệm được thời gian và tiền bạc.
Về lý thuyết, càng đầu tư nhiều tài ngun cho một nhiệm vụ nào đó thì càng rút
ngắn được thời gian thực hiện nhiệm vụ đó, đồng thời tiết kiệm được càng nhiều chi

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên





3

phí. Hơn nữa, nhiều hệ thống xử lý song song có thể được xây dựng từ những thành
phần rẻ tiền và phổ biến.
- Khả năng xử lý các bài toán lớn. Nhiều bài tốn trong thực tế địi hỏi tài
ngun tính tốn lớn đến mức khơng một máy tính đơn lẻ nào có thể đáp ứng nổi.
Nhiều lĩnh vực mới như đồ họa máy tính, trí tuệ nhận tạo, phân tích số, v.v. địi hỏi
phải xử lý một khối lượng dữ liệu rất lớn do đó cần phải có những hệ thống máy
tính thật mạnh mới thực hiện được những yêu cầu của thực tế. Những vấn đề về xử
lý ngôn ngữ tự nhiên, nhận dạng, xử lý ảnh ba chiều (3-D), dự báo thời tiết, mơ hình
và mơ phỏng những hệ thống lớn, v.v. đều đòi hỏi phải xử lý dữ liệu với tốc độc rất
cao, với khối lượng dữ liệu rất lớn. Hầu hết những bài toán này, những máy tính xử
lý tuần tự kiểu von Neumann là không đáp ứng yêu cầu.
Mặc dù tốc độ xử lý của các BXL tăng nhiều trong những năm qua, nhưng do
giới hạn về vật lý nên khả năng tính tốn của chúng không thể tăng mãi được. Điều
này dẫn tới là muốn tăng được khả năng tính tốn của các hệ thống máy tính thì
đích cuối cùng là phải khai thác được khả năng xử lý song song của chúng.
Xét về mặt công nghệ, việc xây dựng, quản trị và ứng dụng một hệ thống xử lý
song song cũng không phải dễ dàng. Thơng thường, chi phí phải trả cho việc quản
trị một hệ thống xử lý song song trong 1 năm cịn cao hơn nhiều so với chi phí bỏ ra
để mua cả hệ thống. Ví dụ, một cluster có tốc độ tính tốn 1 TeraFlops có chi phí
vào khoảng 100 nghìn USD, gần bằng chi phí phải trả cho một người quản trị hệ
thống trong một năm.
Nghiên cứu về xử lý song song vì vậy khơng chỉ mang ý nghĩa khoa học, mà
cịn có ý nghĩa thực tiễn rất lớn. Việc nghiên cứu về xử lý song song, từ lý thuyết
cho đến ứng dụng, không chỉ giúp chúng ta nắm được nền tảng cơng nghệ, mà cịn

giúp chúng ta nhìn thấy tiềm năng to lớn của xử lý song song trong cơng nghệ nói
riêng và các lĩnh vực kinh tế quốc dân nói chung.

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên




4

Định nghĩa: Xử lý song song là quá 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
trên những hệ thống đa bộ xử lý.
Sự khác nhau giữa song song với tuần tự:
+ Trong tính tốn tuần tự với một BXL thì 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ì một số BXL cùng kết hợp với nhau để giải
quyết cùng một vấn đề cho nên giảm được thời gian xử lý vì mỗi thời điểm có thể
có nhiều phép toán được thực hiện đồng thời.
Ba yếu tố chính dẫn đến việc xử lý song song:
1. Hiện nay giá thành của phần cứng (CPU) giảm mạnh, 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ý.
2. 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ệ phức hợp có hàng triệu transistor trên một chip.
3. 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.
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.
Các máy tính song song có thể phân thành nhiều loại dựa vào các đặc trưng

của các kiến trúc và thể thực thao tác khác nhau. Cụ thể là có thể dựa vào các chỉ
tiêu về kiểu và số lượng các BXL, sự kết nối giữa chúng, dựa vào sơ đồ truyền
thông và các thao tác vào/ra, v.v.
Phần lớn các hệ điều hành ngày nay đều đã hỗ trợ đa xử lý / đa nhiệm và cho
phép nghiên cứu, khai thác các phương pháp lập trình song song. Vấn đề là chúng ta
phải có nhiều BXL (các đơn vị tính tốn độc lập) cùng hoạt động. Nhưng điều quan

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên




5

trọng là chúng phải tham gia "cùng giải một bài tốn". Nói cách khác, những tiến
trình thực hiện trên mỗi BXL phải kết hợp, trao đổi với nhau để giải quyết một bài
tốn cho trước.
1.2 Các mơ hình máy tính song song
Định nghĩa: Một máy tính song song là tuyển tập các BXL, thường là cùng
một loại, kết nối với nhau theo một cách 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.
Dựa vào các đặc tính về số lượng BXL, số chương trình thực hiện, cấu trúc bộ
nhớ, v.v., Michael Flynn (1966) đã đưa ra cách phân loại nổi tiếng được nhiều
người chấp nhận.
1. Mơ hình SISD (Single Instruction, Single Data Stream - Đơn dòng lệnh,
đơn dòng dữ liệu). Đây thực chất chính là kiến trúc Von Neumann.
2. SIMD (Single Instruction, Multiple Data Stream - Đơn dòng lệnh, đa dòng
dữ liệu). Kiến trúc này bao gồm các bộ xử lý kiểu vectơ cũng như các bộ xử lý song
song cực lớn (MPP).
3. Mơ hình MISD (Multiple Instruction, Single Data Stream - Đa dịng lệnh,

đơn dịng dữ liệu).
4. Mơ hình MIMD (Multiple Instruction, Multiple Data Stream - Đa dòng
lệnh, đa dòng dữ liệu). Kiến trúc này bao gồm các hệ đa vi xử lý truyền thống cũng
như các mạng máy trạm.
Sau đây chúng ta nghiên cứu chi tiết các mô hình trên:
1.2.1. Mơ hình SISD: Đơn luồng lệnh, đơn luồng dữ liệu
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 khi xử lý tuần tự 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.

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên




6

Tín hiệu
điều khiển

Đơn vị
điều khiển

BXL số học
Luồng
kết quả

Luồng lệnh


Luồng
dữ liệu

h

Hình 1.2. Mơ hình của kiến trúc SISD
Mơ hình SISD cịn được gọi là SPSD, đơn chương trình và đơn luồng dữ liệu.
Đây chính là mơ hình máy tính truyền thống kiểu von Neumann.
1.2.2. Mơ hình SIMD: Đơn luồng lệnh, đa luồng 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ý (nhiều hơn một đơn vị) 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 BXL 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, nghĩa là mỗi BXL có luồng dữ liệu riêng.
Đây là kiểu tính tốn lặp lại các đơn vị số học trong CPU, cho phép những đơn vị
khác nhau thực hiện trên những toán hạng khác nhau, nhưng thực hiện cùng một
lệnh. 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. Máy tính vector và các
BXL mảng là mơ hình chủ yếu thuộc loại này. Hình 1-3 mơ tả hoạt động của máy
tính theo mơ hình SIMD, cịn được gọi là SPMD.

Đơn vị điều khiển (CU)

Tín hiệu
điều khiển

Tín hiệu
điều khiển
Phần tử
xử lý 1


Phần tử
xử lý 2

...

Phần tử
xử lý n

Hình 1.3. Mơ hình của kiến trúc SIMD
Mơ hình SIMD cịn được gọi là SPMD, đơn chương trình và đa luồng dữ liệu.
Đây chính là mơ hình máy tính phổ biến có trên thị trường như: ILLIAC IV, DAP
và Connection Machine CM-2.
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên




7

1.2.3. Mơ hình MISD: Đa luồng lệnh, đơn 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 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
hai nhóm:

 Lớp các máy tính yêu cầu những đơn vị xử lý (PU) 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à loại 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.

CU 1

CU 2

Luồng lệnh
1

Phần tử xử
lý 1

Luồng lệnh
2

Phần tử
xử lý 2

.
.
.
CU n

.
.
.

Luồng lệnh

n

Luồng
dữ liệu

Phần tử
xử lý n

Hình 1.4. Mơ hình của kiến trúc MISD
1.2.4. 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 BXL, trong đó mỗi BXL 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 vào được bộ nhớ
chung (global) khi cần, do vậy giảm thiểu được sự trao đổi giữa các BXL trong hệ
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên




8

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, v.v.
Mơ hình của kiến trúc MIMD được mơ tả như hình 1.5.

Luồng lệnh 1


Phần tử
xử lý 1

CU 1

CU 2

Phần tử
xử lý 2

Luồng lệnh 2

.
.
.

.
.
.

CU n

Luồng lệnh n

Phần tử
xử lý n

Luồng dữ
liệu 1
Luồng dữ

liệu 2

Luồng dữ
liệu n

Hình 1.5. Mơ hình của kiến trúc MIMD
Theo sự phân loại của Flynn thì có hai họ kiến trúc quan trọng cho các máy
tính song song đó là SIMD và MIMD. Những kiến trúc khác có thể xếp theo hai
mẫu đó. Mẫu hình các kiến trúc xử lý song song có thể phân chia như hình 1.6.

MIMD

Multiprocessor
Multicomputer
Data Flow Machine

SIMD

Array Processor
Pipelined Vector Processor

MISD

Pipelined Vector Processor
Systolic Array

Hybrid

SIMD-MIMD
MIMD-SIMD


Hình 1.6. Các mẫu hình kiến trúc xử lý song song
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên




9

Những kiến trúc khác nhau có thể tạo ra những khả năng khác nhau cho việc
xử lý song song. Ngay trong kiến trúc tuần tự chúng ta cũng có thể tận dụng đốc độ
cực nhanh của các BXL để thực hiện xử lý song song theo nguyên lý chia sẻ thời
gian và chia sẻ tài nguyên. Tất nhiên đối với những kiến trúc máy tính song song thì
mục đích chính là khai thác triệt để khả năng của kiến trúc song song để viết các
chương trình song song.
1.3 Khái niệm về thuật tốn song song
Một trong các mục đích chính của xử lý song song là nghiên cứu và xây dựng
những thuật tốn thích hợp để cài đặt trên các máy tính song song, nghĩa là phát
triển các thuật tốn song song. Câu hỏi tự nhiên là việc thiết kế một thuật toán song
song như thế nào được gọi là thích hợp cho xử lý song song? Đối với thuật tốn
tuần tự thì chúng ta có thể thống nhất cách đánh giá dựa vào thời gian thực hiện
thuật tốn, khơng gian bộ nhớ và khả năng lập trình, v.v. việc đánh giá thuật tốn
song song thì phức tạp hơn nhiều, ngồi những tiêu chuẩn trên cịn phải bổ sung
thêm những tham số về số BXL, khả năng của các bộ nhớ cục bộ, sơ đồ truyền
thông, và các giao thức đồng bộ hoá, v.v.
Để cài đặt các thuật toá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 ngữ lập trình song song
đang được sử dụng như: Fortran 90, nCUBE C, Occam, C-Linda, PVM với C/C++,
CDC 6600, v.v.
1.3.1 Định nghĩa

Thuật toán song song là một tập các tiến trình hoặc các tác vụ có thể thực hiện
đồng thời và có thể trao đổi dữ liệu với nhau để kết hợp cùng giải một bài toán đặt
ra. Thuật toán song song có thể xem như là một tập hợp các đơn thể độc lập, một số
trong số chúng có thể thực hiện tương tranh trên máy tính song song.
Để thiết kế được các thuật toán song song cần phải trả lời các câu hỏi sau:
 Việc phân chia dữ liệu cho các tác vụ như thế nào?
 Dữ liệu được truy cập như thế nào, những dữ liệu nào cần phải chia sẻ?
 Phân các tác vụ cho các tiến trình (bộ xử lý) như thế nào?
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên




10

 Các tiến trình được đồng bộ ra sao?
Các nguyên lý chính trong thiết kế thuật tốn song song:
1. Các nguyên lý lập lịch: Sử dụng các thuật toán lập lịch cho các bộ xử lý để
giảm tối thiểu thời gian tính tốn.
2. Ngun lý hình ống: Ngun 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 {T 1,T 2,...,T n }, trong đó T i + 1 thực hiện sau khi T i 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.
1.3.2 Các cách tiếp cận trong thiết kế
Có ba cách tiếp cận để thiết kế thuật toán song song:
1. Thực hiện 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 được nhữ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ý.
2. Thiết kế những thuật toán song song mới phù hợp với kiến trúc song song.
3. Xây dựng những thuật toán song song từ những thuật toán song song đã

được xây dựng cho phù hợp với cấu hình tơpơ và môi trường song song thực tế.
Như vậy, cách làm thơng dụng là biến đổi các thuật tốn tuần tự về song song,
hay chuyển từ một dạng song song về dạng song song phù hợp hơn sao vẫn bảo
toàn được tính tương đương trong tính tốn. Do đó, khi biến đổi chúng ta cần trả lời
hai câu hỏi:
1. Kiến trúc nào phù hợp cho bài toán?
2. 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?
1.4 Đánh giá các chƣơng trình song song
Sau đây chúng ta đưa ra cơ sở của phương pháp đánh giá độ phức tạp của
thuật toán song song.
Thời gian thực hiệ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.

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên




11

Trong một hệ thống truyền thông, thời gian truyền thông cũng phải được xem 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à tp gồm hai phần t comp và t comm

t p = tcomp + tcomm
Trong đó, t comp là thời gian tính tốn và t comm - 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 tiến trình thực hiện đồng thời thì tính thời gian thực hiện của tiến
trình phức tạp nhất (thực hiện lâu 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à thao tác cùng một
tốc độ 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 do vậy, 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 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, v.v.
Công thức ước lượng thời gian truyền thông được xác định như sau:

tcomm = t startup + n * tdata
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ố.
+ tdat a là thời gian cần thiết để chuyển một từ dữ liệu (một mục dữ liệu) 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.
Ví dụ: Giả sử cần thực hiện cộng n số trên hai máy tính, trong đó mỗi máy
cộng

n
số với nhau và tất cả các số đó được lưu ở máy tính thứ nhất. Kết quả của
2

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên




12

máy tính thứ hai khi được tính xong sẽ được chuyển về máy tính thứ nhất để nó

cộng hai kết quả bộ phận với nhau. Bài toán này được phát biểu như sau:
1. Máy tính thứ nhất gửi

n
số cho máy tính thứ hai
2

2. Cả hai máy tính cộng

n
số một cách đồng thời
2

3. Máy tính thứ hai chuyển kết quả tính được về máy tính thứ nhất
4. Máy tính thứ nhất cộng hai kết quả để có kết quả cuối cùng.
Thời gian tính tốn (ở bước 2 và 4):

t comp =

n
+1
2

Thời gian truyền thông (ở bước 1 và 3):
tcomm = (t startup +

n
* t ) + (t starup + tdata )
2 data


n
= 2 * t startup + ( + 1) * tdata
2

Độ phức tạp tính tốn là O (n ) và độ phức tạp truyền thông cũng là O (n ) ,
do vậy độ phức tạp nói chung của thuật tốn trên cũng là O (n ) .
1.5. Phân tích và đánh giá thuật toán song song
Đánh giá thuật toán tuần tự có thể căn cứ chủ yếu vào thời gian thực hiện được
tính theo hàm của kích cỡ dữ liệu vào (input). Hàm này được gọi là độ phức tạp tính
tốn thời gian f(n) của thuật tốn và được ký hiệu là O( f (n )) . Một cách hình thức
O(g(x )) được định nghĩa như sau:

Định nghĩa: Một thuật tốn có độ phức tạp tính tốn f (x ) = O(g(x )) Û f (x ) =
= O(g(x ))  Tồn tại số C dương và số nguyên x0 sao cho 0 ≤ f (x ) ≤ C * g(x), với
mọi số lượng dữ liệu vào x ≥ x0.
Hiển nhiên g(x ) , f (x ) là hai hàm có giá trị dương. O(1) ký hiệu cho một hằng
số bất kỳ.

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên




13

Độ 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 toá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 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 tốn song song
bị giới hạn.
Có ba cách định nghĩa khái niệm liên quan đến độ phức tạp của thuật tốn
song song:

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên




14


Định nghĩa 1: Một thuật tốn song song có độ phức tạp tính tốn O(T ) với P
bộ xử lý khi nó thực hiện nhiều nhất là O(T * P ) phép toán cơ sở (định lý Brent).
Định nghĩa 2: Một thuật tốn song song có độ phức tạp tính toán O(T ) sử
dụng rất nhiều bộ xử lý để thực hiện O(e) phép toán cơ sở khi cài đặt với P bộ xử lý
é ù
êp ú
ê ú

e
thì sẽ có độ phức tạp thời gian là O ( ê ú+ T ) .

Định nghĩa 3: Một thuật toán song song có độ phức tạp tính tốn O(T ) với P
ép ù
bộ xử lý có thể cài đặt với ê ú, 1 £ p £ p bộ xử lý thì sẽ có độ phức tạp thời gian là
êp ú
ê ú

O( p * T ) .

Định nghĩa 2 chỉ ra rằng khi số bộ xử lý được sử dụng giảm xuống trong một
phạm vi nhất định thì thuật tốn tiếp tục làm việc nhưng thời gian thực hiện sẽ tăng lên.
Định nghĩa 3 khẳng định rằng có cách để cài đặt thuật toán song song khi số
các bộ xử lý được sử dụng bị giảm xuống.
Mức độ hiệu quả của thuật toán được thể hiện ở mức độ song song của thuật toán.
Mức độ song song của thuật toán là số lượng cực đại các phép tốn độc lập có
thể thực hiện đồng thời ở mỗi thời điểm thực hiện của thuật toán.
Ký hiệu P(W) là độ song song của thuật toán, thì thuật tốn hiệu quả giải để
giải bài tốn có cỡ W là những thuật toán chỉ cần sử dụng nhiều nhất P(W) bộ xử lý.
Ngoài ra, để đánh giá được thuật tốn song song chúng ta cịn phải xét tới hệ

số gia tốc của nó.
Hệ số gia tốc của thuật toán song song sử dụng p bộ xử lý được xác định như sau:
S p = TS / T p

Trong đó
+ T s là thời gian thực hiện tính toán trên một bộ xử lý.
+ T p là thời gian thực hiện tính tốn trên p bộ xử lý.
Với giả thiết là bộ xử lý tuần tự và bộ xử lý song song là như nhau.

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên




15

1.6. Khái niệm chƣơng trình dịch, hệ điều hành
Đối với các hệ thống song song thì một thành phần rất quan trọng là chương
trình dịch song song. Chương trình dịch làm giảm được thời gian thực hiện chương
trình (song song) bằng cách chia nhỏ bài tốn thành các khối cơng việc và những
khối này được xử lý đồng thời bởi nhiều đơn vị xử lý. Một số chương trình chỉ làm
nhiệm vụ phát hiện những khối công việc thực hiện được song song và thực hiện phân
chia các đơn vị chức năng, một số khác tinh tế hơn, có thể lập lịch cho cả bài tốn. Có
ba cách tiếp cận để xây dựng chương trình dịch cho các máy tính song song:
1. Run Time Partitioning and Run Time Scheduling. Cách tiếp cận này khá
phù hợp với một số ứng dụng thực tế. Tuy nhiên, nó có hạn chế là việc lập
lịch và phân hoạch được thực hiện lúc chạy chương trình sẽ làm giảm hiệu
xuất của hệ thống.
2. Compile Time Partitioning and Run Time Scheduling. Đây là mơ hình
chung để xây dựng chương trình dịch cho những đa bộ xử lý. Lập lịch phân

việc được thực hiện lúc chương trình chạy, nhưng việc phân hoạch công
việc thành các khối được thực hiện bởi người lập trình và chương trình
dịch. Theo cách tiếp cận này, sự đồng bộ hóa các tiến trình và truyền thơng
phải được xác định rõ trong hệ thống.
3. Compile Time Partitioning and Compile Time Scheduling. Phân hoạch
công việc và lập lịch được thực hiện ở giai đoạn dịch chương trình. Do vậy,
chương trình dịch loại này địi hỏi phải rất hồn hảo. Nhưng điều này khá
khó, bởi vì rất khó đánh giá được thời gian thực hiện chương trình, đặc biệt
là vấn đề lập lịch trước sẽ khơng thể thực hiện tối ưu được.
Nói chung, cho đến hiện nay khá nhiều chương trình dịch cho các máy tính
song song được xây dựng là cho ngơn ngữ lập trình Fortran.
Ví dụ chương trình dịch Paraphrase (do Kuck viết năm 1984) cho máy tính
Cedar Multiprocessor được phát triển ở Đại học Illinois, sử dụng đồ thị độc lập dữ
liệu để biến đổi chương trình Fortran từ dạng tuần tự sang dạng thích hợp để thực
hiện song song. Chương trình dịch này thực hiện theo hai giai đoạn:
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên




16

1. Giai đoạn 1: thực hiện biến đổi độc lập với máy tính, chuyển chƣơng
trình sang dạng trung gian thể hiện đƣợc dạng song song của mã
chƣơng trình.
2. Giai đoạn 2: thực hiện ánh xạ để chuyển từ dạng trung gian sang kiến
trúc song song của máy tính.
Chương trình dịch Paraphrase được sử dụng khá thành cơng trên máy tính
máy tính các bộ xử lý vector như Cray X/MP, khai thác tốt các khả năng song song
của chương trình Fortran.

Một ví dụ khác là chương trình dịch song song Fortran D (Fox xây dựng năm
1991, Hiranandani cải tiến 1992, 1993). Fortran D mở rộng của Fortran, trong đó
cho phép người lập trình xác định được sự phân rã dữ liệu của chương trình song
song. Hai vấn đề: ánh xạ sử dụng phương pháp gán mảng và ánh xạ sử dụng phân
rã, phân tán dữ liệu đã được giải quyết hiệu quả trong Fortran D.
Hệ điều hành là một chương trình làm nhiệm vụ phối hợp các hoạt động của
máy tính. Hệ điều hành thực hiện các chức chính sau:

 Khởi động hệ thống
 Phân đoạn chương trình và lập lịch cho các tiến trình
 Trao đổi và đồng bộ hóa các tiến trình
 Quản lý và điều hành hệ thống, v.v.
Về mặt khái niệm, mục đích chính của hệ điều hành cho máy tính đơn bộ xử lý
có một chút khác với những hệ cho máy tính đa bộ xử lý. Trong hệ điều hành tập
trung (đơn bộ xử lý), mọi quyết định được thực hiện dựa trên sự hiểu biết về trạng
thái tổng thể và tức thời của cả hệ thống. Ngược lại, hệ điều hành đa bộ xử lý có thể
thực hiện mà khơng cần thiết phải biết trước về trạng thái của hệ thống phân tán.
Nhiệm vụ chính của hệ điều hành đa bộ xử lý là tích hợp các tài ngun tính
tốn và các bộ xử lý trao đổi với nhau thông qua mạng liên kết để tạo thành một hệ
thống nhất làm việc cho hiệu quả.
Nói chung, hệ điều hành đa bộ xử lý cũng giống như hệ điều hành tập trung,
phải chứa các thành phần quản trị hệ thống như: quản trị các tiến trình, quản trị bộ
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên




17

nhớ, quản trị tài nguyên và quản trị các tệp (file). Người ta phân các hệ điều hành

cho các máy tính song song thành ba loại:
1. Những hệ điều hành mở rộng và phát triển từ những hệ đơn bộ xử lý để
chạy được trên những kiến trúc song song, như VMS, UNIX.
2. Những hệ điều hành được thiết kế riêng cho những kiến trúc song song,
như: hệ Hydra cho C.mmp, Medusa cho Cm*, cả hai đều được phat triển ở
Carnegie-Mellon University.
3. Những hệ điều hành tổng hợp được thiết kế để cài đặt được trên những kiến
trúc song song khác nhau, ví dụ MACH Multiprocessor.
Hầu hết các version mới của hệ điều hành UNIX đều thực hiện trên các hệ đa
bộ xử lý. Trong số đó có thể kể ra như Solaris của Sun, HP UNIX của HP, Digital
UNIX của Digital, AIX của IBM, v.v. Những hệ điều hành mới nhất như Window
NT của Microsoft cũng được thiết kế để chạy trên những hệ thống đa bộ xử lý.
1.7. Một số ngơn ngữ lập trình song song
1.7.1. Lập trình song song với OCCAM
Occam là ngơn ngữ lập trình song song được Inmos Company phát triển năm
1988, mục đích chính là để thiết kế và cài đặt các chip được gọi là transputer.
Transputer là một máy tính một chip đơn với một bộ xử lý, bộ nhớ riêng và
bốn kênh vào/ra. Transputer có hai loại 16 bit hoặc 32 bit với tốc độ 10 triệu phép
tính /giây và mỗi kênh có khả năng truyền tải 10 megabit/giây.
Chương trình Occam thường nhiều tiến trình và chúng có thể được ánh xạ
sang một số các transputer bất kỳ để thực hiện song song và trao đổi dữ liệu với
nhau thông qua các kênh vào/ra. Nói chung số lượng các transputer trong mạng có
thể tăng, hoặc giảm và chương trình có thể thực hiện mà khơng cần có sự thay đổi
nào cả.
Occam là ngơn ngữ lập trình bậc cao, được sử dụng để lập trình cho những
hệ thống gồm nhiều máy tính kết nối với nhau, hoặc các hệ phân tán. Tuy nhiên, so
với các ngơn ngữ lập trình bậc cao khác thì Occam cịn thiếu một số đặc tính như hỗ
trợ cơ chế đệ qui, định nghĩa kiểu dữ liệu hay con trỏ.
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên





18

Trong Occam, một hành động có thể thực hiện song song được gọi là một
tiến trình và mỗi câu lệnh cần phải khai báo như một tiến trình. Khi lập trình chúng
ta phải chỉ rõ là các tiến trình sẽ kết hợp với nhau một cách tuần tự hay song song.
Các tiến trình cơ bản trong Occam
Có ba tiến trình nguyên thuỷ trong Occam:
 Tiến trình gán: thay đổi giá trị của các biến
 Tiến trình Input: nhận dữ liệu vào từ các kênh vào (cổng vào)
 Tiến trình Output: gửi dữ liệu ra các kênh ra.
Ví dụ: Giả sử hai tiến trình A và B nhận các dữ liệu vào, tính bình phương của
chúng và gửi cho tiến trình C.
user ? x

Tiến trình A đọc dữ liệu vào cho x từ kênh user

C!x*x

Tiến trình A gửi x2 cho C

user ? y

Tiến trình A đọc dữ liệu vào cho y từ kênh user

C!y*y

Tiến trình A gửi y2 cho C


Các cấu trúc điều khiển
Tiến trình trong Occam cịn được xây dựng từ tổ hợp ba cấu trúc điều khiển
sau để tạo ra những tiến trình phức hợp hơn.
 SEQ: cấu trúc tuần tự, các thành phần của các tiến trình trong đó thực hiện
lần lượt theo thứ tự và tiến trình này kết thúc khi thành phần cuối cùng kết
thúc.
 PAR: cấu trúc song song, các thành phần của các tiến trình trong đó thực
hiện đồng thời và tiến trình này kết thúc khi tất cả các thành phần của nó
kết thúc.
 ALT: cấu trúc tuyển chọn, chọn một trong các thành phần của các tiến
trình để thực hiện nếu nó thoả mãn điều kiện lựa chọn và tiến trình này kết
thúc khi thành phần được lựa chọn kết thúc.
Ngoài ra, cịn có những cấu trúc điều khiển IF, gọi là tiến trình điều kiện để chọn
một tiến trình thành phần khi biểu thức Boolean có giá trị true và cấu trúc lặp

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên




19

WHILE, gọi là tiến trình lặp để thực hiện lặp lại tiến trình thành phần cho đến khi
biểu thức điều kiện Boolean nhận giá trị true.
Ví dụ: Giả sử có hai tiến trình giống nhau cùng nhận dữ liệu vào và cộng
dồn vào tổng.
CHAN In1, In2:
CHAN Out1, Out2:
VAR Sum1, Sum2:

SEQ
Sum1:= 0
Sum2:= 0
PAR
-- Tiến trình thứ nhất
While TRUE
VAR Item1:
SEQ
In1 ? Item1
Sum1:= Sum1 + Item1
Out1 ! Sum1
-- Tiến trình thứ hai
While TRUE
VAR Item1:
SEQ
In2 ? Item2
Sum2:= Sum2 + Item2
Out2 ! Sum2
Sự trao đổi giữa các tiến trình
Trong ví dụ trên, các tiến trình khơng cần trao đổi với nhau vì mỗi tiến trình
đều sử dụng các biến cục bộ của riêng mình. Khi có nhiều tiến trình muốn trao đổi
dữ liệu với nhau thì phải trao đổi với nhau trên cùng một kênh truyền dữ liệu. Một
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên




20

tiến trình gửi dữ liệu ra một kênh truyền và tiến trình kia nhận dữ liệu từ kênh đó.

Trong chương trình Occam, mỗi tiến trình thực hiện trên một bộ xử lý và truyền
thông điệp tới những bộ xử lý lân cận theo kiến trúc hình khối (hình 2-8).
Ví dụ: chương trình đơn giản trong Occam để tính số  sử dụng tích phân
của đường cong 4/(1+x2) trong khoảng 0 và 1. Các dòng 1-3 định nghĩa các hằng. N
là số các đoạn con tối đa để tính tích phân, PROCESS là số các tiến trình được tạo
ra và CHUNK lá số đoạn giao cho mỗi tiến trình. Trong các dịng 6-17 thì các tiến
trình thực hiện song song và sau đó, tiến trình cuối cùng thực hiện các lệnh từ 18-31
để tính tổng và in kết quả.
1. DEF N = 400000:
2. DEF PROCESS = 8:
3. DEF CHUNK = N / PROCESS:
4. CHAN sum[PROCESS]
5. PAR
6. PAR i = [0 FOR PROCESS]
7.

REAL64x, localsum, width:

8.

SEQ

9.

localsum:= 0.0

10. width:= 1.0 / N
11. x:= ((i * CHUNK) + 0.5) * width
12. SEQ i = [0 FOR CHUNK]
13.


SEQ

14.

localsum:=localsum+(4.0/(1.0+(x*x))))

15.

x:= x + width

16.

localsum:= localsum * width

17.

sum[i] ! localsum

18.

REAL64 pi:

19. INT got[PROCESS]:
20. SEQ
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên





×