1. Trang chủ
  2. » Thể loại khác

Song song hoá thuật toán tìm đường đi ngắn nhất trên nguồn dữ liệu lớn dùng MPI

53 7 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 53
Dung lượng 1,18 MB

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

Nội dung

25 CHƯƠNG 3 - MPI TRONG THUẬT TOÁN DIJKSTRA CHO BÀI TOÁN TÌM KIẾM ĐƯỜNG ĐI NGẮN NHẤT .... Tuy nhiên, với sự bùng nổ thông tin và sự phát triển của công nghệ thông tin, những thuật toán t

Trang 1

TRƯỜNG ĐẠI HỌC LẠC HỒNG

* * *

Đặng Như Toàn

Song song hoá thuật toán tìm đường đi ngắn nhất

trên nguồn dữ liệu lớn dùng MPI

Luận văn Thạc sỹ Công nghệ thông tin

Đồng Nai - năm 2011

Trang 2

TRƯỜNG ĐẠI HỌC LẠC HỒNG

* * *

Đặng Như Toàn

Song song hoá thuật toán tìm đường đi ngắn nhất

trên nguồn dữ liệu lớn dùng MPI

Chuyên ngành: Công nghệ thông tin

Mã số: 604805

Luận văn Thạc sỹ Công nghệ thông tin

Người hướng dẫn khoa học PGS.TS Trần Văn Lăng

Đồng Nai - năm 2011

Trang 3

Được sự định hướng của thầy PGS TS Trần Văn Lăng, em đã lựa chọn đề tài

“Song song hoá thuật toán tìm kiếm đường đi ngắn nhất với MPI”

Được sự giúp đỡ và hướng dẫn tận tình của thầy PGS TS Trần Văn Lăng và một

số đồng nghiệp, đến nay em đã hoàn thành luận văn của mình Mặc dù đã cố gắng, nhưng do thời gian có hạn và hạn chế của bản thân nên không tránh khỏi

có những thiếu sót Em rất mong nhận được ý kiến đóng góp của các Thầy Cô và các bạn đồng nghiệp để luận văn được hoàn thiện hơn

Tác giả

Đặng Như Toàn

Trang 4

LỜI CẢM ƠN iii

MỤC LỤC iv

Danh mục các thuật ngữ vii

Danh mục các hình vẽ, bảng biểu viii

MỞ ĐẦU 1

1 Đặt vấn đề 1

2 Mục đích của luận văn 1

3 Nội dung của luận văn 1

4 Phương pháp nghiên cứu 2

CHƯƠNG 1 - MỘT SỐ KỸ THUẬT TÌM KIẾM ĐƯỜNG ĐI NGẮN NHẤT 3

1.1 Bài toán tìm kiếm đường đi ngắn nhất 3

1.2 Các thuật toán 4

1.2.1 Thuật toán Dijkstra 4

1.2.2 Thuật toán A star 6

1.2.3 Thuật toán di truyền 9

CHƯƠNG 2 - LẬP TRÌNH SONG SONG VỚI MPI 16

2.1 Tổng quan về lập trình song song với MPI 16

2.1.1 Giới thiệu 16

Trang 5

2.2.1 Giới thiệu 19

2.2.2 Một số vấn đề về hiệu năng 21

2.2.2.1 Năng lực tính toán 21

2.2.2.2 Cân bằng tải 23

2.2.2.3 Sự bế tắc 25

CHƯƠNG 3 - MPI TRONG THUẬT TOÁN DIJKSTRA CHO BÀI TOÁN TÌM KIẾM ĐƯỜNG ĐI NGẮN NHẤT 27

3.1 Yêu cầu đặt ra cho bài toán tìm kiếm đường đi ngắn nhất theo giải thuật Dijksta 27

3.2 Xây dựng hàm tìm kiếm đường đi ngắn nhất 27

3.2.1 Xây dựng thuật toán Dijkstra tuần tự cho bài toán 27

3.2.2 Thực hiện song song hoá 28

3.2.3 Thuật toán song song 29

3.2.4 Lựa chọn hàm MPI cho thuật toán song song 30

3.2.5 Công thức song song 35

3.3 Chi phí thời gian 38

CHƯƠNG 4 - KẾT QUẢ THỬ NGHIỆM 39

4.1 Các kết quả thử nghiệm 39

4.1.1 Kết quả thử nghiệm giải thuật Dijkstra cổ điển 39

