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

Ứng dụng kỹ thuật phân hoạch và chia để trị trong thuật toán song song

62 564 0

Đ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 62
Dung lượng 0,99 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

LỜI NÓI ĐẦUTính toán song song là công cụ được xem như là "kết thúc cao của tính toán" đangthu hút được sự quan tâm của những nhà lập trình nói riêng và những người có nhucầu tính toán h

Trang 1

ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN

KHOA TOÁN - CƠ - TIN HỌC

Nguyễn Thị Xuyên

ỨNG DỤNG KỸ THUẬT PHÂN HOẠCH

VÀ CHIA ĐỂ TRỊ TRONG THUẬT TOÁN SONG SONG

KHÓA LUẬN TỐT NGHIỆP HỆ ĐẠI HỌC CHÍNH QUY

Ngành: Toán - Tin ứng dụng

Người hướng dẫn: TS Nguyễn Hữu Điển

Hà Nội - 2008

Trang 2

Đồng thời, tôi xin cảm ơn các bạn trong lớp K49A2 nghành Toán-Tinứng dụng, khoa Toán-Cơ-Tin học đã nhiệt tình giúp đỡ tôi trong quá trình học tậptại lớp.

Hà nội, ngày 10 tháng 05 năm 2008

Sinh viên

Nguyễn Thị Xuyên

Trang 3

Mục lục

LỜI NÓI ĐẦU 4

Chương 1 Tính toán song song 5

1.1 Giới thiệu chung 5

1.1.1 Nhu cầu về tốc độ tính toán 5

1.1.2 Khái niệm chung 5

1.1.3 Phạm vi của tính toán song song 6

1.2 Các loại máy tính song song 8

1.2.1 Phân loại máy tính của Flynn 8

1.2.2 Kiến trúc bộ nhớ của máy tính song song 11

1.3 Các mô hình lập trình song song 15

1.3.1 Lập trình chia sẻ bộ nhớ 15

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

1.4 Thuật toán song song 17

1.4.1 Nguyên lý thiết kế thuật toán song song 17

1.4.2 Đánh giá các thuật toán song song 20

1.5 Lập trình song song với MPI 23

1.5.1 Giới thiệu về MPI(Message Passing Interface) 23

1.5.2 Các hàm cơ bản trong chuẩn MPI 25

Chương 2 Kĩ thuật phân hoạch, chia để trị và một số ứng dụng 29

2.1 Các chiến lược phân hoạch, chia để trị 29

2.1.1 Kĩ thuật phân hoạch 29

2.1.2 Chia để trị 32

2.1.3 Chia để trị m-nhánh 35

2.2 Một số ứng dụng trong thuật toán song song 37

2.2.1 Nhân ma trận với vecto 37

2.2.2 Thuật toán sắp xếp 41

2.2.3 Bài toán N-body 46

Trang 4

Chương 3 Chương trình ví dụ 54

KẾT LUẬN 60 Tài liệu tham khảo 61

Trang 5

LỜI NÓI ĐẦU

Tính toán song song là công cụ được xem như là "kết thúc cao của tính toán" đangthu hút được sự quan tâm của những nhà lập trình nói riêng và những người có nhucầu tính toán hiệu năng nói chung bởi những ứng dụng đa dạng và to lớn của nó.Tính toán song song tạo cơ hội trong việc giải quyết các bài toán tính toán trên cáckhối lượng dữ liệu lớn hoặc đòi hỏi số lần lặp lớn mà tính toán thông thường khôngđáp ứng được Đặc biệt, nó cho phép chúng ta khai thác hiệu quả các tài nguyên tínhtoán thông thường mà không đòi hỏi quá nhiều chi phí như các siêu máy tính.Song song hóa các thuật toán tuần tự là một hướng tiếp cận thông dụng để thiết

kế các thuật toán song song Trong đó, phân hoạch và chia để trị là hai kĩ thuật cơbản để thiết lập tính song song cho bài toán một cách có hiệu quả Khóa luận của

em xin trình bày cơ bản về kĩ thuật phân hoạch và chia để trị cùng một số ứng dụngcủa nó để xây dựng thuật toán song song Khóa luận của em gồm 3 chương:

Chương 1: Trình bày tổng quan về tính toán song song, nhu cầu, phạm vi của tính

toán song song, các loại máy tính song song và kiến trúc bộ nhớ, mô hình lậptrình, nguyên lý thiết kế và thời gian thực hiện của thuật toán song song, phầncuối chương giới thiệu về thư viện truyền thông chuẩn MPI

Chương 2: Trình bày kĩ thuật phân hoạch và chia để trị Ứng dụng của kĩ thuật vào

bài toán nhân ma trận-vecto, thuật toán song song bucket sort và quick sort,

cuối cùng là bài toán N-body với việc song song hóa thuật toán Barnes-Hut

Chương 3: Chương trình ví dụ

Tuy đã có nhiều cố gắng nhưng do thời gian và khả năng có hạn nên các vấn đềtrong khóa luận vẫn chưa được trình bày sâu sắc và không thể tránh khỏi có nhữngsai sót trong cách trình bày Mong được sự góp ý xây dựng của thầy cô và các bạn

Em xin chân thành cảm ơn!

Trang 6

Chương 1

Tính toán song song

Ngày nay, với các bài toán yêu cầu xử lý trên một số lượng dữ liệu lớn và phứctạp như sự mô phỏng những hệ thống phức tạp và "những vấn đề thách thức lớn"như: dự báo thời tiết và khí hậu, những phản ứng hóa học và hạt nhân, hệ gen sinhhọc, đặt ra một nhu cầu lớn về tốc độ tính toán Những bài toán này thường yêucầu một lượng lớn các phép tính lặp lại trên một khối lượng lớn dữ liệu để đưa ramột kết quả đúng đắn, và các phép tính này cần hoàn thành trong một khoảng thờigian hợp lý Ví dụ như bài toán dự báo thời tiết không thể xử lý được bằng các máytính thông thường vì thời gian xử lý là khoảng 10 năm, điều này hoàn toàn khôngphù hợp

Để giải quyết được các bài toán trên ta cần phải tăng tốc độ tính toán

Mặc dù trong những thập kỉ vừa qua chúng ta đã được chứng kiến những thành tựu tolớn về công nghệ vi xử lý Tốc độ đồng hồ của các bộ xử lý đã tăng từ khoảng 40MHz(MIPS R3000, circa 1988) tới trên 2,0 GHz (Pentium 4, circa 2002); cùng một lúc,các bộ xử lý có khả năng thực hiện đa chỉ lệnh trong cùng một chu kỳ Nhưng dogiới hạn về vật lý nên khả năng tính toán của các bộ xử lý không thể tăng mãi được.Một cách để tăng tốc độ tính toán đó là sử dụng tính toán song song

Thông thường, phần mềm được viết trên máy tính tuần tự có đặc điểm:

• Được chạy trên một máy tính đơn với một bộ xử lý(CPU)

Trang 7

• Một bài toán được thực hiện bằng một chuỗi các dòng lệnh rời rạc, các dònglệnh này được thực hiện nối tiếp nhau.

• Tại mỗi thời điểm chỉ có một dòng lệnh được thực hiện

Hình 1.1: Mô hình tính toán tuần tự

Theo nghĩa đơn giản nhất, tính toán song song là sử dụng đồng thời nhiều tài nguyêntính toán để giải quyết một bài toán tính toán Có đặc điểm sau:

