1. Trang chủ
  2. » Luận Văn - Báo Cáo

Nghiên cứu tính toán lưới và thực nghiệm trên một số thuật toán lý thuyết đồ thị

153 794 2
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 153
Dung lượng 1,91 MB

Nội dung

Nghiên cứu tính toán lưới và thực nghiệm trên một số thuật toán lý thuyết đồ thị

Trang 1

NGHIÊN CỨU TÍNH TOÁN LƯỚI VÀ THỬ NGHIỆM MỘT SỐ THUẬT TOÁN LÝ

THUYẾT ĐỒ THỊ

KHOÁ LUẬN CỬ NHÂN TIN HỌC

TP HCM, NĂM 2005

Trang 2

NGHIÊN CỨU TÍNH TOÁN LƯỚI VÀ THỬ NGHIỆM MỘT SỐ THUẬT TOÁN LÝ

THUYẾT ĐỒ THỊ

KHÓA LUẬN CỬ NHÂN TIN HỌC

GIÁO VIÊN HƯỚNG DẪN

TS TRẦN ĐAN THƯ Th.S NGUYỄN THANH SƠN

NIÊN KHÓA 2001-2005

Trang 3

NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN

Trang 4

NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN

Trang 5

LỜI CẢM ƠN

Chúng em xin bày tỏ lòng biết ơn chân thành nhất đến Thầy Trần Đan Thư

và thầy Nguyễn Thanh Sơn, hai Thầy đã tận tâm hướng dẫn, giúp đỡ chúng em trong suốt thời gian thực hiện luận văn này

Chúng con xin gửi tất cả lòng biết ơn sâu sắc và sự kính trọng đến ông bà, cha mẹ, cùng toàn thể gia đình, những người đã nuôi dạy chúng con trưởng thành đến ngày hôm nay

Chúng em cũng xin chân thành cám ơn quý Thầy cô trong Khoa Công nghệ thông tin, trường Đại học Khoa học Tự nhiên Tp.Hồ Chí Minh đã tận tình giảng dạy, hướng dẫn, giúp đỡ và tạo điều kiện cho chúng em thực hiện tốt luận văn này

Xin chân thành cám ơn sự giúp đỡ, động viên và chỉ bảo rất nhiệt tình của các anh chị và tất cả các bạn, những người đã giúp chúng tôi có đủ nghị lực và ý chí để hoàn thành luận văn này

Mặc dù đã cố gắng hết sức, song chắc chắn luận văn không khỏi những thiếu sót Chúng em rất mong nhận được sự thông cảm và chỉ bảo tận tình của quý Thầy Cô và các bạn

TP.HCM, 7/2005

Nhóm sinh viên thực hiện Huỳnh Bá Thanh Tùng - Trần Việt Cường

Trang 6

LỜI NÓI ĐẦU

Nhân lọai ngày nay đang chứng kiến sự phát triển mạnh mẽ của ngành Công nghệ Thông tin, một trong những nghành mũi nhọn của nhiều quốc gia trên thế giới Sự phát triển vượt bậc của nó là kết quả tất yếu của sự phát triển kèm theo các thiết bị phần cứng cũng như phần mềm tiện ích

Sự phát triển đó đã kéo theo rất nhiều nghành khác phát triền theo, trong đó

có lĩnh vực nghiên cứu khoa học Tuy công nghệ ngày càng phát triển, tốc độ xử

lý của các thiết bị cũng không ngừng tăng cao, nhưng nhu cầu tính toán của con người vẫn còn là rất lớn Hiện nay vẫn còn rất nhiều vấn đề mà các nhà khoa học cùng với khả năng tính toán của các máy tính hiện nay vẫn chưa giải quyết được hay giải quyết được nhưng với thời gian rất lớn

Các vấn đề đó có thể có thể là :

• Mô hình hóa và giả lập

• Xử lý thao tác trên các dữ liệu rất lớn

• Các vấn đề “grand challenge” (là các vấn đề không thể giải quyết trong thời gian hợp lý)

Lời giải cho những vấn đề này đã dẫn đến sự ra đời của các thế hệ siêu máy tính Tuy nhiên việc đầu tư phát triển cho các thiết bị này gần như là điều quá khó khăn đối với nhiều người, tổ chức, trường học… Chính vì lẽ đó mà ngày nay người ta đang tập trung nghiên cứu cách cách sử dụng các tài nguyên phân bố một cách hợp lý để tận dụng được khả năng tính toán của các máy tính đơn Những giải pháp này được biết đến với nhiều tên gọi khác nhau như meta-computing, salable-computing, global- computing, internet computing và gần nhất hiện nay là peer to peer computing hay Grid computing

Đây là phương pháp nhằm tận dụng khả năng của các máy tính trên toàn mạng thành một máy tính “ảo” duy nhất, nhằm hợp nhất tài nguyên tính toán ở nhiều nơi trên thế giới để tạo ra một khả năng tính toán khổng lồ, góp phần giải

Trang 7

Hình ảnh minh họa cho các tài nguyên phân phối

Nhận thấy được nhu cầu phát triển ấy, nhóm chúng em đã quyết định chọn

thực hiện đề tài “Nghiên cứu tính toán lưới và thực nghiệm trên một số thuật

toán lý thuyết đồ thị”

Mục tiêu của đề tài đề ra tìm hiểu được về tính toán lưới qua đó tận dụng các kiến thức có được để có thể cài đặt một số thuật toán trên lý thuyết đồ thị, nhằm có thể giải quyết các vấn đề tìm đường đi khi số đỉnh tương đối lớn…

Các nội dung chính:

• Nghiên cứu tính toán lưới

Trang 8

Tìm hiểu các môi trường hỗ trợ

Tìm hiểu lập trinh song song và phân tán

Cài đặt một số thuật toán với kiến thức có được

Nội dung của luận văn được chia làm 6 chương :

Chương 1 Giới thiệu : Giới thiệu tổng quan về tính toán lưới, khái niệm

lịch sử phát triển

Chương 2 Tính toán song song và phân bố : Trình bày về các kiến trúc,

mô hình xử lý song song và phân bố, cách thức xây dựng chương trình, thiết kế thuật toán…

Chương 3 Các môi trường hỗ trợ tính toán lưới : Tìm hiểu về các môi

trường đang được sử dụng và nghiên cứu hiện nay trên thế giới

Chương 4 Mô hình lập trình truyền thông điệp - MPI : Mô hình cụ thể

được dùng để phát triển ứng dụng MPI

Chương 5 Thử nghiệm các thuật toán lý thuyết đồ thị : Cách thức xây

dựng chương trình , các khái niệm lý thuyết, thực nghiệm thực tế …

Chương 6 Kết luận – Hướng phát triển : Nêu các kết quả đã đạt được,

một số vấn đề còn tồn tại, định hướng mục tiêu mở rông phát triển đề tài trong tương lai

Trang 9

Mục lục

Chương 1 Giới thiệu 14

1.1 Các khái niệm 14

1.2 Những thách thức đối với tính toán lưới 17

Chương 2 Tính toán song song và phân bố 18

2.1 Khái niệm 18

2.2 Nền tảng tính toán song song và phân bố 19

2.2.1 Kiến trúc xử lý song song và phân bố 19

2.2.2 Tổ chức vật lý của các nền tảng song song và phân bố 26

2.3 Một số mô hình lập trình song song thông dụng 27

2.3.1 Mô hình chia sẽ không gian bộ nhớ 27

2.3.2 Mô hình truyền thông điệp 28

2.4 Cách thức xây dựng một chương trình song song và phân bố 30

2.4.1 Các thuật ngữ căn bản 31

2.4.2 Thiết kế thuật toán song song 33

2.4.3 Một số phương pháp tối ưu 46

2.4.4 Các mô hình thuật toán song song 50

Chương 3 Các môi trường hỗ trợ tính toán lưới 55

3.1 Giới thiệu 55

3.2 Các vấn đề khi lập trình luới 56

3.2.1 Tính mang chuyển, tính khả thi và khả năng thích ứng 56

3.2.2 Khả năng phát hiện tài nguyên 57

3.2.3 Hiệu năng 57

3.2.4 Dung lỗi 58

3.2.5 Bảo mật 58

3.2.6 Các siêu mô hình 59

3.3 Tồng quát về các môi trường hỗ trợ 59

Trang 10

3.3.1 Một số môi trường Grid 59

3.3.2 Những mô hình lập trình và công cụ hỗ trợ 63

3.3.3 Môi trường cài đặt 69

3.4 Những kỹ thuật nâng cao hỗ trợ lập trình 81

3.4.1 Các kỹ thuật truyền thống 81

3.4.2 Các kỹ thuật hướng dữ liệu 82

3.4.3 Các kỹ thuật suy đoán và tối ưu 83

3.4.4 Các kỹ thuật phân tán 83

3.4.5 Nhập xuất hướng Grid 84

3.4.6 Các dịch vụ giao tiếp cấp cao 84

3.4.7 Bảo mật 86

3.4.8 Dung lỗi 86