Trang 6

KẾT LUẬN 44 TÀI LIỆU THAM KHẢO 45

Trang 7

LIS – Language Independent Specifications MIMD – Multiple Instruction Multiple Data MPI – Message Passing Interface

OSI – Open Systems Interconnection

PVM – Parallel Vitual Machine

TCP – Transmission Control Protocol

TTDT – Thuật toán di truyền

Trang 8

Hình 1.1 – Kỹ thuật quay bánh xe

Hình 2.1 – Khả năng tăng tốc độ tính toán, trường hợp lý tưởng

Hình 2.2 – Khả năng tăng tốc độ tính toán, trường hợp thực tế

Hình 3.1 – Sơ đồ khối thuật toán Dijkstra song song

Bảng 4.1 – Thời gian thực hiện thuật toán Dijkstra cổ điển

Bảng 4.2 – Thời gian thực hiện thuật toán Dijkstra song song

Bảng 4.3: Thời gian thực hiện thuật toán Dijkstra song song với nhiều tiến trình Hình 4.4: So sánh kết quả thử nghiệm thuật toán Dijksta

Hình 4.5: So sánh kết quả thử nghiệm thuật toán Dijksta với nhiều tiến trình

Trang 9

MỞ ĐẦU

1 Đặt vấn đề

Tim kiếm đường đi ngắn nhất là một bài toán kinh điển đã được nghiên cứu rất nhiều và ứng dụng trong những hệ thống chuyên biệt Rất nhiều nghiên cứu đã cải tiến những thuật toán và tối ưu thuật toán về không gian tìm kiếm, thời gian tìm kiếm

Tuy nhiên, với sự bùng nổ thông tin và sự phát triển của công nghệ thông tin, những thuật toán tìm kiếm đường đi ngắn nhất kinh điển không thể đáp ứng được thời gian tìm kiếm tốt nhất trên lượng dữ liệu lớn

Bài toán đặt ra là làm thế nào để giải quyết vấn đề tìm kiếm đường đi ngắn nhất với nguồn dữ liệu lớn và phân tán, đáp ứng được mục tiêu rút ngắn thời gian tìm kiếm

2 Mục đích của luận văn

Nghiên cứu và song song hoá thuật toán Dijkstra cho bài toán tìm đường đi ngắn nhất trên nguồn dữ liệu lớn và phân tán; từ đó nâng cao hiệu quả của việc xử lý

dữ liệu

3 Nội dung của luận văn

Trong luận văn này gồm có 3 nội dung:

- Nội dung 1: Nghiên cứu về bài toán tìm kiếm đường đi ngắn nhất Đánh giá

ưu điểm, nhược điểm của từng thuật toán

Trang 10

- Nội dung 2: Cải tiến thuật toán Dijkstra cho bài toán tìm kiếm đường đi ngắn nhất bằng cách song song hóa thuật toán để tối ưu về thời gian tìm kiếm trên nguồn dữ liệu lớn

- Nội dung 3: Tiến hành thử nghiệm, đánh giá thuật toán cải tiến

4 Phương pháp nghiên cứu

Để thực hiện những nội dung đã nêu ở trên, tác giả đã sử dụng một số phương pháp cho từng nội dung như sau:

- Nội dung 1: sử dụng phương pháp phân tích, so sánh và đánh giá các thuật toán tìm kiếm đường đi ngắn nhất

- Nội dung 2: sử dụng phương pháp phân tích khả năng song song hóa thuật toán Dijkstra

- Nội dung 3: sử dụng phương pháp đối sánh để đánh giá kết quả thử nghiệm của thuật toán đã cải tiến

Trang 11

CHƯƠNG 1 - MỘT SỐ KỸ THUẬT TÌM KIẾM ĐƯỜNG ĐI NGẮN

NHẤT

1.1 Bài toán tìm kiếm đường đi ngắn nhất

Trong lý thuyết đồ thị, bài toán đường đi ngắn nhất nguồn đơn là bài toán tìm một đường đi giữa hai đỉnh sao cho tổng các trọng số của các cạnh tạo nên đường đi đó là nhỏ nhất

Định nghĩa một cách hình thức, cho trước một đồ thị có trọng số (nghĩa là một

tập đỉnh V, một tập cạnh E, và một hàm trong số có giá trị thực f: E → R), cho trước một đỉnh v thuộc V, tìm một đường đi P từ v tới mỗi đỉnh v' thuộc V sao