• Được thực hiện trên nhiều bộ xử lý

• Một bài toán được chia thành các phần rời rạc, các phần này có thể được giảiquyết đồng thời

• Từng phần nhỏ được giải quyết theo mô hình tuần tự

• Các dòng lệnh của mỗi phần thực thi một cách đồng thời trên các bộ xử lýkhác nhau

Các tài nguyên tính toán ở đây có thể là: một máy tính đơn với nhiều bộ xử lý, một

số lượng máy tính tùy ý được nối với nhau bằng đường mạng hoặc có thể là sự kếthợp của hai mô hình trên

Tính toán song song đã làm nên những tác động to lớn trong nhiều lĩnh vựcđang còn hạn chế từ việc mô phỏng tính toán cho các ứng dụng kĩ thuật và khoa họccho tới các ứng dụng thương mại trong vấn đề khai mỏ dữ liệu và xử lý giao dịch.Dưới đây là một số các ứng dụng đa dạng của tính toán song song

Trang 8

Hình 1.2: Mô hình tính toán song song

Các ứng dụng trong kĩ thuật và thiết kế

Tính toán song song đã được sử dụng và đã mang lại những thành công lớn trongviệc thiết kế cánh máy bay (tối ưu hóa sự nâng, sự kéo và tính bền vững), động cơđốt trong (tối ưu hóa sự phân phối điện và sự cháy), các mạch tốc độ cao và các cấutrúc khác

Các ứng dụng khác trong thiết kế và kĩ thuật tập trung vào sự tối ưu hóa nhiềuquá trình Các máy tính đã được dùng để giải nhiều bài toán tối ưu hóa liên tục vàrời rạc Các thuật toán đơn hình, phương pháp điểm trong việc tối ưu đường thẳng,phân nhánh và giới hạn (Branch and bound), lập trình di truyền cho tối ưu rời rạc

đã được song song hóa một cách hiệu quả và được sử dụng thường xuyên

Những thành tựu trong hóa học và vật lý học tính toán tập trung vào các nghiêncứu được xếp theo quy mô từ các hiện tượng lượng tử cho tới các cấu trúc phân

Trang 9

tử lớn Những nghiên cứu này đã cho kết quả trong việc thiết kế nguyên liệu mới

và những quy trình hiệu quả hơn Các ứng dụng trong vật lý học thiên thể đã đượckhám phá đó là sự nở giãn của thiên hà, các quy trình nhiệt hạch, và phân tích kho

dữ liệu khổng lồ từ các kính thiên văn Việc mô phỏng thời tiết, khai thác khoángsản, dự báo lũ lụt,.v.v dựa chủ yếu vào máy tính song song và có tác động quantrọng tới cuộc sống hàng ngày

Các ứng dụng trong thương mại

Với hiệu ích lan rộng của web được tích hợp các nôi dung động và tĩnh đang giatăng nhấn mạnh tời nhu cầu về các máy chủ chi phí thấp có khả năng cung cấp thểhiện có thể biến đổi được Các mô hình song song từ đa bộ xử lý tới máy cụm linuxđược sử dụng như là các máy chủ cơ sở dữ liệu và web

Tính sẵn sàng của dữ liệu giao dịch quy mô lớn đóng vai trò đáng kể trong việckhai mỏ dữ liệu, phân tích tối ưu hóa công việc kinh doanh và các quyết định mar-keting Khối lượng lớn và sự phân bố theo địa lý của những dữ liệu đòi hỏi sử dụngcác thuật toán song song hiệu quả đối với những bài toán như khai mỏ quy tắc kếthợp, phân nhóm, phân lớp và phân tích chuỗi thời gian

Các ứng dụng trong hệ thống máy tính

Khi các hệ thống máy tính trở nên rộng khắp và sự tính toán trải rộng trên toànmạng, thì các vấn đề xử lý song song cũng được ứng dụng nhiều hơn Trong việcbảo mật máy tính, việc phát hiện xâm phạm là một thử thách đáng kể Trong trườnghợp phát hiện xâm phạm mạng, dữ liệu được thu thập từ các trang phân tán và phảiđược phân tích một cách nhanh chóng Việc không thể thu thập được dữ liệu này tạimột vị trí trung tâm để phân tích đòi hỏi các thuật giải song song và phân tán Tronglĩnh vực mật mã, ứng dụng đặc biệt nhất của tính toán song song trên Internet tậptrung vào việc phân tích các số nguyên cực lớn

Các hệ thống nhúng tăng dựa trên các thuật toán điều khiển phân tán để hoànthành một số tác vụ Một ô tô hiện đại gồm mười bộ xử lý liên lạc với nhau để thựchiện các tác vụ phức tạp trong việc tối ưu hóa quá trình tiến hành và sự thực hiện.Trong các hệ thống này, các thuật toán phân tán và song song truyền thống để lựachọn vật dẫn đầu và tập độc lập lớn nhât, vv thường được sử dụng

Dù là máy tính tuần tự hay song song đều phải thực hiện bằng cách thực thi cácchỉ lệnh trên dữ liệu

Trang 10

Dòng chỉ lệnh nói cho máy tính biết phải làm gì.

Dòng dữ liệu bị ảnh hưởng bởi các chỉ lệnh

Dựa vào số lượng dòng lệnh và số lượng dòng dữ liệu thực hiện tại cùng mộtthời điểm Micheal Flynn đã phân các máy tính thành 4 loại

• Máy tính SISD: đơn dòng lệnh-đơn dòng dữ liệu (Single Instruction Single Data Stream)

Stream-Máy tính SISD chỉ có một bộ xử lý, ở 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 Máy tính SISD còn được gọi là đơnchương trình-đơn dòng dữ liệu, SPSD (Single Program Stream-Single DataStream) Vì chỉ có một bộ xử lý nên các thuật toán cho máy tính SISD khôngbao hàm tính song song

Hình 1.3: Mô hình máy tính SISD

• Máy tính MISD: đa dòng lệnh - đơn dòng dữ liệu (Multiple Instruction Stream

- Single Data Stream)

Máy tính MISD có nhiều bộ xử lý, mỗi bộ xử lý có đơn vị điều khiển (Control

Hình 1.4: Mô hình máy tính MISD

Unit) riêng, chia sẻ một bộ nhớ chung Máy tính MISD còn được gọi là MPSD(Multiple Program Stream - Single Data Stream, đa chương trình - đơn dòng

dữ liệu)

Tính song song có thể đạt được trong hệ thống máy MISD bằng cách cho các

bộ xử lý thực hiện các công việc khác nhau tại cùng một thời điểm trên cùngmột tập dữ liệu

Trang 11

• Máy tính SIMD: đơn dòng lệnh-đa dòng dữ liệu (Single Instruction Multiple Data Stream)

stream-Máy tính SIMD có một đơn vị điều khiển để điều khiển nhiều bộ xử lý thực

Hình 1.5: Mô hình máy tính SIMD

hiện theo một dòng lệnh đơn Tức là các bộ xử lý này thực hiện cùng một câulệnh trên các mục dữ liệu khác nhau Máy tính SIMD còn được gọi là máytính SPMD, đơn chương trình - đa dòng dữ liệu

Các bài toán giải quyết được SIMD yêu cầu các bộ xử lý giao tiếp với nhau