3.4.9 Các siêu mô hình và hệ thống thời gian thực hướng Grid 88

3.5 Kết luận 89

Chương 4 Mô hình lập trình truyền thông điệp - MPI 91

4.1 Các khái niệm cơ bản 92

4.2 Cấu trúc chương trình MPI 95

4.3 Trao đổi thông tin điểm-điểm 96

4.3.1 Các thông tin của thông điệp 97

4.3.2 Các hình thức truyền thông 97

4.3.3 Giao tiếp blocking 99

4.3.4 Giao tiếp non-blocking 103

4.4 Trao đổi thông tin tập hợp 109

4.4.1 Đồng bộ hóa 109

4.4.2 Di dời dữ liệu trong nhóm 109

4.4.3 Tính toán gộp 113

4.5 Các kiểu dữ liệu 118

4.5.1 Những kiểu dữ liệu đã được định nghĩa 118

Trang 11

4.5.3 Pack và UnPack 123

4.6 Quản lý nhóm và communicator 124

4.6.1 Tổng quan 124

4.6.2 Nguyên tắc sử dụng 126

Chương 5 Thử nghiệm các thuật toán lý thuyết đồ thị 129

5.1 Các khái niệm cơ bản 129

5.2 Dijkstra 130

5.2.1 Tuần tự 130

5.2.2 Song song 134

5.2.3 Thực nghiệm chương trình 136

5.3 Prim 138

5.3.1 Tuần tự 138

5.3.2 Song song 141

5.3.3 Thực nghiệm chương trình 143

5.4 Bellman – Ford 143

5.4.1 Tuần tự 143

5.4.2 Song song 147

Chương 6 Kết luận – Hướng phát triển 151

6.1 Kết luận 151

6.2 Hướng phát triển 151

Tài liệu tham khảo 153

Trang 12

Danh sách hình

Hình 1-1 : 3 tầng của Grid 16

Hình 2-1 : Phân lọai hệ thống máy tính theo Flynn-Johnson 20

Hình 2-2 : Kiến trúc SISD 20

Hình 2-3 : Kiến trúc SIMD 21

Hình 2-4 : Kiến trúc MISD 23

Hình 2-5 : Kiến trúc MIMD 24

Hình 2-6 : Mô hình chía sẽ không gian bộ nhớ 28

Hình 2-7 : Mô hình truyền thông điệp 29

Hình 3-1 : mô hình NetSolve 60

Hình 3-2 : Các thành phần của Globus 63

Hình 4-1 : Các tiến trình tạo lập trên mô hình lập trình MPI 92

Hình 4-2 : Cách thức truyền thông của các process 94

Hình 4-3 : Blocking và non-blocking 94

Hình 4-4 : Group, communicator và rank 95

Hình 4-5 : Cấu trúc của chương trình MPI 96

Hình 4-6 : Giao tiếp blocking 99

Hình 4-7 : Thứ tự các xử lý 102

Hình 4-8 : Cách thức xử lý tiến trình 103

Hình 4-9 : Giao tiếp non-blocking 103

Hình 4-10 : Broadcast dữ liệu 110

Hình 4-11 : Ví dụ hàm Scatter 111

Hình 4-12 : Hàm MPI_Gather 112

Hình 4-13 : Hàm MPI_Allgather 112

Hình 4-14 : Hàm MPI_Alltoall 113

Hình 4-15 : Hàm MPI_Reduce 114

Hình 4-16 : Sử dụng 8 xử lý để tính giá trị tuyệt đối 116

Hình 4-17 Hàm Mpi-Allreduce 117

Hình 4-18 : Hàm MPI_Reduce_scatter 117

Trang 13

Hình 4-20 : MPI_Type_contiguous 120

Hình 4-21 : MPI_Type_vetor 121

Hình 4-22 : MPI_Type_indexed 122

Hình 4-23 : MPI_Type_struct 122

Hình 5-1 Thuật toán Dijkstra tuần tự 134

Hình 5-1.1 131

Hình 5-1.3 132

Hình 5-1.4 133

Hình 5-1.5 133

Hình 5-1.6 134

Hình 5-2 : Thuật toán Dijkstra song song 135

Hình 5-3 Thuật toán Prim tuần tự 141

Hình 5-3 : Thuật toán Prim song song 142

Hình 5-4: Thuật toán Bellman-Ford tuần tự 145

Hình 5-5 : Thuật toán Bellman-Ford song song 149

Trang 14

dự án nghiên cứu này đã nêu ra tiềm năng thực sự của mạng máy tính, cùng với cơ

sở phần mềm và tin học để phát triển nó xa hơn

Hệ thống đa bộ xử lý (Multiprocessor Systems - MPs), Cluster, Grids là các

ví dụ của kiến trúc tính toán phân tán Trong MPs, các bộ xử lý được kết hơp chặt chẽ với nhau, thông qua bộ nhớ chia sẽ chung và đường truyền kết nối rất cao Ví

dụ như là PVPs (Parallel Vector Processors), chúng hầu như rất thích hợp cho tính

Trang 15

toán hiệu năng cao, như là các ứng dụng song song dựa vào trao đổi thông điệp tốc

độ cao giữa các tiến trình song song

Trong khi đó Cluster lại là các máy tính đơn hay đa bộ xử lý được kết hợp tương đối với nhau thông qua đường mạng, vì thế nó chậm hơn từ 1 đến 2 lần so với kết nối MP Ví dụ như cluster Beowulf chạy Linux, hay TCF (Technical Compute Farm) của Sun chạy hệ điều hành Solaris/TM Chúng được sử dụng cho các tính toán số lượng lớn, phân phối các tác vụ tính toán (thường là không song song) cho các bộ xử lý, rồi thu thập lại các kết quả tính toán vào kết quả toàn cục Các tính toán này có thể là việc hiển thị hàng ngàn khung hình để làm phim hay là giả lập việc kiểm tra và thiết kế để xây dựng thế hệ tiếp theo của chip VLSI Hay như trong công nghệ sinh học, đó là việc cắt lớp hàng trăm ngàn chuỗi gen

Trong khi MPs và Cluster chỉ là các hệ thống đơn, thường là trong một domain đơn Grid điện toán bao gồm các cluster của mạng các MPs hay/và cluster, nằm trên nhiều domain khác nhau, phân bố ở nhiều phòng ban, xí nghiệp hay thậm chí là trên mạng Internet Về bản chất, những grid có một độ phức tạp cao hơn, đặc biệt là ở tầng trung gian, trong việc thực thi, quản lý, và sử dụng các tài nguyên tính toán phân tán, và ở tầng ứng dụng là việc thiết kế, phát triển, chạy các phần mềm để triển khai grid một cách hiệu quả

Tóm lại Grid là một kiến trúc tính toán phân tán cho phép chuyển giao các tài nguyên lưu trữ và tính toán như thể là một dịch vụ trên Internet Đây là bước phát triển tiếp theo về cơ sở hạ tầng kỹ thuật, cho phép kết nối các máy tính phân tán, các thiết bị lưu trữ, các thiết bị di động, các thiết bị di động, các công cụ, cơ

sở dữ liệu, và các ứng dụng phần mềm, và cung cấp cách thức truy cập duy nhất đến cộng đồng người dùng để cho phép tính toán, trao đổi thông tin và cộng tác Một số hệ thống grid hiện tại như là NASA Information Power Grid (IPG); DoD Distance Computing và NetSolve cho chia sẽ và khai thác phần mềm toán học; Nimrod cho chia sẽ tài nguyên trên phạm vi trường học; SETI@Home cho tìm

Trang 16

kiếm trí thông minh ngòai trái đất; hay là APGrid để kết nối các trung tâm máy tính ở vành đai Châu Á Thái Bình Dương trong tương lai gần

Hình 1-1 : 3 tầng của Grid Grid là một cơ sở hạ tầng về phần cứng lẫn phần mềm cung cấp truy cập phụ thuộc, thích hợp, rộng khắp và chi phí thấp vào các khả năng tính toán Trong một tương lai không xa, những grid này sẽ được các kỹ sư, nhà khoa học, khoa học thực nghiệm, công ty, tổ chức, môi trường, giáo dục và đào tạo, khách hàng,

… sử dụng rộng rãi Chúng sẽ dành riêng cho tính toán theo yêu cầu, tính toán trên thông tin nhạy cảm, tính toán cộng tác, và siêu tính toán, dựa trên cơ sở của khách hàng/nhà cung cấp

Ngày nay chúng ta đang thấy những nỗ lực đầu tiên nhằm khai thác một cách có hệ thống các nguồn tài nguyên tính toán lưới trên mạng Internet Những

dự án này được gọi là peer-to-peer computing, như SETI@home, Distributed.Net

và Folderol, cho phép người dùng Internet tải về các dữ liệu khoa học, chạy trên các máy cá nhân theo chu trình xử lý chia sẽ, và gửi lại kết quả cho cơ sở dữ liệu trung tâm Gần đây có một dự án ở một trường đại học, được gọi là Compute Power Market, được xây dựng nên nhằm phát triển các kỹ thuật phần mềm cho phép tạo lập những Grid, mà ở đó bất cứ ai cũng có thể mua hay bán khả năng khả năng tính toán giống như cách sử dụng điện hiện nay