cho: 

P

p

p

f( ) là nhỏ nhất trong tất cả các đường nối từ v tới v'

Các thuật toán quan trọng nhất giải quyết bài toán này là:

- Thuật toán Dijkstra: giải bài toán nguồn đơn nếu tất cả các trọng số đều không âm Thuật toán này có thể tính toán tất cả các đường đi ngắn nhất từ một đỉnh xuất phát cho trước s tới mọi đỉnh khác mà không làm tăng thời gian chạy

- Thuật toán Bellman-Ford: giải bài toán nguồn đơn trong trường hợp trọng

Trang 12

- Thuật toán Johnson: giải bài toán đường đi ngắn nhất cho mọi cặp đỉnh, có thể nhanh hơn thuật toán Floyd-Warshall trên các đồ thị thưa

Lý thuyết nhiễu (Perturbation theory): tìm đường đi ngắn nhất địa phương (trong trường hợp xấu nhất)

1.2 Các thuật toán

1.2.1 Thuật toán Dijkstra

Thuật toán Dijkstra [2], mang tên của nhà khoa học máy tính người Hà Lan Edsger Dijkstra, là một thuật toán giải quyết bài toán đường đi ngắn nhất nguồn đơn trong một đồ thị có hướng không có cạnh mang trọng số âm

Bài toán: Cho đơn đồ thị liên thông, có trọng số G=(V,E) Tìm khoảng cách

d(u0,v) từ một đỉnh u0 cho trước đến một đỉnh v bất kỳ của G và tìm đường đi ngắn nhất từ u0 đến v

Phương pháp của thuật toán Dijkstra là: xác định tuần tự đỉnh có khoảng cách đến u0 từ nhỏ đến lớn

Trước tiên, đỉnh có khoảng cách đến a nhỏ nhất chính là a, với d(u0,u0)=0 Trong các đỉnh v  u0, tìm đỉnh có khoảng cách k1 đến u0 là nhỏ nhất Đỉnh này phải là một trong các đỉnh kề với u0 Giả sử đó là u1:

d(u0,u1) = k1 Trong các đỉnh v  u0 và v  u1, tìm đỉnh có khoảng cách k2 đến u0 là nhỏ nhất Đỉnh này phải là một trong các đỉnh kề với u0 hoặc với u1 Giả sử đó là u2:

d(u0,u2) = k2

Trang 13

Tiếp tục như trên, cho đến bao giờ tìm được khoảng cách từ u0 đến mọi đỉnh v của G Nếu V={u0, u1, , un} thì:

0 = d(u0,u0) < d(u0,u1) < d(u0,u2) < < d(u0,un)

Thuật toán Dijkstra:

Procedure Dijkstra (G=(V,E) là đơn đồ thị liên thông, có trọng số với trọng số

u:= a while S 

Trang 14

1.2.2 Thuật toán A star

Thuật toán A* [1] được mô tả lần đầu vào năm 1968 bởi Peter Hart, Nils Nilsson, và Bertram Raphael Trong bài báo của họ, thuật toán được gọi là thuật toán A; khi sử dụng thuật toán này với một đánh giá heuristic thích hợp sẽ thu được hoạt động tối ưu, do đó mà có tên A*

Thuật toán này tìm một đường đi từ một nút khởi đầu tới một nút đích cho trước (hoặc tới một nút thỏa mãn một điều kiện đích) Thuật toán này sử dụng một

"đánh giá heuristic" để xếp loại từng nút theo ước lượng về tuyến đường tốt nhất

đi qua nút đó Thuật toán này duyệt các nút theo thứ tự của đánh giá heuristic này Do đó, thuật toán A* là một ví dụ của tìm kiếm theo lựa chọn tốt nhất (best-first search)

Bài toán: Giả sử u là một trạng thái đạt tới (có đường đi từ trạng thái ban đầu u0tới u) Xác định hai hàm đánh giá sau:

- g(u) là đánh giá độ dài đường đi ngắn nhất từ u0 tới u (Đường đi từ u0 tới

trạng thái u không phải là trạng thái đích được gọi là đường đi một phần, để phân

biệt với đường đi đầy đủ, là đường đi từ u0 tới trạng thái đích)

Trang 15

- h(u) là đánh giá độ dài đường đi ngắn nhất từ u tới trạng thái đích

Hàm h(u) được gọi là chấp nhận được (hoặc đánh giá thấp) nếu với mọi trạng

thái u, h(u)  độ dài đường đi ngắn nhất thực tế từ u tới trạng thái đích Chẳng hạn trong bài toán tìm đường đi ngắn nhất trên bản đồ giao thông, có thể xác định h(u) là độ dài đường chim bay từ u tới đích

Có thể sử dụng kỹ thuật tìm kiếm leo đồi với hàm đánh giá h(u) Tất nhiên phương pháp này chỉ cho phép tìm được đường đi tương đối tốt, chưa chắc đã là đường đi tối ưu

Ngoài ra, cũng có thể sử dụng kỹ thuật tìm kiếm tốt nhất đầu tiên với hàm đánh giá g(u) Phương pháp này sẽ tìm ra đường đi ngắn nhất, tuy nhiên nó có thể kém hiệu quả

Để tăng hiệu quả tìm kiếm, có thể sử dụng hàm đánh giá mới:

f(u) = g(u) + h(u)

Tức là, f(u) là đánh giá độ dài đường đi ngắn nhất qua u từ trạng thái ban đầu tới trạng thái kết thúc

Thuật toán A* là thuật toán sử dụng kỹ thuật tìm kiếm tốt nhất đầu tiên với hàm đánh giá f(u)

Thuật toán A*:

begin

1 Khởi tạo danh sách L chỉ chứa trạng thái ban đầu;

2 loop do

2.1 if L rỗng then

Trang 16

{thông báo thất bại; stop};

2.2 Loại trạng thái u ở đầu danh sách L;

2.3 if u là trạng thái đích then

{thông báo thành công; stop}

2.4 for mỗi trạng thái v kề u do

{g(v) g(u) + k(u,v);

f(v) g(v) + h(v);

2.5 Sắp xếp L theo thứ tự tăng dần của hàm f sao cho

trạng thái có giá trị của hàm f nhỏ nhất

ở đầu danh sách;

end;

Độ phức tạp của thuật toán A*: Độ phức tạp thời gian của A* phụ thuộc vào

đánh giá heuristic Trong trường hợp xấu nhất, số nút được mở rộng theo hàm

mũ của độ dài lời giải, nhưng nó sẽ là hàm đa thức khi hàm heuristic hthỏa mãn điều kiện sau:

|h(x) – h * (x)| ≤ O(log h * (x)) Trong đó h * là heuristic tối ưu, nghĩa là hàm cho kết quả là chi phí chính xác để

đi từ x tới đích Nói cách khác, sai số của h không nên tăng nhanh hơn lôgarit của "heuristic hoàn hảo" h * - hàm trả về khoảng cách thực từ x tới

đích

Trang 17

Vấn đề sử dụng bộ nhớ của A* còn rắc rối hơn độ phức tạp thời gian Trong trường hợp xấu nhất, A* phải ghi nhớ số lượng nút tăng theo hàm mũ

1.2.3 Thuật toán di truyền

Thuật toán di truyền (TTDT) là thuật toán bắt chước sự chọn lọc tự nhiên và di truyền Trong tự nhiên, các cá thể khỏe, có khả năng thích nghi tốt với môi trường sẽ được tái sinh và nhân bản ở các thế hệ sau Mỗi cá thể có cấu trúc gien đặc trưng cho phẩm chất của cá thể đó Trong quá trình sinh sản, các cá thể con

có thể thừa hưởng các phẩm chất của cả cha và mẹ, cấu trúc gien của nó mang một phần cấu trúc gien của cha và mẹ Ngoài ra, trong quá trình tiến hóa, có thể xảy ra hiện tượng đột biến, cấu trúc gien của cá thể con có thể chứa các gien mà

cả cha và mẹ đều không có

Trong TTDT, mỗi cá thể được mã hóa bởi một cấu trúc dữ liệu mô tả cấu trúc

gien của cá thể đó, ta sẽ gọi nó là nhiễm sắc thể (chroniosome) Mỗi nhiễm sắc

thể được tạo thành từ các đơn vị được gọi là gien Chẳng hạn, trong các TTDT

cổ điển, các nhiễm sắc thể là các chuỗi nhị phân, tức là mỗi cá thể được biểu diễn bởi một chuỗi nhị phân

TTDT sẽ làm việc trên các quần thể gồm nhiều cá thể Một quần thể ứng với một

giai đoạn phát triển sẽ được gọi là một thế hệ Từ thế hệ ban đầu được tạo ra,

TTDT bắt chước chọn lọc tự nhiên và di truyền để biến đổi các thế hệ TTDT sử dụng các toán tử cơ bản sau đây để biến đổi các thế hệ:

- Toán tử tái sinh (reproduction) (còn được gọi là toán tử chọn lọc (selection)): Các cá thể tốt được chọn lọc để đưa vào thế hệ sau Sự lựa chọn này

được thực hiện dựa vào độ thích nghi với môi trường của mỗi cá thể Ta sẽ gọi

hàm ứng mỗi cá thể với độ thích nghi của nó là hàm thích nghi (fitness function)

Trang 18

- Toán tử lai ghép (crossover): Hai cá thể cha và mẹ trao đổi các gien để tạo

Khởi tạo thế hệ ban đầu P(t);

Đánh giá P(t) (theo hàm thích nghi);

Trang 19

Trong thủ tục trên, điều kiện kết thúc vòng lặp có thể là một số thế hệ đủ lớn nào

đó, hoặc độ thích nghi của các cá thể tốt nhất trong các thế hệ kế tiếp nhau khác nhau không đáng kể Khi thuật toán dừng, cá thể tốt nhất trong thế hệ cuối cùng được chọn làm nghiệm cần tìm

Xét chi tiết hơn toán tử chọn lọc và các toán tử di truyền (lai ghép, đột biến) trong các TTDT cổ điển:

 Chọn lọc:

Việc chọn lọc các cá thể từ một quần thể dựa trên độ thích nghi của mỗi cá thể Các cá thể có độ thích nghi cao có nhiều khả năng được chọn Cần nhấn mạnh

rằng, hàm thích nghi chỉ cần là một hàm thực dương, nó có thể không tuyến tính,

không liên tục, không khả vi Quá trình chọn lọc được thực hiện theo kỹ thuật quay bánh xe

Giả sử thế hệ hiện thời P(t) gồm có n cá thể {x1, ,xn} Số n được gọi là cỡ của quần thể Với mỗi cá thể xi, tính độ thích nghi của nó f(xi) Tính tổng các độ thích nghi của tất cả các cá thể trong quần thể:

1 if(xi)F

Mỗi lần chọn lọc, thực hiện hai bước sau:

- Sinh ra một số thực ngẫu nhiên q trong khoảng (0, F);

- xk là cá thể được chọn, nếu k là số nhỏ nhất sao cho

1

4)(

Trang 20

Việc chọn lọc theo hai bước trên có thể minh họa như sau: Có một bánh xe được chia thành n phần, mỗi phần ứng với độ thích nghi của một cá thể (hình 1) Một mũi tên chỉ vào bánh xe Quay bánh xe, khi bánh xe dừng, mũi tên chỉ vào phần nào, cá thể ứng với phần đó được chọn

Hình 1.1: Kỹ thuật quay bánh xe

Rõ ràng là với cách chọn này, các cá thể có thể có độ thích nghi càng cao càng

có khả năng được chọn Các cá thể có độ thích nghi cao có thể có một hay nhiều bản sao, các cá thể có độ thích nghi thấp có thể không có mặt ở thế hệ sau (nó bị chết đi)

 Lai ghép:

Trên cá thể được chọn lọc, tíến hành toán tử lai ghép Đầu tiên cần đưa ra xác suất lai ghép pc xác suất này cho hy vọng có pc.n cá thể được lai ghép (n là cỡ của quần thể)

Với mỗi cá thể ta thực hiện hai bước sau:

- Sinh ra số thực ngẫu nhiên r trong đoạn [0, 1];

- Nếu r < pc thì cá thể đó được chọn để lai ghép

Từ các cá thể được chọn để lai ghép, người ta cặp đôi chúng một cách ngẫu nhiên Trong trường hợp các nhiễm sắc thể là các chuỗi nhị phân có độ dài cố định m, ta có thể thực hiện lai ghép như sau: Với mỗi cặp, sinh ra một số nguyên

Trang 21

ngẫu nhiên p trên đoạn [0, m -1], p là vị trí điểm ghép Cặp gồm hai nhiễm sắc thể

a = (a1 , , ap , ap+1 , , am)

a = (b1 , , bp , bp+1 , , bm) được thay bởi hai con là:

a' = (a1 , , ap , bp+1 , , bm) b' = (b1 , , bp , ap+1 , , am)

 Đột biến:

Thực hiện toán tử đột biến trên các cá thể có được sau quá trình lai ghép Đột biến là thay đổi trạng thái một số gien nào đó trong nhiễm sắc thể Mỗi gien chịu đột biến với xác suất pm Xác suất đột biến pm do ta xác định và là xác suất thấp Sau đây là toán tử đột biến trên các nhiễm sắc thể chuỗi nhị phân

Với mỗi vị trí i trong nhiễm sắc thể:

a = (a1 , , ai , , am) Sinh ra một số thực nghiệm ngẫu nhiên pi trong [0,1] Qua đột biến a được biến thành a’ như sau:

a' = (a'1 , , a'i , , a'm) Trong đó:

a'i = ai nếu pi pm

1 - ai nếu pi < pm

Trang 22

Sau quá trình chọn lọc, lai ghép, đột biến, một thế hệ mới được sinh ra Công việc còn lại của thuật toán di truyền bây giờ chỉ là lặp lại các bước trên

Thuật toán di truyền khác với các thuật toán tối ưu khác ở các điểm sau:

- TTDT chỉ sử dụng hàm thích nghi để hướng dẫn sự tìm kiếm, hàm thích nghi chỉ cần là hàm thực dương Ngoài ra, nó không đòi hỏi không gian tìm kiếm phải có cấu trúc nào cả

- TTDT làm việc trên các nhiễm sắc thể là mã của các cá thể cần tìm

- TTDT tìm kiếm từ một quần thể gồm nhiều cá thể

- Các toán tử trong TTDT đều mang tính ngẫu nhiên

Để giải quyết một vấn đề bằng TTDT, cần thực hiện các bước sau đây:

- Trước hết cần mã hóa các đối tượng cần tìm bởi một cấu trúc dữ liệu nào

- Xác định cỡ của quần thể và khởi tạo quần thể ban đầu

- Xác định xác suất lai ghép pc và xác suất đột biến Xác suất đột biến cần là xác suất thấp Người ta (Goldberg, 1989) khuyên rằng nên chọn xác suất lai ghép

là 0,6 và xác suất đột biến là 0,03 Tuy nhiên cần qua thử nghiệm để tìm ra các xác suất thích hợp cho vấn đề cần giải quyết

Trang 23

Nói chung thuật ngữ TTDT là để chỉ TTDT cổ điển, khi mà cấu trúc của các nhiễm sắc thể là các chuỗi nhị phân với các toán tử di truyền đã được mô tả ở trên Song trong nhiều vấn đề thực tế, thuận tiện hơn, có thể biểu diễn nhiễm sắc thể bởi các cấu trúc khác, chẳng hạn vectơ thực, mảng hai chiều, cây Tương ứng với cấu trúc của nhiễm sắc thể, có thể có nhiều cách xác định các toán tử di truyền Quá trình sinh ra thế hệ mới P(t) từ thế hệ cũ P(t - 1) cũng có nhiều cách chọn lựa Người ta gọi chung các thuật toán này là thuật toán tiến hóa (evolutionary algorithms) hoặc chương trình tiến hóa (evolution program)

Trang 24

CHƯƠNG 2 - LẬP TRÌNH SONG SONG VỚI MPI 2.1 Tổng quan về lập trình song song với MPI

2.1.1 Giới thiệu

Message Passing Interface – MPI là một chuẩn mới được sử dụng rộng rãi nhất

Nó không phải là một ngôn ngữ lập trình mới, thay vào đó nó là một thư viện của chương trình con mà có thể được gọi từ chương trình C và Fortran 77

MPI được phát triển bởi một diễn đàn mở quốc tế, bao gồm các đại diện từ ngành công nghiệp, các học viện và phòng thí nghiệm của chính phủ Nó đã nhanh chóng được chấp nhận rộng rãi bởi được thiết kế cẩn thận cho phép hiệu suất tối đa trên một loạt các hệ thống, và nó dựa trên truyền thông điệp, một trong những mô hình mạnh mẽ nhất và được sử dụng rộng rãi cho lập trình các

Trang 25

Trong tháng 11 năm 1992, một cuộc họp của nhóm cộng tác MPI đã được tổ chức tại Minneapolis, mà tại đó hội thảo quyết định đặt các quá trình tiêu chuẩn hoá trên một cơ sở chính thức hơn Nhóm cộng tác MPI đã gặp nhau 6 tuần một lần trong suốt 9 tháng đầu của năm 1993 Bản dự thảo chuẩn MPI đã được trình bày tại hội nghị Siêu máy tính năm 93 trong tháng 11 năm 1993

Sau một thời gian nhận những ý kiến đóng góp từ cộng đồng, một số kết quả được thay đổi trong MPI, phiên bản 1.0 của MPI được phát hành vào tháng 6 năm 1994 Thông qua những cuộc gặp gỡ và thư điện tử, các nhà nghiên cứu đã thảo luận với nhau thành lập diễn đàn MPI, trong đó tất cả các thành viên của cộng đồng điện toán hiệu suất cao đều có thể đăng ký làm thành viên của diễn đàn

MPI đã thu hút sự tham gia khoảng 80 người từ 40 tổ chức, chủ yếu là ở Mỹ và Châu Âu Hầu hết các nhà cung cấp chính của máy tính đều được tham gia vào MPI cùng với các nhà nghiên cứu từ các trường đại học, phòng thí nghiệm của chính phủ và ngành công nghiệp

2.1.2 Một số đặc điểm của lập trình MPI

MPI là một giao thức truyền thông độc lập với ngôn ngữ dùng để lập trình máy tính song song MPI hỗ trợ cả giao tiếp điểm – điểm và giao tiếp tập thể Mục tiêu của MPI là hiệu suất, khả năng mở rộng và khả năng di dộng cao

MPI thường xuyên chạy trên các máy tính chia sẻ bộ nhớ

Mặc dù MPI thuộc về lớp thứ 5 và lớp cao hơn của mô hình OSI, nhưng những triển khai có thể bao gồm hầu hết các lớp, với socket và TCP (Transmission Control Protocol) được dùng trong tần vận chuyển

Trang 26

Hầu hết các triển khai MPI bao gồm một thiết lập định tuyến riêng có thể được gọi trực tiếp từ C, C++, Fortran hay bất kỳ ngôn ngữ nào có giao diện với các thư viện, bao gồm C#, Java hoặc Python Những ưu điểm ucar MPI vượt qua những thư viện truyền thông điệp cũ là tính di động (MPI có thể được triển khai cho hầu hết các kiến trúc bộ nhớ phân tán) và tốc độ (MPI thực hiện nguyên tắc tối ưu hoá cho phần cứ mà nó chạy)

MPI sử dụng LIS (Language Independent Specifications) để gọi và ràng buộc ngôn ngữ Phiên bản đầu tiên được phát hành chỉ định ràng buộc ANSI C và Fortran 77 cùng với LIS Năm 2008, chuẩn MPI-1.3 chứa khoảng 128 chức năng, đây cũng là phát hành cuối cùng của seri MPI-1 trong năm 2008

Phiên bản MPI-2.2 bao gồm những tính năng nới như là I/O song song, quản lý tiến trình động và điều hành bộ nhớ từ xa LIS của MPI-2 thiết lập hơn 500 hàm

và cung cấp ràng buộc ngôn ngữ cho ANSI C, ANSI C++ và ANSI Fortran (Fortran 90) Khả năng tương tác đối tượng cũng được thêm vào để cho phép lập trình truyền thông điệp bằng ngôn ngữ hỗn hợp dễ dàng hơn

MPI cung cấp mô hình liên kết ảo, đồng bộ hoá và chức năng liên lạc giữa một tập hợp các tiến trình (đã được ánh xạ tới các nút/máy chủ/máy tính cụ thể) trong một ngôn ngữ độc lập, với cú pháp ngôn ngữ đặc trưng (ràng buộc), cùng với một vài tính năng ngôn ngữ đặc trưng Những chương trình MPI luôn luôn làm việc với các tiến trình, nhưng những lập trình viên thường xem các tiến trình như

là những bộ vi xử lý Thông thường, để đạt hiệu suất tối đa, mỗi CPU (hoặc 1 nhân trong một máy tính đa nhân) sẽ được giao chỉ một tiến trình duy nhất

Những chức năng thư viện MPI bao gồm (không giới hạn) những hoạt động nhận/gửi loại điểm – điểm, lựa chọn giữa mô hình xử lý logic Cartesian hoặc mô

Ngày đăng: 12/05/2021, 00:13

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