để trao đổi dữ liệu hay kết quả Việc này có thể được thực hiện theo hai cách:

– Sử dụng bộ nhớ chia sẻ và các biến chia sẻ.

– Sử dụng một số dạng liên kết mạng và truyền thông điệp(bộ nhớ phân

tán)

• Máy tính MIMD: đa dòng lệnh - đa dòng dữ liệu (Multiple Instruction Multiple Data Stream)

Stream-Máy tính MIMD có N bộ xử lý, N dòng lệnh, và N dòng dữ liệu Mỗi bộ xử

lý có thể thực hiện chỉ lệnh từ đơn vị điều khiển riêng của nó Tức là các bộ

xử lý có thể làm các việc khác nhau trên các dữ liệu khác nhau tại cùng mộtthời điểm

Đây là loại máy tổng quan và mạnh nhất trong các loại máy song song Hailoại máy tính song song cơ bản nhất là hệ thống đa bộ xử lý bộ nhớ chia sẻ và

hệ thống đa máy tính bộ nhớ phân tán đều thuộc loại máy MIMD

Máy tính MIMD với bộ nhớ chia sẻ được gọi là multiprocessors (máy đa bộ

xử lý) Ví dụ các máy ENCORE, MULTIMAX, SEQUENT và BALANCE.Máy tính MIMD với một mạng liên kết được gọi là multicomputers (hệ

đa máy tính), đôi khi được gọi là hệ thống phân tán Ví dụ INTEL iPSC,NCUBE/7 và các mạng transputer

Ta có thể tổng quát khả năng của 4 loại máy tính theo nguyên tắc Flynn như sau:

Trang 12

Hình 1.6: Mô hình máy tính MIMD

Hệ thống đa bộ xử lý bộ nhớ chia sẻ

• Đặc điểm chung:

– Một máy tính thông thường chứa một bộ xử lý để thực thi chương trình

được lưu trong bộ nhớ chính Mỗi vùng trong bộ nhớ chính được xácđịnh bằng các số gọi là địa chỉ của nó Địa chỉ được đánh số bắt đầu từ

0 cho tới 2n− 1 nếu có n bit trong địa chỉ

– Mô hình bộ nhớ chia sẻ được mở rộng từ mô hình bộ xử lý đơn Mô hình

bộ nhớ chia sẻ có đa bộ xử lý được kết nối tới các module của bộ nhớ

đa các bộ xử lý kết nối tới bộ nhớ có thể qua một số dạng mạng liênkết

– Hệ thống đa bộ xử lý bộ nhớ chia sẻ làm việc với một không gian địa

chỉ đơn, tức là mỗi vùng trong toàn bộ hệ thống bộ nhớ chính có mộtđịa chỉ duy nhất, tất cả các bộ xử lý truy cập tới vùng nhớ đó theo địachỉ này

– Máy tính chia sẻ bộ nhớ được chia thành 2 loại dựa trên thời gian truy

cập bộ nhớ, đó là : truy cập bộ nhớ đồng dạng (Uniform Memory cess, UMA) và truy cập bộ nhớ không đồng dạng (Nonuniform MemoryAccess, NUMA)

Ac-∗ Truy cập bộ nhớ đồng dạng: Thời gian và mức độ truy cập tới bộnhớ là như nhau đối với mỗi bộ xử lý Khi kiến trúc bộ nhớ có gắnthêm bộ đệm nhất quán thì sự truy cập của một bộ xử lý tới bộnhớ chia sẻ là rõ ràng đối với các bộ xử lý còn lại, được gọi là bộ

Trang 13

Hình 1.7: Chức năng của 4 mô hình máy tính

đệm gắn kết nhất quán truy cập đồng dạng(Cache coherent UMA,CC-UMA)

∗ Truy cập bộ nhớ không đồng dạng: Bộ nhớ chia sẻ được phân táncho các bộ xử lý thành bộ nhớ cục bộ và tuyển tập tất cả các đơnthể bộ nhớ tạo ra bộ nhớ chung cho các bộ xử lý Thời gian truy cậptới bộ nhớ cục bộ nhanh hơn thời gian truy cập tới bộ nhớ khôngcục bộ Khi được gắn thêm bộ đêm nhất quán ta có khái niệm bộđệm nhất quán truy cập không đồng dạng (CC-NUMA)

• Ưu điểm

– Không gian địa chỉ chung được cung cấp cho người sử dụng một cách

thân thiện bởi một chương trình tương thích với bộ nhớ

– Sự phân chia dữ liệu giữa các tác vụ nhanh và đồng dạng do bộ nhớ gần

với các bộ xử lý

• Nhược điểm

– Khó thể hiện phần cứng để tất cả các bộ xử lý đạt được tốc độ truy cập

nhanh tới tất cả bộ nhớ chia sẻ

– Vì các bộ xử lý được kết nối với bộ nhớ nên khi muốn tăng thêm bộ xử

lý sẽ gặp nhiều khó khăn về thiết kế và sản xuất vì sẽ làm tăng các giaotiếp trên bộ nhớ chung, đối với hệ thống bộ đệm nhất quán, giao tiếptăng sẽ đặt ra đòi hỏi quản lý bộ nhớ/bộ đệm

Trang 14

• Ưu điểm

Kiến trúc vật lý của hệ thống phân tán bộ nhớ đơn giản hơn hệ thống bộnhớ chia sẻ nên dễ dàng để làm lớn hệ thống

Mỗi bộ xử lý có thể nhanh chóng truy cập vào bộ nhớ riêng của mình

mà không có giao thoa hay cố gắng duy trì sức kết dính bộ đệm

Do có thể sử dụng các bộ xử lý và các mạng thông thường nên chi phíkhông quá cao

Trang 15

Hình 1.10: Máy tính bộ nhớ chia sẻ-phân tán

Hệ thống bộ nhớ chia sẻ-phân tán

• Đặc điểm chung

– Hệ thống được kết hợp từ hai mô hình trên Trong mô hình này mỗi bộ

xử lý có thể truy cập tới toàn bộ bộ nhớ sử dụng một không gian địa chỉđơn

– Khi một bộ xử lý truy cập tới một vùng nhớ không phải là vùng nhớ cục

bộ của mình, thì việc truyền thông điệp diễn ra để chuyển dữ liệu từ bộ

xử lý đó tới vùng nhớ hoặc từ vùng nhớ tới bộ xử lý bằng một số phươngthức được tự động điều này đã dấu đi sự thật là bộ nhớ được phân tán

– Đối với một hệ thống bộ nhớ được phân tán một cách vật lý, người ta

sử dụng bộ nhớ cache cục bộ tới mỗi bộ xử lý để có được bộ nhớ chia

sẻ giữa các bộ xử lý Khi cần giao tiếp, dữ liệu được copy từ các bộ nhớ

cache

– Những máy tính nhanh nhất và lớn nhất sử dụng kiến trúc bộ nhớ chia

sẻ-phân tán Xu hướng phát triển hiện nay dự báo rằng kiến trúc bộ nhớnày sẽ tiếp tục lân áp và tăng nhanh về cả số lượng và phạm vi sử dụng

• Ưu điểm và nhược điểm: là bất kì điểm chung nào cuả hai loại kiến trúc bộnhớ trên

Trang 16

1.3 Các mô hình lập trình song song

Ở trên chúng ta đã xem xét các thể hiện phần cứng cho tính toán song song, các