Trang 17

1.2 Những thách thức đối với tính toán lưới

Hầu hết các kỹ thuật phức tạpbên dưới dành cho Grid hiện nay đang được tiếp tục phát triển Các môi trường Grid mẫu tồn tại giống như các dự án Globus

và Legion Đồ án EcoGrid thì đang nghiên cứu cách thức quản lý tài nguyên, và các khối xây dựng như vậy đang tồn tại trong trình quản lý tài nguyên mang tính thương mại của phần mềm Sun Grid Engine

Diễn đàn Grid (GGF – Global Grid Forum), được thành lập vào năm 1998,

đã tập hợp được hàng trăm các nhà khoa học để cùng nhau nghiên cứu và thảo luận về một kiến trúc Grid chung Trong đó vẫn còn tồn tại một số thách thức sau:

• Phát triền phần mềm ứng dụng cho Grid

• Chỉ ra và truy cập các nguồn tài nguyên tính toán thích hợp trên môi trường phân tán

• Định nghĩa những giao tiếp chuẩn cho phép giao tiếp giữa các khối Grid với nhau, nhằm đáp ứng nhu cầu phát triển ứng dụng

• Bảo đảm các truy cập được xác nhận và truyền dữ liệu an toàn

• Cung cấp các dịch vụ cho phép theo dõi, quảng cáo và kết xuất báo cáo

• Thiết kế các nghi thức mạng cho việc trao đổi và định dạng thông điệp

Trang 18

Ngoài ra nó còn nhằm giải quyết các lọai vấn đề cần tốc độ xử lý cao như:

• Mô hình hóa và giả lập

Mô hình các mẫu DNA

Mô hình hóa chuyển động của các phi hành gia

Trang 19

2.2 Nền tảng tính toán song song và phân bố

Trong phần này chúng ta sẽ xem xét cách tổ chức logic và vật lý của các nền tảng song song và phân tán Cách tổ chức logic liên quan đến quan điểm của người lập trình (kiến trúc xử lý song song và phân bố) trong khi cách tổ chức vật

lý liên quan đến cách cơ cấu thực sự của các phần cứng bên dưới Trong tính toán song song thì từ quan điểm của người lập trình gồm 2 thành phần chính quan trọng

đó là cách thức thể hiện các tác vụ song song (cấu trúc điều khiển) và những phương pháp xác định tương tác giữa các tác vụ này (mô hình giao tiếp)

2.2.1 Kiến trúc xử lý song song và phân bố

Máy tính song song có thể được chia theo 2 lọai chính là : dòng điều khiển (control flow) và dòng dữ liệu (data flow) Máy tính song song dòng điều khiển dựa chủ yếu theo các nguyên tắc của máy tính Von Neumann, ngọai trừ nhiều dòng điều khiển có thể thực hiện vào bất cứ thời gian nào Máy tính song song dòng dữ liệu , đôi khi được biết đến là “phi Von Neumann”, thì hoàn toàn khác biệt ở chỗ nó không có con trỏ trỏ tới các chỉ thị hiện hành hay trung tâm điều khiển Ở đây chúng ta chỉ tập trung vào các máy tính song song dòng điều khiển

Năm 1966, M.J.Flynn đã phân chia các hệ thống máy tính dựa trên dòng chỉ thị và dòng điều khiển thành 4 loại sau:

• SISD (Single Instruction stream, a Single Data stream)

• SIMD (Single Instruction stream, Multiple Data streams)

• MISD (Multiple Instruction streams, a Single Data stream)

• MIMD (Multiple Instruction streams, Multiple Data streams)

Phân theo mức độ hay được sử dụng:

MIMD > SIMD > MISD

Trang 20

Hình 2-1 : Phân lọai hệ thống máy tính theo Flynn-Johnson

2.1.1 SISD

Hình 2-2 : Kiến trúc SISD Kiến trúc này tương tự với kiến trúc Von Neumann Một đơn vị điều khiển tiếp nhận một chỉ thị đơn từ bộ nhớ, sau đó đưa vào cho bộ xử lý thực thi trên một đơn vị dữ liệu được chỉ ra trong chỉ thị nhận được, và cuối cùng là đưa kết quả nhận được vào bộ nhớ

2.1.2 SIMD

Hầu hết các máy tính song song ban đầu đều được thiết kế theo kiến trúc SIMD Trong kiến trúc này, một đơn vị xử lý trung tâm sẽ thông dịch và quảng bá các tín hiệu điều khiển thích hợp cho các bộ xử lý theo chiều kim đồng hồ Từng

bộ xử lý sẽ thực thi các chỉ thị một cách đồng thời, và chúng cũng có quyền không

Trang 21

tiếp nhận trên các chỉ thị nào đó Sự phổ biến của kiến trúc SIMD là do tính năng của các ứng dụng song song ban đầu và từ yêu cầu của nền kinh tế Theo quan điểm của người dùng thì các ứng dụng sử dụng kiến trúc SIMD thì dễ dàng được lập trình hơn và tận dụng hiệu quả hơn các thiết bị phần cứng

Hình 2-3 : Kiến trúc SIMD Bên trong SIMD, tồn tại hai lựa chọn thiết kế cơ bản sau:

1 SIMD đồng bộ và bất đồng bộ. Trong một máy SIMD, từng bộ xử lý

có thể thực thi hay bỏ qua các chỉ thị được quảng bá dựa vào trạng thái cục bộ của nó hay những điều kiện phụ thuộc vào dữ liệu Tuy nhiên

Trang 22

điều này có thể dẫn đến xử lý một vài tính toán điều kiện không hiệu quả Một cách giải quyết khả thi là sử dụng phiên bản bất đồng bộ của

S1IMD, được biết đến là SPMD (Single Program Multiple Data), trong

đó từng bộ xử lý sẽ chạy một bản sao của chương trình chung Điểm thuận lợi của SPMD là trong lúc tính toán biểu thức điều kiện “if-then-else”, từng bộ xử lý sẽ chỉ thực hiện ở nhánh thích hợp mà không mất thời gian cho các chi phí tính toán khác

2 Chip SIMD tùy chọn hay thống nhất (commodity) Một máy SIMD có thể được thiết kế dựa trên những thành phần thống nhất hay là

từ những con chip tùy chọn Trong cách tiếp cận thứ nhất thì các thành phần có xu hướng rẻ hơn do sản xuất hàng loạt Tuy nhiên những thành phần mang mục đích chung như vậy có thể chứa các yếu tố không cần thiết cho một thiết kế cụ thể nào đó Những thành phần thêm vào có thể làm phức tạp việc thiết kế, sản xuất và kiểm thử các máy SIMD và cũng

có thể đem lại khiếm khuyết về tốc độ xử lý Còn các thành phần tùy chọn thì nhìn chung hỗ trợ tốt hơn cho thực thi tuy nhiên nó cũng dẫn đến chi phí cao hơn cho việc phát triển Khi việc tích hợp nhiều bộ xử lý cùng với bộ nhớ dư dật trên một con chip VLSI đơn trở nên khả thi, thì việc kết hợp ưu điểm của 2 cách tiếp cận trên là hoàn toàn có thể

2.1.3 MISD

Mô hình này hầu như không thấy nhiều trong các ứng dụng Một trong những lý do là bởi vì hầu hết các ứng dụng không thế áp dụng một cách dễ dàng vào kiến trúc MISD, điều này dẫn đến việc thiết kế ra một kiến trúc để thỏa mãn cho một mục đích chung là điều không thể Tuy nhiên có thể áp dụng các bộ xử lý song song kiểu MISD vào trong một ứng dụng cụ thể nào đó

Trang 23

Hình 2-4 : Kiến trúc MISD Trong hình trên là ví dụ về một bộ xử lý song song với kiến trúc MISD Một dòng dữ liệu đơn đi vào một máy tính gồm 5 bộ xử lý Nhiều phép biến đổi được thực hiện trên từng đơn vị dữ liệu trước khi nó được chuyển sang một (hay nhiều) bộ xử lý khác Các đơn vị dữ liệu kế tiếp có thể đi qua các phép biến đổi khác do điều kiện độc lập dữ liệu của các dòng chỉ thị hay do các thẻ điều khiển đặc biệt được truyền cùng với dữ liệu Chính vì vậy mà cách tổ chức theo kiến trúc MISD có thể được xem như là một hệ thống ống lệnh cấp độ cao và phức tạp với nhiều đường dẫn và trong đó từng giai đọan có thể được lập trình riêng biệt

2.1.4 MIMD

Được tiên đoán bởi các doanh nghiệp vào thập niên 90, mô hình MIMD gần đây đã trở nên khá phổ biến Lý do cho sự thay đổi này là vì tính uyển chuyển cao của kiến trúc MIMD và bởi khả năng tận dụng được những ưu điểm của các bộ vi