mô hình máy tính song song Vấn đề quan trọng đặt ra là phải viết một chương trìnhbằng một ngôn ngữ lập trình bậc cao và chạy trên một môi trường xác định sao chotận dụng hết được khả năng của máy tính

Mô hình lập trình song song là sự trừu tượng hóa trên các kiến trúc phần cứng

và bộ nhớ của máy tính song song Mô hình lập trình song song không đặc tả riêngcho một loại kiến trúc bộ nhớ hay máy tính cụ thể Một cách lý thuyết thì môt loại

mô hình lập trình song song có thể được thể hiện dưới một phần cứng bất kì

Dưới đây là hai mô hinh lập trình song song phổ biến

Một ưu điểm của mô hình này theo quan điểm của người lập trình đó là không

có quyền sở hữu dữ liệu riêng nên không cần phải đặc tả việc truyền thông dữ liệuhiển giữa các tác vụ Việc phát triển chương trình có thể được đơn giản hóa

Nhược điểm quan trọng của mô hình là các ngôn ngữ của việc thực hiện, nó trởnên khó hiểu và khó quản lý vùng dữ liệu hơn

Lập trình chia sẻ bộ nhớ dựa vào tiến trình

• Tiến trình (processes) là một bản thể của chương trình đang thực thi Yêu cầucủa xử lý song song là khả năng tạo ra một số tiến trình cần thiết cho bài toán

và khả năng hủy bỏ tiến trình khi phần việc xử lý song song kết thúc để giảiphóng các tài nguyên mà tiến trình đã chiếm giữ và không cản trở hoạt độngcủa những tiến trình khác

• Các hệ điều hành như Linux, Unix hay Windows đều phải điều phối sự hoạtđộng đồng bộ của các tiến trình Khi muốn sử dụng bộ nhớ chung, ta cần phảixin cấp phát bộ nhớ và sau đó khi sử dụng xong phải giải phóng chúng

• Khi có một tiến trình truy cập vào một bộ nhớ với mục đích cập nhật thì nóphải được đảm bảo rằng không một tiến trình dữ liệu nào khác đọc dữ liệu ởvùng nhớ đó cho tới khi việc cập nhật đó kết thúc

Trang 17

Lập trình chia sẻ bộ nhớ dựa vào luồng

• Khái niệm luồng

– Luồng (thread) cũng giống như các tiến trình là kĩ thuật cho phép một

chương trình có thể thực hiện nhiều công việc tại một thời điểm, thựchiện công việc tại một khoảng thời gian cho trước Các luồng tồn tại bêntrong các tiến trình

– Các luồng của một tiến trình có thể chia sẻ với nhau về không gian địa

chỉ chương trình, các đoạn dữ liệu và môi trường xử lý, đồng thời cũng

có những vùng dữ liệu riêng để thao tác

– Công việc của một luồng có thể được miêu tả như là một chương trình

con của một chương trình chính Một luồng bất kì có thể thực thi mộtchương trình con bất kì cùng lúc với các luồng khác

– Các luồng giao tiếp với các luồng khác qua bộ nhớ toàn cục (global

memory) Việc này yêu cầu xây dựng việc đồng bộ để đảm bảo rằngchỉ có một luồng cập nhật một địa chỉ chung tại một thời điểm Việcđồng bộ các luồng thực hiện hiệu quả hơn đối với các tiến trình vì đồng

bộ luồng chủ yếu tập trung vào sự truy cập các biến chung của chươngtrình

• Các thể hiện của luồng Có nhiều hệ điều hành hỗ trợ đa luồng như: SUNSolaris, Windows NT v.v những nỗ lực tiêu chuẩn hóa không giống nhau

đã đưa tới hai thể hiện rất khác nhau của luồng đó là: POSIX Threads vàOpenMP

POSIX Threads: Thường được gọi là Pthreads

– Thư viện cơ sở yêu cầu sự mã hóa song song.

– Được chỉ rõ bởi tiêu chuẩn IEEE POSIX 1003.1c (1995)

– Chỉ sử dụng ngôn ngữ C

– Hầu hết các nhà cung cấp phần cứng hiện này đều đề xuất Pthreads

ngoài các thể hiện luồng riêng của họ

– Tính song song rất rõ ràng, yêu cầu người lập trình chú ý tới chi tiết OpenMP

– Cơ sở chỉ thị biên dịch có thể sử dụng mã tuần tự.

– Được định nghĩa và chứng thực bởi một nhóm các nhà cung cấp phần

cứng và phần mềm chủ yếu OpenMP Fortran API được phát hành ngày

28 tháng 10 năm 1997 C/C++ được phát hành muộn hơn vào năm 1998

– Các nền lập trình bao gồm Unix và Windows NT.

– Có sẵn trong các thể hiện của C/C++ và Fortran.

Trang 18

– Có thể được sử dụng để cung cấp cho các bài toán có tính song song gia

tăng dễ dàng và đơn giản

Giống như mô hình chia sẻ bộ nhớ, các đơn vị xử lý song trong mô hình truyềnthông điệp là các tiến trình Trong mô hình truyền thông điệp:

• Các tiến trình có thể thực hiện trên những bộ xử lý khác nhau và không đượctruy cập vào không gian bộ nhớ chia sẻ

• Việc truyền thông giữa các tiến trình thông qua việc gửi và nhận thông điệp

• Việc đồng bộ hóa các tiến trình của một chương trình song song được thựchiện theo cơ chế truyền thông điệp Khi một tiến trình muốn gửi một thôngđiệp thì nó phải chờ cho đến khi tiến trình nhận sẵn sàng nhận thông điệp đó

và ngược lại, cũng tương tự

Các thể hiện của mô hình truyền thông điệp

• Các thể hiện của mô hình truyền thông điệp thường chứa một thư viện cáchàm con được nhúng trong mã nguồn Người lập trình có nhiệm vụ xác địnhtất cả các khả năng song song

• Trong những năm 1980 có nhiều thư viện truyền thông điệp khác nhau Điềunày dẫn đến khó khăn cho những người lập trình khi muốn phát triển một ứngdụng hiện có

• Năm 1992, một thư viện chuẩn của mô hình truyền thông điệp đã được thiết

lập, đó là chuẩn MPI(Message Passing Interface).

Ngoài ra còn một số mô hình lập trình song song thường dùng khác như song song

dữ liệu, Hybrid, SPMD, MPMD

Phát triển thuật toán là một phần cơ bản của việc giải quyết bài toán sử dụngmáy tính Một thuật toán tuần tự về bản chất là một cách làm hay một số tuần tựcác bước để giải quyết bài toán đưa ra bằng một máy tính tuần tự Một cách tương

tự, một thuật toán song song là một cách làm chỉ cho chúng ta làm thế nào để giảiquyết bài toán đưa ra bằng các máy tính song song

Tuy nhiên, việc đặc tả một thuật toán song song liên quan tới nhiều hơn là việc

Trang 19

đặc tả các bước Ít nhất thì một thuật toán song song có thêm kích thước tương tranh

và người thiết kế thuật toán phải chỉ rõ các bước nào có thể thực hiện một cách đồngthời Đây cũng chính là nguyên nhân để có thể đạt được bất cứ lợi ích nào từ việc sửdụng các máy tính song song

Trong thực tế, việc xây dựng một thuật toán song song có thể gồm một số hoặctất cả các bước sau:

• Xác định các phần công việc có thể thực hiện đồng thời

• Gán các công việc có thể thực hiện đồng thời vào nhiều tiến trình chạy songsong

• Phân tán dữ liệu đầu vào, đầu ra, và trung gian

• Quản lý việc truy cập tơi dữ liệu chia sẻ

• Đồng bộ các bộ xử lý ở các giai đoạn khác nhau của việc thực thi chươngtrình song song

Có năm nguyên lý chính trong thiết kế thuật toán song song:

Các nguyên lý lập lịch Giảm tối thiểu các bộ xử lý sử dụng trong thuật toán song

song sao cho thời gian tính toán không tăng(Xét theo khía cạnh độ phức tạp)

Nguyên lý hình ống Nguyên lý áp dụng khi bài toán xuất hiện một dãy các thao

tác {T0, T1, , Tn−1}, trong đó Ti+1được thực hiện sau khi Ti kết thúc

Nguyên lý chia để trị Chia bài toán thành những phần nhỏ hơn có dạng giống với

bài toán ban đầu và giải quyết chúng một cách song song

Nguyên lý đồ thị phụ thuộc dữ liệu Phân tích mối quan hệ dữ liệu trong tính toán

để xây dựng đồ thị phụ thuộc dữ liệu và dựa vào đồ thị phụ thuộc để xây dựngthuật toán song song

Nguyên lý điều kiện ganh đua Nếu hai tiến trình cùng muốn truy cập vào cùng

một mục dữ liệu chia sẻ thì chúng có thể cản trở lẫn nhau Hai tiến trình ởtrong trạng thái ganh đua nếu đầu ra của việc tính toán phụ thuộc hoàn toànvào việc tiến trình nào truy cập dữ liệu chia sẻ trước nhất

Trên những kiến trúc máy tính khác nhau thì hiệu quả của thuật toán có thể rất khácnhau Việc thiết kế thuật toán song song phải được dựa trên những kiến thức về kiếntrúc máy tính, ngôn ngữ lập trình song song và các phương pháp tính toán

Trang 20

Một số khái niệm

Tác vụ (Task) là đơn vị do người dùng định nghĩa, trong đó việc tính toán chính

được chia nhỏ bằng các kĩ thuật phân chia Các tác vụ có thể được phân chiavới cùng kích cỡ hoặc không cùng kích cỡ, có thể được sinh tĩnh, tức là cáctác vụ được xác định trước khi thực hiện thuật toán, và sinh động ngược lạivới sinh tĩnh, các tác vụ không được biết trước Một tác vụ không thể chianhỏ được nữa gọi là tác vụ nguyên tử

Tiến trình(process) là các tác nhân tính toán logic thực hiện các tác vụ.

Thực hiện tuần tự là việc thực hiện chương trình một cách tuần tự trên máy một

bộ xử lý, một câu lệnh tại một thời điểm

Thực hiện song song là việc thực hiện chương trình bằng nhiều hơn một tác vụ,

mỗi tác vụ có thể được thực thi với cùng hoặc không cùng một câu lệnh tạicùng một thời điểm

Phương pháp luận để thiết kế thuật toán song song gồm bốn giai đoạn khácnhau như sau:

1 Sự chia nhỏ bài toán (partitioning): Sự tính toán và dữ liệu được chia thành

các phần nhỏ Ta không quan tâm tới có bao nhiêu bộ xử lý mà chỉ tập trungvào khả năng thực hiện song song của các phần nhỏ

2 Thiết lập kênh truyền(communication): Thiết lập kênh truyền đòi hỏi tọa

độ của các tác vụ thực hiện, cấu trúc kênh truyền và cấu trúc truyền thôngđiệp(đặc tả các thông điệp được gửi) Tối ưu hóa việc thực hiện bằng cáchphân bố truyền thông trên nhiều tác vụ và thực hiện một cách đồng thời

3 Nhóm gom các tác vụ(agglomeration): Ta đánh giá cấu trúc tác vụ và sự

truyền thông ở các bước trên quan tâm tới việc thể hiện Sau đó, xử lý độ hạttác vụ và tối ưu hóa kênh truyền thông

4 Gán vào hệ thống(mapping): Mỗi tác vụ được gán vào một bộ xử lý sao cho

sử dụng hiệu quả các bộ xử lý và giảm truyền thông tới mức tối thiểu

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 hóa những thuật toán tuần tự, biến đổi những cấu trúctuần tự để tận dụng được những khả năng song song tự nhiên của tất cả cácthà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

Trang 21

Hình 1.11: Phương pháp luận thiết kế thuật toán song song

3 Thiết kế những thuật toán song song mới từ những thuật toán song song đã

có sao cho phù hợp với cấu hình tôpô và môi trường song song trong thực tế.Trong các cách tiếp cận trên thì cách tiếp cận thông dụng là song song hóa các thuậttoán tuần tự hoặc là chuyển một dạng song song về một dạng song song phù hợphơn sao cho vẫn bảo toàn được tính tương đương trong tính toán

Trong thiết kế thuật toán song song, chúng ta cần trả lời được hai câu hỏi sau:

◦ Kiến trúc nào là phù hợp nhất với bài toán chúng ta đang giải quyết?

◦ Bài toán có thể đạt được hiệu quả gì trên một kiến trúc song song cho trước?

Để đánh giá được độ phức tạp của thuật toán song song chúng ta cần đánh giá

số các bước tính và đánh giá thời gian truyền thông giữa các tiến trình

Trang 22

Thời gian thực hiện song song

Thời gian thực hiện song song, kí hiệu là tp gồm có hai phần thời gian thực hiệncác phép tính, kí hiệu là tcomp và thời gian thực hiện truyền thông, kí hiệu là tcomm

Ta có,

tp= tcomp+ tcommThời gian tính toán tcomp được xác định giống như thuật toán tuần tự Khi có nhiềutiến trình thực hiện đồng thời thì chỉ cần tính thời gian thực hiện của tiến trình phứctạp nhất (thực hiện lâu nhất) Trong việc phân tích thời gian tính toán, chúng ta luôngiả thiết rằng các bộ xử lý là giống nhau và thực hiện với một tốc độ giống nhau.Thời gian truyền thông tcommphụ thuộc vào vào kích cỡ các thông điệp, cấu trúc kếtnối mạng đường truyền và cách thức truyền tải thông điệp,v.v Công thức ước lượngthời gian truyền thông được tính như sau:

tcomm= tstartup+ n ∗ tdataTrong đó,

◦ tstartup là thời gian cần thiết để gửi thông điệp không phải là dữ liệu Nó baogồm thời gian để đóng gói thông điệp ở nơi gửi và thời gian mở gói thôngđiệp ở nơi nhận Để đơn giản chúng ta giả thiết thời gian này là hằng số

◦ tdata là thời gian cần thiết chuyển một từ dữ liệu từ nơi gửi tới nơi nhận, đượcgiả thiết là hằng số và n là số từ dữ liệu được trao đổi trong hệ thống

Độ phức tạp thời gian của thuật toán song song

Độ phức tạp thời gian của việc thực hiện song song, tp, là tổng độ phức tạp củacác phép toán và sự truyền 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/2

số với nhau và tất cả các số đó được lưu ở máy thứ nhất Máy thứ hai phải gửi kếtquả của mình cho máy thứ nhất để cộng hai tổng thành phần với nhau Bài toán cócác bước sau:

1 Máy một gửi n/2 số cho máy hai

2 Cả hai máy thực hiện cộng n/2 số một cách đồng thời

3 Máy hai gửi kết quả tính được cho máy một

4 Máy một cộng hai tổng thành phần để đưa ra kết quả cuối cùng

Thời gian tính toán(ở bước 2 và 4):

tcomp = n/2 + 1

Trang 23

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

tcomm= (tstartup+ n/2tdata) + (tstartup+ 1tdata) = 2tstartup+ (n/2 + 1)tdata

Độ phức tạp tính toán là O(n) Độ phức tạp truyền thông là O(n) Vậy độ phứctạp thời gian của thuật toán nói trên là O(n)

Tỉ số giữa thời gian tính toán và truyền thông

Thường thì thời gian truyền thông rất đắt Nếu sự tính toán và truyền thông cócùng độ phức tạp thì việc thực hiện khi tăng n sẽ không mang lại hiệu quả tốt hơn

Do vậy độ phức tạp thời gian của việc tính toán nên lớn hơn độ phức tạp thời giantruyền thông, khi đó việc tăng n sẽ cải thiện được rất nhiều việc thực hiện

Giả sử, một bài toán có độ phức tạp thời gian truyền thông là O(n), độ phức tạpthời gian tính toán là O(n2) Việc tăng n cuối cùng sẽ có một giá trị n mà tại đó thờigian tính toán lớn hơn rất nhiều so với thời gian thực thi

Thuật toán có chi phí tốt

Một thuật toán có chi phí tốt nhất nếu chi phí để giải quyết bài toán tỉ lệ với thờigian thực hiện trên hệ thống một bộ xử lý đơn (sử dụng thuật toán tuần tự tốt nhất).Tức là,

Cost= tp× n = k × tstrong đó, Cost là chi phí thực hiện, k là hằng số Một thuật toán song song là thuậttoán có chi phí tốt nhất nếu

(độ phức tạp thời gian song song)×(số bộ xử lý)=(độ phức tạp thời gian tuần tự)

Sp= Ts/Tptrong đó,

+ Tslà thời gian thực hiện tính toán trên một bộ xử lý

+ Tp là thời gian thực hiện trên p bộ xử lý

Trang 24

1.5 Lập trình song song với MPI

Lập trình song song cũng giống với lập trình tuần tự, có nhiều ngôn ngữ và công

cụ lập trình song song khác nhau Lập trình theo mô hình truyền thông điệp trong

hệ thống máy tính có thể thực hiện theo 3 cách:

1 Sử dụng ngôn ngữ lập trình song song đặc biệt, ví dụ Occam được thiết kế để

sử dụng với các Transputer (Inmos 1986)

2 Sử dụng ngôn ngữ lập trình bậc cao (tuần tự) truyền thống được mở rộngbằng cách bổ sung thêm các từ khóa và mở rộng một cú pháp để xử lý việctrao đổi thông điệp, gồm có CC+ (mở rộng từ C++)và Fortran M (mở rộng từFortran)

3 Sử dụng những ngôn ngữ lập trình bậc cao như là ngôn ngữ C và cung cấpmột thư viện các thủ tục bên ngoài để thực hiện truyền thông điệp

Lập trình song song với MPI là lập trình theo mô hình truyền thông điệp trong hệthống máy tính sử dụng cách tiếp cận thứ ba

Với mục đích xây dựng một thư viện truyền thông điệp chuẩn, MPI đã ra đời vàhoàn thành lần đầu tiên vào tháng 6 năm 1994, MPI đã được chấp nhận và sử dụngrộng rãi trên các hệ thống phân cấp (Scalable Parallel Computers - SPCs) và các hệthống máy trạm (Networks Of Workstations - NOWs)

MPI không phải là một ngôn ngữ lập trình mới mà là một thư viện gồm các địnhnghĩa và các hàm được gọi vào từ chương trình C hoặc Fortran

Ưu điểm

• Chuẩn MPI được thiết kế để phục vụ tất cả các đối tượng có nhu cầu lập trìnhsong song sử dụng mô hình truyền thông điệp trên Fortran 77 hoặc C Để đạtđược mục đích ấy, chuẩn MPI cung cấp một giao diện đơn giản, dễ sử dụngcho đa số người dùng song vẫn đảm bảo hiệu năng cao trên các máy tính tiêntiến

• MPI phát triển một cách rộng rãi các tiêu chuẩn để viết các chương trình có

sử dụng truyền thông điệp Những tiêu chuẩn này phải đảm bảo yêu cầu cầnthực hành hiệu quả và linh hoạt, bao gồm:

– Thiết kế giao diện lập trình ứng dụng (không phải là thư viện bắt buộc

để dịch và thực thi chương trình)

Trang 25

– Đảm bảo truyền thông hiệu quả, tránh sao chép bộ nhớ, đồng thời cho

phép gối lên nhau giữa tính toán và truyền thông

– Cho phép thực thi trên một môi trường hỗn hợp.

– Cho phép liên kết với các tiện ích của C và Fortran 77.

– Cung cấp một giao diện truyền thông đáng tin cậy: người sử dụng không

phải đối mặt với các lỗi truyền thông, các lỗi này sẽ được xử lý bởi các

hệ thống con bên dưới

– Không khác quá nhiều so với các giao diện đã có như PVM, NX,

Ex-press, p4, , song lại cung cấp các mở rộng linh hoạt hơn

– Có ngôn ngữ riêng.

– Giao diện đảm bảo an toàn luồng.

Với những ưu điểm của mình chuẩn MPI đang trở thành lựa chọn ưu tiên của cácnhà lập trình song song trên mô hình truyền thông điệp

Hạn chế Chuẩn MPI không cung cấp:

Hiện nay, MPI đã có phiên bản 2.0 với các ưu điểm nổi bật:

• Cho phép sinh tiến trình động (số lượng tiến trình có thể thay đổi trong suốtquá trình thực thi chương trình)

• Cho phép truyền thông một phía (tức là việc truyền thông được phát sinh vàthực hiện ngay trong một bộ xử lý)

• Mở rộng thêm các thao tác truyền thông tập hợp (cho phép truyền thông giữacác nhóm tiến trình với nhau, mỗi nhóm tạo thành một bộ truyền thông)

• Mở rộng giao diện, hỗ trợ I/O, hỗ trợ C++ và Fortran 90,

Trang 26

1.5.2 Các hàm cơ bản trong chuẩn MPI

Trong mô hình lập trình MPI, việc tính toán bao gồm một hoặc nhiều tiến trìnhtruyền thông với nhau bằng cách goi thư viện hàm để gửi và nhận thông điệp từnhững tiến trình khác Trong hầu hết các thể hiện MPI, một tập hợp cố định các tiếntrình được tạo ra khi khởi tạo chương trình, và một tiến trình được tạo bởi một bộ

• Phương thức gửi và nhận thông điệp

Việc tạo lập tiến trình

Phiên bản 1 của MPI chỉ hỗ trợ việc tạo lập tiến trình tĩnh Tức là, tất cả các tiếntrình được xác định trước khi thực hiện và bắt đầu cùng với nhau Phiên bản 2 củaMPI đã hỗ trợ việc tạo lập tiến trình động nhưng nó thường không được sử dụng vìtổng phí của việc tạo lập tiến trình động