xử lý được sản xuất hàng lọat (commodity microprocessors), vì thế tránh được những vòng phát triển dài dòng và qua đó có thể được phát triển cùng với sự cải thiện của các bộ xử lý Các máy tính MIMD được áp dụng rất hiệu quả cho các ứng dụng song song mà vấn đề của nó được phân rã từ trung bình cho đến tốt (medium- to coarse-grain parallel applications).Ưu điểm của các máy tính MIMD

Trang 24

Hình 2-5 : Kiến trúc MIMD

Trang 25

Bên trong kiến trúc MIMD, tồn tại 3 loại vấn đề cơ bản hay còn được gọi là cách lựa chọn thiết kế hiện vẫn là chủ đề đang được tranh cãi trong cộng đồng các nhà nghiên cứu

1 MPP – massively or moderately parallel processor Việc xây dựng một bộ xử lý song song từ một số lượng nhỏ các bộ xử lý mạnh mẽ hay

từ một số lượng rất lớn các bộ xử lý bình thường (một “bầy voi” hay là một “đàn kiến”) thì cách nào sẽ hiệu quả hơn ? Theo luật của Amdahl thì cách đầu tiên thích hợp hơn cho những phần tuần tự của một tính toán, trong khi cách tiếp cận thứ hai sẽ làm tăng tốc hơn nữa những phần mang tính song song Không thể đưa ra một câu trả lời chung cho câu hỏi này, sự lựa chọn tốt nhất tùy thuộc vào loại công nghệ và ứng dụng đang được sử dụng

2 MIMD “chặt chẽ” hay “lỏng lẻo”. Cách tiếp cận nào tốt hơn cho việc tính toán hiệu năng cao, bằng cách sử dụng đa bộ xử lý được thiết

kế đặc biệt trên nhiều máy tính hay là tập hợp của những máy trạm bình thường được kết nối với nhau bởi các hệ thống mạng “tiện nghi” (như là Ethernet hay ATM) và những tương tác nào sẽ được kết nối với nhau bằng hệ thống phần mềm đặc biệt và các hệ thống tập tin phân tán? Cách tiếp cận thứ hai đôi khi được biết đến là mạng của các máy trạm

(network of workstations hay là NOW) hay là tính toán cluster, đã được

sử dụng rộng rãi trong những năm gần đây Tuy nhiên vẫn còn nhiều vấn đề mở còn tồn tại nhằm phát huy tối đa khả năng của những kiến trúc có nền tảng là mạng Thiết bị phần cứng, hệ thống phần mềm, và những khía cạnh ứng dụng của NOW đang được đầu tư tìm hiểu bởi một số lượng lớn các nhóm ngiên cứu Một cách tiếp cận trung gian là kết hợp các cluster những bộ xử lý thông qua môi trường mạng Điều này về cơ bản là một phương pháp phân nhánh, đặc biệt thích hợp khi

có một sự truy cập rất lớn đến dữ liệu cục bộ

Trang 26

3 Truyền thông điệp tường minh hay chia sẽ bộ nhớ ảo Lọai nào sẽ tốt hơn, cho phép người dùng chỉ ra tất cả các loại thông điệp sẽ được truyền giữa các bộ xử lý hay là cho phép họ lập trình ở một cấp độ trừu tượng cao hơn, cùng với các thông điệp cần thiết tự động được phát sinh bởi hệ thống phần mềm? Câu hỏi này về cơ bản là tương tự với câu được hỏi trong những ngày đầu của những ngôn ngữ lập trình cấp cao

và bộ nhớ ảo Tại một vài thời điểm trong quá khứ, việc lập trình bằng hợp ngữ và thực hiện trao đổi giữa bộ nhớ chính và bộ nhớ phụ có thể đem lại hiệu quả cao hơn Tuy nhiên, do ngày nay các phầm mềm đã đạt đến mức quá phức tạp, các trình biên dịch cùng với hệ điều hành cũng

đã quá cấp cao đến nỗi việc tối ưu các chương trình bằng tay không còn

là điều gì quá khó Tuy nhiên chúng ta vẫn chưa ở thời điểm xử lý song song đáng kể, và việc che giấu cấu trúc giao tiếp tường minh giữa các máy tính song song ra khỏi người lập trình sẽ đem lại hiệu năng thực thi rất đáng kể.

2.2.2 Tổ chức vật lý của các nền tảng song song và phân bố

Trong phần này chúng ta sẽ chỉ mô tả một máy tính song song lý tưởng là PRAM Đây là một cách mở rộng tự nhiên của mô hình tính toán tuần tự (Random Access Machine hay là RAM) bao gồm p bộ xử lý và một vùng nhớ toàn cục có kích thước không giới hạn và được truy cập từ tất cá các bộ xử lý Tất cả chúng đều có sử dụng cùng chung một không gian địa chỉ Các bộ xử lý có thể cùng chia

sẽ một đồng hồ chung nhưng cũng có thể thực thi các chỉ thị khác nhau trên cùng

một chu kỳ Mô hình này được biết đến là parallel random access machine

(PRAM) Tùy thuộc vào cách thức truy cập bộ nhớ, PRAM được phân thành 4 loại sau

1 Toàn quyền đọc - Toàn quyền ghi (exclusive-read, exclusive write)

EREW Trong loại này, truy cập vào vùng nhớ là toàn quyền Không có

Trang 27

thao tác đọc ghi nào được cho phép Đây là mô hình PRAM không chắc chắn nhất, chỉ hỗ trợ truy cập đồng thời vào bộ nhớ một cách tối thiểu

2 Đồng thời đọc – Toàn quyền ghi (concurrent read, exclusive write)

CREW Cho phép nhiều thao tác đọc cùng lúc trên cùng một vùng nhớ,

tuy nhiên nhiều thao tác ghi chỉ thực hiện theo tuần tự

3 Toàn quyền đọc – Đồng thời ghi (exclusive read, concurrent write)

ERCW Cho phép nhiều thao tác ghi cùng lúc trên cùng một vùng nhớ,

tuy nhiên nhiều thao tác đọc chỉ thực hiện theo tuần tự

4 Đồng thời đọc – Đồng thời ghi (concurrent read, concurrent write)

CRCW Trong loại này, cho phép nhiều thao tác đọc ghi đồng thời trên

cùng vùng nhớ chung Đây là mô hình PRAM có nhiều ưu điểm nhất Việc có nhiều thao tác đọc cùng một lúc không làm ảnh hưởng đến tính nhất quán của chương trình Tuy nhiên khi có nhiều thao tác ghi đồng thời thì lại có ảnh hưởng lớn, vì thế có nhiều cách thức được đặt ra để giải quyết vấn đề đó:

• Chung (common), thao tác ghi cùng lúc chỉ được thực hiện nếu tất cả các bộ xử lý đều muốn ghi một giá trị như nhau

• Tùy ý (arbitrary), chỉ cho phép một bộ xử lý bất kỳ được ghi

• Ưu tiên (priority), tất cả các bộ xử lý được tổ chức theo một danh sách

ưu tiên được xác định trước, và bộ xử lý có quyền cao nhất sẽ có quyền ghi

• Tổng hợp (sum), trong đó giá trị tổng của các giá trị cần ghi sẽ được ghi

2.3 Một số mô hình lập trình song song thông dụng

2.3.1 Mô hình chia sẽ không gian bộ nhớ

Lập trình song song tường minh thường yêu cầu chỉ ra cụ thể các tác vụ song song cùng với các tương tác giữa chúng Những tương tác này có thể ở trong dạng đồng bộ giữa các tiến trình đồng thời hay là sự giao tiếp giữa các kết quả trung gian Trong kiến trúc chia sẽ không gian bộ nhớ, giao tiếp giữa các tiến trình

Trang 28

được chỉ ra là ngụ ý vì tất cả các bộ xử lý đều có quyền truy cập vào một vài (hay tất cả) các bộ nhớ Do đó, mô hình lập trình cho các máy tính chia sẽ không gian địa chỉ tập trung chủ yếu vào các cách thức để thực thi đồng thời, đồng bộ hóa và những cách để làm giảm sự quá tải do tương tác

Các mô hình lập trình chia sẽ không gian địa có thể khác nhau về cách thức chia sẽ dữ liệu, mô hình đồng thời, và hỗ trợ đồng bộ hóa Các mô hình giả sử rằng tất cả các dữ liệu của tiến trình đều mặc định là không được truy cập, trừ khi

nó cho phép làm điều đó (sử dụng các hàm gọi của hệ thống UNIX như shmat và shmget) Mặc dù đây là một yếu tố quan trọng nhằm bảo mật trong các hệ thống

đa người dùng, tuy nhiên khí chúng cùng nhau hợp tác để giải quyết cùng một vấn

đề thì điều này là không còn cần thiết Các chi phí do bảo vệ dữ liệu gia tăng chỉ làm cho các tiến trình ít thích hợp hơn cho lập trình song song Ngược lại, các tiến trình và tiểu trình giả sử toàn bộ bộ nhớ là toàn cục, và chúng sẽ thực hiện trao đổi thông tin với nhau một cách tường minh thông qua đọc và ghi lên biến chia sẽ