Trong mô hình lập trình MPI thường sử dụng mô hình tính toán SPMD Trong

hệ thống thường có một tiến trình chủ (master) điều khiển các tiến trình khác được gọi là tiến trình tớ (slave)

Các tiến trình được đánh số từ 0 đến (p − 1) dùng để định danh các tiến trình,các số này gọi là hạng của tiến trình, p là số tiến trình được sử dụng

Số lượng các hàm trong MPI rất nhiều, tuy nhiên chúng ta có thể xây dựngchương trình dựa trên các hàm cơ bản sau:

Các hàm quản lý môi trường

• Hàm khởi tạo MPI

int MPI_Init(Int∗ argc, char∗ argv)

Ý nghĩa: hàm này dùng để khởi tạo môi trường truyền thông điệp MPI Nóphải được gọi trước bất cứ hàm MPI nào Tham số của nó là con trỏ trỏ tới

các tham số của hàm main( ).

• Hàm kết thúc MPI

int MPI_Finalize(void)

Ý nghĩa: đây là hàm đóng môi trường MPI Sau lời gọi hàm này không cònlời gọi hàm MPI nào có hiệu lực

Trang 27

Các hàm truyền thông điệp điểm-điểm

• Hàm gửi thông điệp

int MPI_Send(void∗buf, int count, MPI_Datatype datatype,int dest, int tag, MPI_Comm comm)

Trong đó,

– buf: địa chỉ bắt đầu của bộ đệm gửi

– count: số các thành phần trong bộ đệm

– datatype: kiểu dữ liệu của mỗi thành phần trong bộ đệm

– dest: hạng của tiến trình nhận

– tag: nhãn của thông điệp được gửi

– comm: bộ truyền thông điệp, đó là tập hợp của các tiến trình mà các

tiến trình có thể gửi và nhận thông điệp

Ý nghĩa: hàm này dùng để gửi thông điệp có nhãn là tag và chứa dữ liệu

ở bộ đệm buf với số lượng count phần tử kiểu datatype tới tiến trình có

số hiệu dest

Một thông điệp được gửi tới một tiến trình cụ thể và được đánh dấu bởimột nhãn (giá trị là số nguyên) do người sử dụng xác định Các nhãnđược dùng để phân biệt những kiểu thông điệp khác nhau mà một tiếntrình gửi (hoặc nhận) Nhãn thông điệp có thể dùng MPI_ANY_TAGkhi thông điệp được gửi (hoặc nhận) có thể ở bất kỳ định dạng nào.Tương tự, ta có thể dùng MPI_ANY_SOURCE để nhận thông điệp từbất kỳ tiến trình nào

status là kiểu dữ liệu có cấu trúc, chứa ít nhất 3 thành phần là số hiệutiến trình gửi (source), nhãn (tag) và mã lỗi Nhãn thông báo nhận được làstatus.MPI_TAG và hạng của tiến trình gửi là status.MPI_SOURCE Khi

số lượng phần tử nhận được có thể nhỏ hơn count, hàm sau đây có chức năngtrả lại số lượng các phần tử nhận được MPI_Get_count(&status, datatype,

&nelements)

Các hàm truyền thông tập thể

• Hàm quảng bá thông điệp (loan tin)

int MPI_Bcast(void∗buf, int count, MPI_Datatype datatype,

Trang 28

Hình 1.12: Hàm giao tiếp tập thể của MPI

int root, MPI_Comm comm)

Trong đó, các tham số buf, count, datatype, comm tương tự như trong hàmMPI_Send Tham biến root chính là hạng của tiến trình tiến hành loan tin

Ý nghĩa: hàm này dùng để gửi một nội dung buf từ tiến trình có hạng root tớitất cả các tiến trình trong bộ truyền thông

• Hàm tổng hợp dữ liệu

int MPI_Gather(void∗sendbuf, int sendcount, MPI_Datatypesendtype, void ∗recvbuf, int recvcount, MPI_Datatype recvtype, int root,MPI_comm comm)

Ý nghĩa: tiến trình có số hiệu root thu thập dữ liệu trong bộ đệm sendbuf từtất cả các tiến trình trong bộ truyền thông và lưu vào trong bộ đệm recvbuftheo thứ tự hạng của các tiến trình

• Hàm phân phối dữ liệu

MPI_Scatter(void ∗sendbuf, int sendcount, MPI_Datatype

Trang 29

sendtype, void∗recvbuf, int recvcount, MPI_Datatype recvtype, MPI_commcomm)

Ý nghĩa: tiến trình có số hiệu root phân phối dữ liệu từ sendbuf tới tất cả cáctiến trình trong bộ truyền thông theo thứ tự hạng của tiến trình

• Hàm tổng hợp toàn bộ dữ liệu

MPI_allGather(void∗sendbuf, int sendcount, MPI_Datatypesendtype, void∗recvbuf, int recvcount, MPI_Datatype recvtype, MPI_commcomm)

Ý nghĩa: các tiến trình thu thập dữ liệu trong bộ đệm sendbuf từ tất cả cáctiến trình trong bộ truyền thông và lưu vào trong bộ đệm recvbuf theo thứ tựhạng của tiến trình

Các hàm quản lý nhóm

• Hàm lấy hạng của tiến trình

int MPI_Comm_rank(MPI_Comm comm, int ∗rank)

Ý nghĩa: hàm này trả lại giá trị hạng của tiến trình trong bộ truyền thông đanggọi hàm

• Hàm lấy số tiến trình

int MPI_Comm_size(MPI_Comm com, int ∗size)

Ý nghĩa: hàm này trả lại giá trị là số lượng các tiến trình trong bộ truyềnthông com

Ví dụ về một chương trình MPI đơn giản

Viết chương trình in ra tên máy và chỉ số rank của process MPI đang thực thitên máy

Trang 30

Chương 2

Kĩ thuật phân hoạch, chia để trị và một số ứng dụng

Phân hoạch(partitioning) và chia để trị(divide-and-conquer) là hai kỹ thuật cơ

bản để xây dựng một chương trình song song Hai kĩ thuật này có liên quan tới nhau.Trong kĩ thuật phân hoạch, bài toán được chia thành các phần riêng lẻ và mỗi phầnđược tính toán riêng Kĩ thuật chia để trị thường áp dụng kĩ thuật phân hoạch trongphép đệ quy để chia liên tục bài toán thành các phần nhỏ hơn trước khi giải quyếtcác phần nhỏ hơn và hợp các kết quả lại

Phân hoạch đơn giản là chia bài toán thành các phần nhỏ Tuy nhiên, các côngthức phân hoạch đều yêu cầu kết quả của các phần nhỏ hợp lại để đạt được kết quảmong muốn

Kĩ thuật phân hoạch có thể được áp dụng trong dữ liệu của chương trình, tức

là chia nhỏ dữ liệu và thao tác trên các dữ liệu đã chia một cách đồng thời Việc