Hình 2-6 : Mô hình chía sẽ không gian bộ nhớ

Vì các tiến trình đều có quyền đọc và ghi lên vùng nhớ chung vào cùng một thời điểm nên ta cần phải có một cơ chế đồng bộ hóa để bảo đảm tính đúng đắn khi thao tác trên dữ liệu

2.3.2 Mô hình truyền thông điệp

Có rất nhiều ngôn ngữ lập trình và các thư viện được xây dựng nên để dành cho lập trình song song Những điều này khác nhau ở cách nhìn của chúng về

Trang 29

không gian địa chỉ dành cho người lập trình, mức đồng bộ trong các chỉ thị song song và sự đa dạng của các chương trình Mô hình lập trình truyền thông điệp là một trong các mô hình cổ nhất và được sử dụng rộng rãi nhất trong các mô hình dùng cho lập trình trên các máy tính song song Lý do chính cho việc này là vì nó yêu cầu tối thiểu về phần cứng bên dưới

Trong phần này chúng ta sẽ đề cập một vài khái niệm căn bản về mô hình truyền thông điệp và các kỹ thuật dùng với thư viện MPI (sẽ mô tả kỹ trong chương sau)

Hình 2-7 : Mô hình truyền thông điệp

Có 2 tính chất quan trọng tạo nên bản chất của mô hình truyền thông điệp là: thứ nhất là nó giả sử không gian địa chỉ được phân chia và thứ hai là nó chỉ hỗ trợ song song hóa tường minh

Cấu trúc của những chương trình truyền thông điệp

Các chương trình truyền thông điệp thường được viết bằng cách sử dụng

mô hình bất đồng bộ hay ít đồng bộ Trong mô hình bất đồng bộ, tất cả các tác vụ song song được thực thi một cách bất đồng bộ Điều này cho phép ta có thể triển khai bất cứ thuật toán song song nào Tuy nhiên những chương trình như vậy thường gặp khó khăn hơn để suy ra và bên cạnh đó cách thể hiện của nó cũng khó

mà đoán trước do những điều kiện về thực thi Ngược lại những chương trình ít

Trang 30

đồng bộ có thể kết hợp tốt cả hai thái cực này Trong những chương trình như vậy, các tác vụ và những tập hợp con các tác vụ được đồng bộ hóa để thực hiện những tương tác Tuy nhiên giữa những tương tác này, các tác vụ được thực thi hoàn toàn bất đồng bộ Bởi vì những tương tác xảy ra một cách đồng bộ, nên việc suy ra chương trình như vậy cũng khá dễ dàng Nhiều thuật toán song song phổ biến cũng được thực hiện một cách tự nhiên bằng cách sử dụng những chương trình ít đồng bộ hơn

Trong dạng phổ biến nhất của mình, mô hình truyền thông điệp hỗ trợ thực thi cho các chương trình khác nhau trên từng bộ xử lý Điều này cung cấp tính mềm dẻo tối đa trong lập trình song song, nhưng điều này cũng làm cho công việc viết các chương trình song song không thể mở rộng một cách hiệu quả Vì nguyên nhân này mà hầu hết các chương trình truyền thông điệp được viết bằng cách sử

dụng phương pháp single program multiple data (SPMD) Trong những chương

trình SPMD, các tiến trình khác nhau thực thi đoạn code tương tự nhau ngọai trừ một số nhỏ các tiến trình (là những tiến trình “gốc”) Điều này không có nghĩa là những tiến trình làm việc theo lock-step Các chương trình SPMD có thể là ít đồng

bộ hay là hoàn toàn bất đồng bộ

2.4 Cách thức xây dựng một chương trình song song và phân

bố

Phát triển thuật toán là một phần quan trọng trong việc giải quyết vấn đề khi sử dụng máy tính Một thuật toán tuần tự về cơ bản là một phương pháp thực hiện hay là một chuỗi tuần tự những bước cơ bản để giải quyết một vấn đề được đặt ra bằng cách sử dụng máy tính tuần tự Tương tự, một thuật tóan song song là một phương pháp giải quyết vấn đề dựa trên việc sử dụng nhiều bộ xử lý Tuy nhiên, để chỉ ra được một thuật tóan song song không đơn giản như là chỉ ra từng bước cụ thể Mà là ở một mức độ nào đó, một thuật tóan song song phải được thêm vào tính đồng thời và người thiết kế ra thuật toán cũng phải chỉ ra tập hơp những bước có thể xử lý đồng thời Điều này nhằm tận dụng được khả năng tính

Trang 31

toán của các máy tính song song Trong thực tế việc thiết kế ra một thuật tóan song song là khá phức tạp, nó có thể bao gồm một vài hay tất cả những điều sau:

• Chỉ ra những phần của công việc có thể được thực thi đồng thời

• Ánh xạ các phần của công việc vào nhiều bộ xử lý chạy song song

• Phân tán dữ liệu nhập, xuất và trung gian cùng với chương trình

• Quản lý truy cập vào dữ liệu chung giữa các bộ xử lý

• Đồng bộ hóa các bộ xử lý khi thực thi các chương trình song song

2.4.1 Các thuật ngữ căn bản

 Phân họach : là quá trình phân chia một vấn đề cần tính toán thành các

phần nhỏ hơn, một vài hay tất cả các phần đó có thể xử lý song song

 Tác vụ : là đơn vị do người lập trình định nghĩa để chỉ ra các phần tính

toán sau khi phân họach Xử lý đồng thời nhiều tác vụ là điều kiện tiên quyết để rút ngắn thời gian giải quyết toàn bộ vấn đề Các tác vụ có thể không cùng kích thước

 Đồ thị phụ thuộc : là một thể hiện sự phụ thuộc giữa các tác vụ và trật

tự thực hiện giữa chúng Một đồ thị phụ thuộc là một đồ thị có hướng trong đó mỗi nút của cây là một tác vụ và cạnh có hướng thể hiện sự phụ thuộc giữa chúng Một tác vụ chỉ được thực hiện khi các tác vụ trước nó (có cạnh nối) được thực hiện Trong đồ thị phụ thuộc tập hợp

cạnh có thể rỗng

Trang 32

Hình 2-8 : Đồ thị phụ thuộc tác vụ

 Granularity : số lượng và kích thước của các tác vụ sau bước phân

họach được gọi là granularity của bước phân họach Bước phân họach một vấn đề lớn thành một số lượng lớn các vấn đề nhỏ được gọi là fine-grained và thành một số lượng nhỏ các vấn đề lớn đựơc gọi là coarse-grained

 Đồ thị tương tác : là mô hình thể hiện sự tương tác giữa các tác vụ

Các nút trong đồ thị tương tác thế hiện các tác vụ còn các cạnh nối thể hiện tưong tác giữa chúng Các cung trong đồ thị tương tác thường là cung vô hướng Tập hợp cạnh thuờng là tập hợp cha của tập hợp cạnh của đồ thị phụ thuộc

Hình 2-9 :Đồ thi tương tác trong bài toán nhân ma trận với vector

Trang 33

2.4.2 Thiết kế thuật toán song song

Phân chia một công việc tính toán thành các phần nhỏ hơn và ánh xạ chúng vào các bộ xử lý khác nhau để thực hiện song song là 2 bước cơ bản trong vịêc thiết kế một thuật tóan song song

2.4.2.1 Một số phương pháp phân hoạch

Một trong những bước cơ bản mà chúng ta cần làm để giải quyết một vấn

đề theo hướng song song là phân chia những phép tính toán muốn thực hiện thành môt tập hợp các tác vụ nhỏ hơn để xử lý đồng thời như trong đồ thị phụ thuộc tác

vụ Trong phần này chúng ta sẽ mô tả một vài kỹ thuật phân họach phổ biến cho

xử lý đồng hành Các kỹ thuật này không phải là tất cả các kỹ thuật phân họach có thể có Thêm vào đó, những phương pháp phân họach ở đây không bảo đảm sẽ dẫn tới những thuật toán song song tốt nhất cho một vấn đề nào đó Mặc dù còn một vài thiếu sót, nhưng các kỹ thuật phân họach được đề cập trong phần này là điểm bắt đầu tốt cho nhiều vấn đề và một hay nhiều sự kết hơp của các kỹ thuật này có thể được dùng để đạt được các phân họach hiệu quả cho rất nhiều lọai vấn

đề

Các kỹ thuật phân họach phân họach ở đây có thể phân thành các lọai sau

phân họach đệ quy, phân họach dữ liệu, phân họach thăm dò và phân họach suy đóan Trong đó phân họach đệ quy và phân họach dữ liệu được dùng cho

nhiều lọai vấn đề còn các phương pháp phân họach khác chỉ được sử dụng cho một lọai vấn đề cụ thể nào đó

Phân họach đệ quy