này được gọi là chia nhỏ dữ liệu(data partitioning) hay sự phân nhỏ miền(domain

Trang 31

Chia nhỏ dữ liệu

Chia nhỏ dữ liệu là một phương pháp được dùng phổ biến và rộng rãi trong viêctạo sự thực hiện cùng nhau trong một thuật toán thao tác trên một cấu trúc dữ liệulớn Ta chia dữ liệu thành các phần nhỏ, nếu được cố gắng chia thành các phần bằngnhau

• Dữ liệu của bài toán có thể chia nhỏ theo nhiều cách khác nhau: theo các khối1-chiều, 2-chiều hoặc 3-chiều

• Dữ liệu chia nhỏ có thể là dữ liệu đầu vào, đầu ra, hoặc dữ liệu trung gian củabài toán:

– Chia nhỏ dữ liệu đầu ra: áp dụng cho các bài toán mà dữ liệu ra(kết quả)

có thể được tính độc lập với nhau theo một hàm đầu vào

– Chia nhỏ dữ liệu vào: Mỗi tác vụ được tạo ra cho một phần dữ liệu vào

và thực hiện các phép toán có thể trên dữ liệu cục bộ này Khi kết quảcủa mỗi tác vụ không phải là kết quả cuối cùng của bài toán thì ta cầnkết hợp lại

– Một bài toán có thể được giải quyết bằng nhiều bước và dữ liệu vào của

bước này có thể là dữ liệu ra của bước tính trước đó Việc chia nhỏ dữliệu có thể được thực hiện ở bước trung gian

Ví dụ: Sự phân chia miền xác định của một bài toán đơn giản liên quan tới lưới điểm3-chiều Việc tính toán được thực hiện bằng cách lặp lại trên mỗi điểm lưới Trongmỗi trường hợp dữ liệu được liên quan tới một tác vụ đơn thì bôi đen

Hình 2.1: Các cách chia miền xác định của một bài toán liên quan tới lưới điểm

3-chiều.

Ngày đăng: 04/10/2015, 12:10

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[1] Nguyễn Đình Hóa, Cấu trúc dữ liệu và thuật giải, Nhà xuất bản Đại học Quốc gia Hà nội, 2004 Sách, tạp chí
Tiêu đề: Cấu trúc dữ liệu và thuật giải
Nhà XB: Nhà xuất bản Đại học Quốcgia Hà nội
[2] Đoàn Văn Ban - Nguyễn Mậu Hân, Xử lý song song và phân tán, Nhà xuất bản Khoa học và kĩ thuật, 2006 Sách, tạp chí
Tiêu đề: Xử lý song song và phân tán
Tác giả: Đoàn Văn Ban, Nguyễn Mậu Hân
Nhà XB: Nhà xuất bản Khoa học và kĩ thuật
Năm: 2006
[3] Đặng Thị Ngoan, Một số thuật toán song song ứng dụng trong lý thuyết đồ thị, Khóa luận tốt nghiệp đại học 2007 Sách, tạp chí
Tiêu đề: Một số thuật toán song song ứng dụng trong lý thuyết đồ thị
Tác giả: Đặng Thị Ngoan
Nhà XB: Khóa luận tốt nghiệp đại học
Năm: 2007
[4] Barry Wilkinson, Michael Allen, Parallel programing, techigues and upplica- tions using Networked workstations and parrallel computers Sách, tạp chí
Tiêu đề: Parallel programing, techigues and upplica- tions using Networked workstations and parrallel computers
Tác giả: Barry Wilkinson, Michael Allen
[5] Ananth Grama, Anshul Gupta, George Karypis, Vipin Kumar, Introduction to parallel computing, Addison Wesley, 2003 Sách, tạp chí
Tiêu đề: Introduction to parallel computing
Tác giả: Ananth Grama, Anshul Gupta, George Karypis, Vipin Kumar
Nhà XB: Addison Wesley
Năm: 2003
[6] Ian Foster, Designing and Building Parallel Programs, Addison Wesley, 1995 Sách, tạp chí
Tiêu đề: Designing and Building Parallel Programs

HÌNH ẢNH LIÊN QUAN

Hình 1.2: Mô hình tính toán song song - Ứng dụng kỹ thuật phân hoạch và chia để trị trong thuật toán song song
Hình 1.2 Mô hình tính toán song song (Trang 8)
Hình 1.7: Chức năng của 4 mô hình máy tính - Ứng dụng kỹ thuật phân hoạch và chia để trị trong thuật toán song song
Hình 1.7 Chức năng của 4 mô hình máy tính (Trang 13)
Hình 1.10: Máy tính bộ nhớ chia sẻ-phân tán - Ứng dụng kỹ thuật phân hoạch và chia để trị trong thuật toán song song
Hình 1.10 Máy tính bộ nhớ chia sẻ-phân tán (Trang 15)
Hình 1.11: Phương pháp luận thiết kế thuật toán song song - Ứng dụng kỹ thuật phân hoạch và chia để trị trong thuật toán song song
Hình 1.11 Phương pháp luận thiết kế thuật toán song song (Trang 21)
Hình 1.12: Hàm giao tiếp tập thể của MPI - Ứng dụng kỹ thuật phân hoạch và chia để trị trong thuật toán song song
Hình 1.12 Hàm giao tiếp tập thể của MPI (Trang 28)
Hình 2.1: Các cách chia miền xác định của một bài toán liên quan tới lưới điểm 3-chiều. - Ứng dụng kỹ thuật phân hoạch và chia để trị trong thuật toán song song
Hình 2.1 Các cách chia miền xác định của một bài toán liên quan tới lưới điểm 3-chiều (Trang 31)
Hình 2.2: Chia nhỏ theo chức năng - Ứng dụng kỹ thuật phân hoạch và chia để trị trong thuật toán song song
Hình 2.2 Chia nhỏ theo chức năng (Trang 32)
Hình 2.3: Phân chia theo chức năng trong một mô hình tính toán của khí hậu - Ứng dụng kỹ thuật phân hoạch và chia để trị trong thuật toán song song
Hình 2.3 Phân chia theo chức năng trong một mô hình tính toán của khí hậu (Trang 33)
Hình 2.4: Chia nhỏ một dãy các số thành nhiều phần và tính tổng các phần - Ứng dụng kỹ thuật phân hoạch và chia để trị trong thuật toán song song
Hình 2.4 Chia nhỏ một dãy các số thành nhiều phần và tính tổng các phần (Trang 33)
Hình 2.5: Chia nhỏ một danh sách thành các phần - Ứng dụng kỹ thuật phân hoạch và chia để trị trong thuật toán song song
Hình 2.5 Chia nhỏ một danh sách thành các phần (Trang 35)
Hình 2.6: Tính tổng thành phần - Ứng dụng kỹ thuật phân hoạch và chia để trị trong thuật toán song song
Hình 2.6 Tính tổng thành phần (Trang 35)
Hình 2.8: Octree và ứng dụng để chia không gian 3-chiều - Ứng dụng kỹ thuật phân hoạch và chia để trị trong thuật toán song song
Hình 2.8 Octree và ứng dụng để chia không gian 3-chiều (Trang 38)
Hình 2.12: Thuật toán bucket sort song song - Ứng dụng kỹ thuật phân hoạch và chia để trị trong thuật toán song song
Hình 2.12 Thuật toán bucket sort song song (Trang 44)
Hình 2.13: Thuật quicksort song song với các pivot - Ứng dụng kỹ thuật phân hoạch và chia để trị trong thuật toán song song
Hình 2.13 Thuật quicksort song song với các pivot (Trang 46)
Hình 2.15: Dựng cây LET - Ứng dụng kỹ thuật phân hoạch và chia để trị trong thuật toán song song
Hình 2.15 Dựng cây LET (Trang 51)

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

🧩 Sản phẩm bạn có thể quan tâm

w