Phân họach đệ quy là một phương pháp dùng để tạo ra sự đồng hành trong những vấn đề có thể được giải quyết bằng phương pháp chia-và-trị Trong kỹ thuật này trước tiên một vấn đề được giải quyết bằng cách phân chia nó thành tập hợp các vấn đề con độc lập với nhau Đến phiên các vấn đề con lại tiếp tục áp dụng cách thức phân họach đệ quy thành các vấn đề con khác nhỏ hơn Cuối cùng là

Trang 34

chúng ta sẽ thực thi đồng hành các vấn đề con độc lập này, kết quả của vấn đề lớn

là sự kết hợp kết quả của các vấn đề con nhỏ hơn

Phân hoạch dữ liệu

Phân họach theo dữ liệu là một phương pháp phân hoạch hiệu quả và được

sử dụng nhiều nhất trong việc xác định tính đồng hành trong các thuật toán để có thể thao tác trên các cấu trúc dữ liệu lớn Phương pháp này bao gồm 2 bước Trong bước 1, dữ liệu trong bước tính tóan sẽ được phân ra thành từng phần, và trong bước 2, phần dữ liệu này sẽ được chuyển thành các tác vụ Những thao tác mà các tác vụ thực hiện trên các phần dữ liệu khác nhau thường là tương tự nhau hay được chọn từ tập hợp các thao tác nhỏ hơn

Chúng ta sẽ xem xét cụ thể các cách phân chia dữ liệu có thể ở phần bên dưới Nhìn chung, thì người thiết kế phải tự tìm ra và đánh giá các cách phân chia

dữ liệu để quyết định xem cách nào phân họach “tự nhiên” và hiệu quả nhất

 Phân chia dữ liệu xuất

Trong nhiều phần tính toán, từng phần xuất có thể được xử lý độc lập với các phần khác Trong nhiều phần tính toán như vậy, việc phân chia dữ liệu xuất tự động dẫn đến việc phân họach những vấn đề thành các tác vụ, với mỗi tác vụ được kết gán cho công việc tính toán một phần của kết quả xuất

vd: nhân ma trận

Hãy xem vấn đề nhân 2 ma trận nxn A và B, kết quả trả về là ma trận C Trước tiên ta phân từng ma trận thành 4 khối hay ma trận con, bằng cách chia các chiều của ma trận theo 1 nửa 4 ma trận con của ma trận kết quả C, mỗi phần có kích thước n/2 x n/2, có thể được tính tóan độc lập với nhau bởi 4 tác vụ

Trang 35

Hình 2-10 : (a) Phân các ma trận nhập và xuất thành các ma trận con

(b) Phân hoạch phép nhân ma trận thành 4 tác vụ

Hầu hết các thuật toán ma trận, bao gồm nhận ma trận với vector và nhân

ma trận với ma trận, có thể được công thức hóa thành các thao tác trên khối ma trận Trong các công thức này, từng ma trận được xem như bao gồm các khối hay các ma trận con, các phép tính toán được thực hiện trên từng phần tử và được thay thế tương ứng bởi các phép tóan trên các khối ma trận con Kết quả có được trên từng phần tử hay trên các khối là tương tự nhau Thuật toán ma trận khối thường được dùng để hỗ trợ cho việc phân họach

Chúng ta phải chú ý là phân họach theo dữ liệu khác với phân họach các phép tính thành các tác vụ Mặc dù 2 khái niệm này thường có liên hệ với nhau, và cái đầu thường hỗ trợ cho cái sau, một kết quả phân họach dữ liệu đã cho không chỉ có một cách để phân chúng thành các tác vụ

 Phân chia dữ liệu nhập

Phân chia theo dữ liệu xuất chỉ có thể được thực hiện nếu từng kết quả xuất

có thể được tính toán một cách tự nhiên theo chức năng nhập Trong nhiều thuật toán, việc phân chia theo dữ liệu xuất là điều không thể Ví dụ như khi tìm giá trị lớn nhất, nhỏ nhất hay tổng của các số đã cho, kết quả xuất là điều không thể biết

Trang 36

trước Trong các thuật toán sắp xếp, từng phần tử riêng biệt của kết quả không thế được xác định một cách hiệu quả Trong những trường hợp như vậy, việc phân chia theo dữ liệu nhập là hoàn toàn có thể, và sau đó dùng kết quả này để thực hiện đồng thời việc tính toán Từng tác vụ được tạo ra cho từng phần dữ liệu nhập

và tác vụ này sẽ sử dụng tối đa các phép tính có thể thực hiện trên các dữ liệu cục

bộ này Lưu ý là những giải pháp cho các tác vụ được đúc kết từ dữ liệu nhập có thể không giải quyết được một cách trực tiếp vấn đề gốc Trong những trường hợp như vậy, thì kết quả tính toán có thể được thực hiện bằng cách “nổi bọt” lên phía trên.Ví dụ như khi tìm tổng của một chuỗi gồm N số dùng p tiến trình (p < N), chúng ta có thể phân chia phần dữ liệu nhập thành p phần con (có kích thước gần bằng nhau) Từng tác vụ thực hiện cộng các số trong từng phần con Kết quả cuối cùng là cộng của p phần con vừa được tính

 Phân chia cả dữ liệu xuất và nhập

Trong nhiều trường hợp việc phân chia theo cả kết quả xuất và dữ liệu nhập

có thể làm tăng khả năng xử lý đồng thời

 Phân chia dữ liệu trung gian

Các thuật toán thường có dạng xử lý gồm nhiều giai đọan khác nhau, trong

đó kết quả xuất của giai đọan này là kết quả nhập của giai đọan theo sau nó Quá trình phân họach cho những thuật toán như vậy có thể được thực hiện bằng cách phân chia theo dữ liệu nhập hay theo dữ liệu xuất của một giai đọan trung gian Phân chia theo dữ liệu trung gian đôi khi dẫn tới khả năng xử lý đồng thời cao hơn

so với khi thực hiện trên dữ liệu nhập hay xuất Thông thường trong giải quyết một vấn đề nào đó thì dữ liệu trung gian không được phát sinh một cách tường minh và trong khi cấu trúc lại các thuật tóan ban đầu người ta có thể cần đến dữ liệu trung gian để tạo ra sự phân họach

vd: như trong ví dụ nhân ma trận bên trên, ta có thể gia tăng khả năng tính tóan song song bằng cách đưa ra một bước trung gian mà trong đó có 8 tác vụ thực

Trang 38

Hình 2-12 : Phân họach bài toán nhân ma trận theo ma trận trung gian chiều

3-• Phân hoạch thăm dò

Phân họach thăm dò được dùng để phân họach những vấn đề mà có nội dung tính toán tương ứng với một không gian tìm kiếm của những giải pháp Trong phân họach thăm dò, chúng ta phân chia không gian tìm kiếm thành nhiều

Trang 39

phần nhỏ hơn, và thực hiện tìm kiếm trên từng phần đồng thời với nhau, cho đến khi tìm ra giải pháp cần tìm

Lưu ý là mặc dù phân hoạch thăm dò trông có vẻ tương tự như phân hoạch

dữ liệu (không gian tìm kiếm có thể được xem như là dữ liệu được phân chia), về

cơ bản chúng khác nhau ở những điểm sau đây Những tác vụ có được sau khi phân hoạch dữ liệu được thực hiện hoàn toàn và từng tác vụ đều thực hiện các phép tính hữu dụng để tìm ra giải pháp cho vấn đề Mặt khác, trong phân hoạch thăm dò, những tác vụ mặc dù chưa thực hiện xong nhưng vẫn bị kết thúc nếu đã

có một giải pháp được tìm ra từ một tác vụ khác Vì thế từng phần của không gian tìm kiếm khi được thực hiện bởi công thức song song có thể khác rất nhiều so với khi được tìm kiếm bởi thuật toán tuần tự Cho nên số lượng công việc mà công thức song song thực hiện có thể nhiều hơn hay ít hơn so với khi thực hiện bằng thuật toán tuần tự

Trang 40

http://etrithuc.vnHình 2-13 : Các bước phát sinh theo phân hoạch thăm dò

Ngày đăng: 25/01/2013, 15:54

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[10] Global Grid Forum, http://www.gridforum.org Link
[11] Ian Foster, Designing and Building Parallel Programs, 1995, http://www.mcs.anl.gov/people/foster/ Link
[16] Application of Parallel Computers http://crd.lbl.gov/~dhbailey/cs267/ Link
[1] Wolfgang Gentzsch, Grid Computing : A New Technology for the Advanced Web, Sun Microsystem Inc, 2001 Khác
[2] Ananth Gramma, Anshul Gupta, George Karypis, Vipin Kumar : Introduction to Parallel Computing 2nd, Addison Wesley, USA, 2003 Khác
[3] Behrooz Parhami, Introduction to Parallel Processing Algorithms and Architectures, Kluwer Academic, 2002 Khác
[4] Fran Berman, Anthony J.G.Hey, Geoffrey C.Fox, Grid Computing Making the Global Infrastructure a Reality, Wiley, 2003 Khác
[5] IBM RedBooks, Introduction to Grid Computing with Globus, 2003 Khác
[6] Graeme S.McHale, Parallel Programming on Linux Networks Using MPI &amp; PVM Khác
[7] Mark Baker, Rajkumar Buyya, Domenico Laforenza, Grids and Grid technologies for wide-area distributed computing, Software – Practice and Experience, 2002 Khác
[8] 7.1.1 Lam Install ,LAM/MPI Team Open Systems LAb [9] 7.1.1 Lam User Guide,LAM/MPI Team Open Systems LAb Website Khác

HÌNH ẢNH LIÊN QUAN

Hình ảnh minh họa cho các tài nguyên phân phối - Nghiên cứu tính toán lưới và thực nghiệm trên một số thuật toán lý thuyết đồ thị
nh ảnh minh họa cho các tài nguyên phân phối (Trang 7)
Hình ảnh minh họa cho các tài nguyên phân phối - Nghiên cứu tính toán lưới và thực nghiệm trên một số thuật toán lý thuyết đồ thị
nh ảnh minh họa cho các tài nguyên phân phối (Trang 7)
Hình 2- 1: Phân lọai hệ thống máy tính theo Flynn-Johnson 2.1.1.SISD  - Nghiên cứu tính toán lưới và thực nghiệm trên một số thuật toán lý thuyết đồ thị
Hình 2 1: Phân lọai hệ thống máy tính theo Flynn-Johnson 2.1.1.SISD (Trang 20)
Hình 2-1 : Phân lọai hệ thống máy tính theo Flynn-Johnson - Nghiên cứu tính toán lưới và thực nghiệm trên một số thuật toán lý thuyết đồ thị
Hình 2 1 : Phân lọai hệ thống máy tính theo Flynn-Johnson (Trang 20)
Hình 2-3 :Kiến trúc SIMD - Nghiên cứu tính toán lưới và thực nghiệm trên một số thuật toán lý thuyết đồ thị
Hình 2 3 :Kiến trúc SIMD (Trang 21)
Hình 2-3 : Kiến trúc SIMD  Bên trong SIMD, tồn tại hai lựa chọn thiết kế cơ bản sau: - Nghiên cứu tính toán lưới và thực nghiệm trên một số thuật toán lý thuyết đồ thị
Hình 2 3 : Kiến trúc SIMD Bên trong SIMD, tồn tại hai lựa chọn thiết kế cơ bản sau: (Trang 21)
Trong hình trên là ví dụ về một bộ xử lý song song với kiến trúc MISD. Một dịng dữ liệu đơn đi vào một máy tính gồm 5 bộ xử lý - Nghiên cứu tính toán lưới và thực nghiệm trên một số thuật toán lý thuyết đồ thị
rong hình trên là ví dụ về một bộ xử lý song song với kiến trúc MISD. Một dịng dữ liệu đơn đi vào một máy tính gồm 5 bộ xử lý (Trang 23)
Hình 2-5 :Kiến trúc MIMD - Nghiên cứu tính toán lưới và thực nghiệm trên một số thuật toán lý thuyết đồ thị
Hình 2 5 :Kiến trúc MIMD (Trang 24)
Hình 2-5 : Kiến trúc MIMD - Nghiên cứu tính toán lưới và thực nghiệm trên một số thuật toán lý thuyết đồ thị
Hình 2 5 : Kiến trúc MIMD (Trang 24)
Đồ th ịt ương tá c: là mơ hình thể hiện sự tương tác giữa các tác vụ. Các nút trong đồ thị tương tác thế hiện các tác vụ cịn các cạnh nối th ể - Nghiên cứu tính toán lưới và thực nghiệm trên một số thuật toán lý thuyết đồ thị
th ịt ương tá c: là mơ hình thể hiện sự tương tác giữa các tác vụ. Các nút trong đồ thị tương tác thế hiện các tác vụ cịn các cạnh nối th ể (Trang 32)
Hình 2-8 : Đồ thị phụ thuộc tác vụ - Nghiên cứu tính toán lưới và thực nghiệm trên một số thuật toán lý thuyết đồ thị
Hình 2 8 : Đồ thị phụ thuộc tác vụ (Trang 32)
Hình 2-10 : (a) Phân các ma trận nhập và xuất thành các ma trận con       (b) Phân hoạch phép nhân ma trận thành 4 tác vụ - Nghiên cứu tính toán lưới và thực nghiệm trên một số thuật toán lý thuyết đồ thị
Hình 2 10 : (a) Phân các ma trận nhập và xuất thành các ma trận con (b) Phân hoạch phép nhân ma trận thành 4 tác vụ (Trang 35)
Hình 2-11 : Nhân hai ma trận A và B với phần trung gian là ma trận D  Việc phân chia thành ma trận trung gian D dẫn đến phân hoạch thành 8 tác - Nghiên cứu tính toán lưới và thực nghiệm trên một số thuật toán lý thuyết đồ thị
Hình 2 11 : Nhân hai ma trận A và B với phần trung gian là ma trận D Việc phân chia thành ma trận trung gian D dẫn đến phân hoạch thành 8 tác (Trang 37)
Hình 2-1 2: Phân họach bài tốn nhân ma trận theo ma trận trung gian 3- 3-chiều  - Nghiên cứu tính toán lưới và thực nghiệm trên một số thuật toán lý thuyết đồ thị
Hình 2 1 2: Phân họach bài tốn nhân ma trận theo ma trận trung gian 3- 3-chiều (Trang 38)
Hình 2-12 : Phân họach bài toán nhân ma trận theo ma trận trung gian 3- 3-chiều - Nghiên cứu tính toán lưới và thực nghiệm trên một số thuật toán lý thuyết đồ thị
Hình 2 12 : Phân họach bài toán nhân ma trận theo ma trận trung gian 3- 3-chiều (Trang 38)
Hình 2-13 : Các bước phát sinh theo phân hoạch thăm dò - Nghiên cứu tính toán lưới và thực nghiệm trên một số thuật toán lý thuyết đồ thị
Hình 2 13 : Các bước phát sinh theo phân hoạch thăm dò (Trang 40)
Hình 2-15 : Hai cách phân hoạch với đồng bộ hóa  Các kỹ thuật ánh xạ đại khái có thể phân thành hai loại chính là ánh xạ tĩnh - Nghiên cứu tính toán lưới và thực nghiệm trên một số thuật toán lý thuyết đồ thị
Hình 2 15 : Hai cách phân hoạch với đồng bộ hóa Các kỹ thuật ánh xạ đại khái có thể phân thành hai loại chính là ánh xạ tĩnh (Trang 44)
dụng ánh xạ tĩnh sẽ hiệu quả hơn. Tuy nhiên, trong mơ hình chia sẽ - Nghiên cứu tính toán lưới và thực nghiệm trên một số thuật toán lý thuyết đồ thị
d ụng ánh xạ tĩnh sẽ hiệu quả hơn. Tuy nhiên, trong mơ hình chia sẽ (Trang 45)
Hình 2-16 : phân chia theo (a) 1 chiều và (b) hai chiều của ma trận  xuất. Những phần màu xám là dữ liệu mà tiến trình cần để tính toán - Nghiên cứu tính toán lưới và thực nghiệm trên một số thuật toán lý thuyết đồ thị
Hình 2 16 : phân chia theo (a) 1 chiều và (b) hai chiều của ma trận xuất. Những phần màu xám là dữ liệu mà tiến trình cần để tính toán (Trang 45)
Hình 3- 1: mơ hình NetSolve - Nghiên cứu tính toán lưới và thực nghiệm trên một số thuật toán lý thuyết đồ thị
Hình 3 1: mơ hình NetSolve (Trang 60)
Hình 3-1 : mô hình NetSolve - Nghiên cứu tính toán lưới và thực nghiệm trên một số thuật toán lý thuyết đồ thị
Hình 3 1 : mô hình NetSolve (Trang 60)
3.3.2. Những mơ hình lập trình và cơng cụ hỗ trợ - Nghiên cứu tính toán lưới và thực nghiệm trên một số thuật toán lý thuyết đồ thị
3.3.2. Những mơ hình lập trình và cơng cụ hỗ trợ (Trang 63)
Hình 3-2 : Các thành phần của Globus  Globus có thể được nhìn nhận như một hệ thống cở bản cho tính toán lưới,  ngoài việc cung cấp cho nhà phát triển ứng dụng một tập thư viện API  đặc trưng  cho các dịch vụ Globus cung cấp - Nghiên cứu tính toán lưới và thực nghiệm trên một số thuật toán lý thuyết đồ thị
Hình 3 2 : Các thành phần của Globus Globus có thể được nhìn nhận như một hệ thống cở bản cho tính toán lưới, ngoài việc cung cấp cho nhà phát triển ứng dụng một tập thư viện API đặc trưng cho các dịch vụ Globus cung cấp (Trang 63)
Hình 4-1 : Các tiến trình tạo lập trên mô hình lập trình MPI - Nghiên cứu tính toán lưới và thực nghiệm trên một số thuật toán lý thuyết đồ thị
Hình 4 1 : Các tiến trình tạo lập trên mô hình lập trình MPI (Trang 92)
Hình 4- 3: Blocking và non-blocking - Nghiên cứu tính toán lưới và thực nghiệm trên một số thuật toán lý thuyết đồ thị
Hình 4 3: Blocking và non-blocking (Trang 94)
Hình 4-2 : Cách thức truyền thông của các process - Nghiên cứu tính toán lưới và thực nghiệm trên một số thuật toán lý thuyết đồ thị
Hình 4 2 : Cách thức truyền thông của các process (Trang 94)
Hình 4-4 : Group, communicator và rank - Nghiên cứu tính toán lưới và thực nghiệm trên một số thuật toán lý thuyết đồ thị
Hình 4 4 : Group, communicator và rank (Trang 95)
Hình 4-6 : Giao tiếp blocking - Nghiên cứu tính toán lưới và thực nghiệm trên một số thuật toán lý thuyết đồ thị
Hình 4 6 : Giao tiếp blocking (Trang 99)
Hình 4-7 :T hứ tự các xử lý - Nghiên cứu tính toán lưới và thực nghiệm trên một số thuật toán lý thuyết đồ thị
Hình 4 7 :T hứ tự các xử lý (Trang 102)
Hình 4-7 : Thứ tự các xử lý - Nghiên cứu tính toán lưới và thực nghiệm trên một số thuật toán lý thuyết đồ thị
Hình 4 7 : Thứ tự các xử lý (Trang 102)
Hình 4-9 :Giao tiếp non-blocking - Nghiên cứu tính toán lưới và thực nghiệm trên một số thuật toán lý thuyết đồ thị
Hình 4 9 :Giao tiếp non-blocking (Trang 103)
Hình 4-8 : Cách thức xử lý tiến trình - Nghiên cứu tính toán lưới và thực nghiệm trên một số thuật toán lý thuyết đồ thị
Hình 4 8 : Cách thức xử lý tiến trình (Trang 103)
Hình 4-11 : Ví dụ hàm Scatter - Nghiên cứu tính toán lưới và thực nghiệm trên một số thuật toán lý thuyết đồ thị
Hình 4 11 : Ví dụ hàm Scatter (Trang 111)
Hình 4-1 3: Hàm MPI_Allgather - Nghiên cứu tính toán lưới và thực nghiệm trên một số thuật toán lý thuyết đồ thị
Hình 4 1 3: Hàm MPI_Allgather (Trang 112)
Hình 4-1 4: Hàm MPI_Alltoall - Nghiên cứu tính toán lưới và thực nghiệm trên một số thuật toán lý thuyết đồ thị
Hình 4 1 4: Hàm MPI_Alltoall (Trang 113)
Hình 4-14 : Hàm MPI_Alltoall - Nghiên cứu tính toán lưới và thực nghiệm trên một số thuật toán lý thuyết đồ thị
Hình 4 14 : Hàm MPI_Alltoall (Trang 113)
Hình 4-1 5: Hàm MPI_Reduce - Nghiên cứu tính toán lưới và thực nghiệm trên một số thuật toán lý thuyết đồ thị
Hình 4 1 5: Hàm MPI_Reduce (Trang 114)
Hình 4-15 : Hàm MPI_Reduce - Nghiên cứu tính toán lưới và thực nghiệm trên một số thuật toán lý thuyết đồ thị
Hình 4 15 : Hàm MPI_Reduce (Trang 114)
Hình 4-16 : Sử dụng 8 xử lý để tính giá trị tuyệt đối - Nghiên cứu tính toán lưới và thực nghiệm trên một số thuật toán lý thuyết đồ thị
Hình 4 16 : Sử dụng 8 xử lý để tính giá trị tuyệt đối (Trang 116)
Hình 4-16 : Sử dụng 8 xử lý để tính giá trị tuyệt đối - Nghiên cứu tính toán lưới và thực nghiệm trên một số thuật toán lý thuyết đồ thị
Hình 4 16 : Sử dụng 8 xử lý để tính giá trị tuyệt đối (Trang 116)
http://etrithuc.vnHình 4-17 Hàm Mpi-Allreduce  - Nghiên cứu tính toán lưới và thực nghiệm trên một số thuật toán lý thuyết đồ thị
http //etrithuc.vnHình 4-17 Hàm Mpi-Allreduce (Trang 117)
trên các tiến trình từ dến i. Hình vẽ sau đây sẽ minh họa rõ hơn về điều này  - Nghiên cứu tính toán lưới và thực nghiệm trên một số thuật toán lý thuyết đồ thị
tr ên các tiến trình từ dến i. Hình vẽ sau đây sẽ minh họa rõ hơn về điều này (Trang 118)
Hình 4-19 : Hàm MPI_Scan - Nghiên cứu tính toán lưới và thực nghiệm trên một số thuật toán lý thuyết đồ thị
Hình 4 19 : Hàm MPI_Scan (Trang 118)
Hình 4-20 : MPI_Type_contiguous 4.5.2.2.  Vector - Nghiên cứu tính toán lưới và thực nghiệm trên một số thuật toán lý thuyết đồ thị
Hình 4 20 : MPI_Type_contiguous 4.5.2.2. Vector (Trang 120)
Hình 4-21 : MPI_Type_vetor  4.5.2.3.  Indexed - Nghiên cứu tính toán lưới và thực nghiệm trên một số thuật toán lý thuyết đồ thị
Hình 4 21 : MPI_Type_vetor 4.5.2.3. Indexed (Trang 121)
Hình 4-22 : MPI_Type_indexed  4.5.2.4.  Struct - Nghiên cứu tính toán lưới và thực nghiệm trên một số thuật toán lý thuyết đồ thị
Hình 4 22 : MPI_Type_indexed 4.5.2.4. Struct (Trang 122)
Hình 5-1.1. - Nghiên cứu tính toán lưới và thực nghiệm trên một số thuật toán lý thuyết đồ thị
Hình 5 1.1 (Trang 131)
Hình 5-1.3. - Nghiên cứu tính toán lưới và thực nghiệm trên một số thuật toán lý thuyết đồ thị
Hình 5 1.3 (Trang 132)
Hình 5-1.5 - Nghiên cứu tính toán lưới và thực nghiệm trên một số thuật toán lý thuyết đồ thị
Hình 5 1.5 (Trang 133)
Hình 5-1. Thuật tốn Dijkstra tuần tự - Nghiên cứu tính toán lưới và thực nghiệm trên một số thuật toán lý thuyết đồ thị
Hình 5 1. Thuật tốn Dijkstra tuần tự (Trang 134)
Hình 5-1.6  Hình 5-1. Thuật toán Dijkstra tuần tự - Nghiên cứu tính toán lưới và thực nghiệm trên một số thuật toán lý thuyết đồ thị
Hình 5 1.6 Hình 5-1. Thuật toán Dijkstra tuần tự (Trang 134)
Hình 5- 2: Thuật tốn Dijkstra song song Các bước thực hiện song song hố như sau :  - Nghiên cứu tính toán lưới và thực nghiệm trên một số thuật toán lý thuyết đồ thị
Hình 5 2: Thuật tốn Dijkstra song song Các bước thực hiện song song hố như sau : (Trang 135)
Hình 5-2 : Thuật toán Dijkstra song song  Các bước thực hiện song song hoá như sau : - Nghiên cứu tính toán lưới và thực nghiệm trên một số thuật toán lý thuyết đồ thị
Hình 5 2 : Thuật toán Dijkstra song song Các bước thực hiện song song hoá như sau : (Trang 135)
Giống như hình vẽ minh họa thuật tốn Dijkstra song song. - Nghiên cứu tính toán lưới và thực nghiệm trên một số thuật toán lý thuyết đồ thị
i ống như hình vẽ minh họa thuật tốn Dijkstra song song (Trang 136)
Từ dịng lệnh của màn hình Console gõ #make - Nghiên cứu tính toán lưới và thực nghiệm trên một số thuật toán lý thuyết đồ thị
d ịng lệnh của màn hình Console gõ #make (Trang 138)
Hình 5-3 : Thuật toán Prim song song - Nghiên cứu tính toán lưới và thực nghiệm trên một số thuật toán lý thuyết đồ thị
Hình 5 3 : Thuật toán Prim song song (Trang 142)
Hình c b4  - Nghiên cứu tính toán lưới và thực nghiệm trên một số thuật toán lý thuyết đồ thị
Hình c b4 (Trang 144)
Hình d b5  - Nghiên cứu tính toán lưới và thực nghiệm trên một số thuật toán lý thuyết đồ thị
Hình d b5 (Trang 145)
Hình 5- 5: Thuật tốn Bellman-Ford song song Thực hiện  - Nghiên cứu tính toán lưới và thực nghiệm trên một số thuật toán lý thuyết đồ thị
Hình 5 5: Thuật tốn Bellman-Ford song song Thực hiện (Trang 149)
Hình 5-5 : Thuật toán Bellman-Ford song song - Nghiên cứu tính toán lưới và thực nghiệm trên một số thuật toán lý thuyết đồ thị
Hình 5 5 : Thuật toán Bellman-Ford song song (Trang 149)

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w