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

Tối ưu hóa truyền thông trong chương trình song song

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (684.31 KB, 57 trang )

BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƢỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI

NGUYỄN THỊ TỐ LOAN

TỐI ƢU HÓA TRUYỀN THÔNG
TRONG CHƢƠNG TRÌNH SONG SONG

LUẬN VĂN THẠC SĨ KỸ THUẬT
Chuyên ngành: CÔNG NGHỆ THÔNG TIN

NGƯỜI HƯỚNG DẪN
TS. VŨ VĂN THIỆU

Hà nội - 2015


LỜI CAM ĐOAN
Luận văn thạc sĩ này do tôi nghiên cứu và thực hiện dưới sự hướng dẫn của
thầy giáo TS. Vũ Văn Thiệu. Để hoàn thành bản luận văn này, ngoài các tài liệu
thảm khảo đã liệt kê, tôi cam đoan không sao chép toàn văn các công trình hoặc thiết
kế tốt nghiệp của người khác

Tác giả luận văn

Nguyễn Thị Tố Loan


MỤC LỤC
DANH MỤC CÁC CHỮ VIẾT TẮT ................................................................... 5
DANH MỤC CÁC HÌNH VẼ .............................................................................. 6


DANH MỤC CÁC BẢNG.................................................................................... 7
Mở đầu .................................................................................................................. 1
Chương 1: Mô hình tính toán song song sử dụng thư viện MPI .......................... 3
1.1. Các mô hình tính toán song song ................................................................ 3
1.1.1. Mô hình Master/Slave ......................................................................... 3
1.1.2. Mô hình Data pipelining ..................................................................... 4
1.1.3. Mô hình Divide and conquer .............................................................. 4
1.1.4. Mô hình SPMD .................................................................................... 4
1.2. Giới thiệu thư viện lập trình song song MPI .............................................. 6
1.2.1 Giới thiệu.............................................................................................. 6
1.2.2 MPI tiêu chuẩn .................................................................................... 6
1.2.3 Khái niệm cơ bản của MPI .................................................................. 7
1.3. Các Phương thức truyền thông trong MPI ................................................ 15
1.3.1. Phương thức truyền thông blocking MPI.......................................... 16
1.3.2. Phương thức truyền thông unblocking MPI ..................................... 16
1.3.3. So sánh 2 phương thức truyền thông Blocking và Unblocking ........ 17
Chương 2: Bài toán phương trình nước nông ..................................................... 18
2.1. Giới thiệu bài toán Shallow-Water Equations .......................................... 18
2.2. Phương pháp số giải bài toán Shallow-Water Equations.......................... 19
2.2.1. Phương pháp rời rạc hóa theo không gian ....................................... 19
2.2.2. Điều kiện biên ................................................................................... 21
2.2.3. Phương pháp tích hợp theo thời gian ............................................... 22
2.3. Cài đặt chương trình .................................................................................. 23


2.3.1. Cài đặt hàm rời rạc theo không gian ................................................ 23
2.3.2. Cài đặt hàm tích hợp theo thời gian TI ............................................ 25
2.3.3. Khởi tạo giá trị ban đầu .................................................................... 26
2.3.4. Chương trình chính ........................................................................... 27
Chương 3 : Thiết kế giải thuật truyền thông tối ưu trong chương trình song song

............................................................................................................................. 28
3.1 Ý tưởng xây dựng giải thuật truyền thông tối ưu....................................... 28
3.2 Cài đặt chương trình song song thông thường ........................................... 29
3.2.1 Giải thuật chia miền tính toán .......................................................... 30
3.2.2 Giải thuật Phân tán dữ liệu đầu vào tới tất cả các Processor .......... 31
3.2.3.Tính toán ............................................................................................ 32
3.2.4. Tập hợp kết quả từ các Processor về Root. ...................................... 35
3.2.5 Cấu trúc hàm main của chương trình song song thông thường ........ 35
3.3 Giải thuật truyền thông trong chương trình song song tối ưu.................... 36
Chương 4 : Chạy thử nghiệm chương trình và đánh giá kết quả ........................ 44
4.1. Các nền tảng tính toán song song. ............................................................ 44
4.2 Thử nghiệm và phân tích kết quả.. ............................................................ 45
4.2.1. Kiểm tra tính chính xác của chương trình: ....................................... 45
4.2.2. Đánh giá hiệu quả của C so với MPI................................................ 45
4.2.3 Đánh giá hiệu quả của MPI trên nhiều nhân .................................... 46
4.2.4 Đánh giá hiệu quả của thuật toán truyền thông tối ưu ...................... 46
Kết luận ............................................................................................................... 47


DANH MỤC CÁC CHỮ VIẾT TẮT

STT

Viết tắt

Tiếng Anh

Tiếng Việt

1


CPU

Center Processor Unit

Bộ xử lý trung tâm

2

SPMD

Single Program Multiple Data

Mô hình lập trình song song SPMD

5

MPI

Message Passing Interface

Giao tiếp truyền dữ liệu

4

PDEs

Partial Diffirential Equations

Hệ phương trình đạo hàm riêng


5

SD

Spatial discretization

Rời rạc hóa không gian

6

TI

Time integration

Tích hợp theo thời gian


DANH MỤC CÁC HÌNH VẼ

STT

Hình

Tên hình

Trang

1


Hình 1

Mô hình lập trình song song SPMD

2

Hình 2

Truyền thông point to point

10

3

Hình 3

Broadcast, Scatter, Gather

15

4

Hình 4

Phương thức truyền thông Blocking MPI

16

5


Hình 5

Phương thức truyền thông Unblocking MPI

16

6

Hình 6

Cách chia miền tính toán tại một điểm lưới

20

7

Hình 7a

Điều kiện biên tuần hoàn theo chiều x

22

8

Hình 7b

Điều kiện biên tuần hoàn theo chiều y

22


9

Hình 8

Các điểm lân cận

23

10

Hình 9

Cách đánh chỉ số

25

11

Hình 10

Cách chia miền tính toán thành các Subdomain

30

12

Hình 11

Phân chia miền Halozone


32

13

Hình 12

Truyền thông

33

14

Hình 13

Truyền thông Blocking MPI và Unblocking MPI

37

5


DANH MỤC CÁC BẢNG

STT

Bảng

Tên bảng

Trang


1

Bảng 1 Phương thức giao tiếp MPI

11

2

Bảng 2 Giao tiếp MPI thông thường

12

3

Bảng 3 Phương thức truyền thông trong MPI

17

4

Bảng 4 Thông số cơ bản của máy tính chạy thử nghiệm

44

5

Bảng 5 Kết quả thời gian chạy trong C và MPI thông thường

45


6

Bảng 6 Kết quả thời gian chạy trong MPI thông thường

46

7

Bảng 7

Kết quả thời gian chạy trong MPI thông thường và MPI
tối ưu

46


LỜI NÓI ĐẦU

Ngày nay, môi trường bị ô nhiễm nặng nề, khí hậu thay đổi không lường. Những
năm gần đây thế giới đã và đang chịu ảnh hưởng của sóng thần, lũ lụt. Vẫn còn đó
những đau thương do sóng thần và lũ lụt gây ra. Việt nam có gần 7000 hồ chứa lớn,
nhỏ đã và đang được xây dựng nên an toàn đập đang trở thành một vấn đề cấp thiết
trong quản lý nguồn nước.
Tuy nhiên, việc triển khai ứng dụng còn gặp nhiều khó khăn như khó cài đặt
chương trình, số CPU cho một máy tính để chạy chương trình có hạn. Nhưng em hy
vọng với nghiên cứu này sẽ góp phần tính toán các thông số thủy lực của dòng chảy lũ
như: mực nước, vận tốc,… tương ứng với các kịch bản vỡ đập để từ đó đưa ra các cảnh
báo sớm cũng như đánh giá rủi ro và phương án đề phòng.
Em xin chân thành cảm ơn thầy giáo TS. Vũ Văn Thiệu đã nhiệt tình giúp đỡ để em

hoàn thành đề tài này.

Hà nội, tháng 4 năm 2015
Học viên
Nguyễn Thị Tố Loan


Mở đầu

Mở đầu
Rất nhiều bài toán trong khoa học cũng như trong kỹ thuật có khối lượng tính
toán rất lớn. Ví dụ như bài toán dự báo thời tiết, bài toán nhận dạng vân tay, bài
toán mô phỏng động lực học chất lỏng, ... Trong dự báo thời tiết, để dự báo cho
ngày kế tiếp cần thực hiện khoảng một triệu tỷ (1015) phép toán. Khi muốn kéo dài
thời gian dự báo hoặc tăng độ chính xác của bản tin dự báo thì khối lượng tính toán
tăng theo cấp số nhân. Các bài toán có khối lượng tính toán lớn như kể trên gọi là
các bài toán tính toán hiệu năng cao.
Trước đây các bài toán tính hiệu năng cao chủ yếu được thực hiện song song
trên các hệ thống siêu máy tính. Trong những năm gần đây, các nền tảng cho phép
thực hiện các chương trình song song trở nên đa dạng hơn. Ngoài các siêu máy tính
còn có các hệ thống khác như Cluster, Grid, Cloud, GPGPU, hay các máy tính cá
nhân sử dụng chip đa lõi.
Trong rất nhiều bài toán tính toán hiệu năng cao, ví dụ như bài toán dự báo thời
tiết và bài toán phương trình nước nông, để tính toán tại một điểm lưới yêu cầu
thông tin (hay dữ liệu) tại các điểm lưới khác. Chúng tôi gọi những bài toán như
vậy là bài toán có sự phụ thuộc dữ liệu trong tính toán.
Trên hệ thống máy tính song song có bộ nhớ phân tán, mỗi CPU có một bộ nhớ
riêng. CPU này không thể truy cập dữ liệu trên bộ nhớ của CPU khác.
Trong một chương trình song song SPMD (Single Program Multiple Data) hay
còn gọi là mô hình lập trình song song Domain decomposition (Phân chia miền

tính toán), miền tính toán của bài toán (domain) được chia thành các miền con
(subdomain). Mỗi miền con được gán cho một CPU. Do các CPU không thể truy
cập bộ nhớ của nhau, nếu có sự phụ thuộc trong tính toán thì cần phải truyền thông
giữa các CPU. Cụ thể hơn, nếu việc tính toán trên CPU A cần dữ liệu lưu trữ trong

Học viên: Nguyễn Thị Tố Loan

1

Luận văn thạc sĩ


Mở đầu
bộ nhớ riêng của CPU B, CPU B sẽ gửi và CPU A sẽ nhận dữ liệu này. Quá trình
đó gọi là truyền thông.
Việc cần phải truyền thông làm tăng thời gian thực hiện của chương trình song
song. Nếu dữ liệu truyền thông lớn hoặc tốc độ của mạng kết nối giữa các CPU
nhỏ, thời gian truyền thông sẽ rất lớn, làm giảm hiệu quả của chương trình song
song. Trong khi đó, trong lúc truyền thông, các bộ vi xử lý hoạt động ở chế độ chờ,
làm giảm hiệu suất của viêc tận dụng hệ thống. Vì vậy, việc đưa ra một phương
pháp truyền thông tối ưu để giảm thời gian truyền thông trở nên rất quan trọng
trong tính toán song song. Tuy nhiên, cho đến nay có ít nghiên cứu đề cập đến vấn
đề này.
Luận văn này sẽ nghiên cứu xây dựng thuật toán để tối ưu hóa việc truyền dữ
liệu trong chương trình tính toán song song dựa trên ý tưởng chồng chéo giứa tính
toán với truyền thông: trong khi truyền dữ liệu, thực hiện phần tính toán mà dữ liệu
vào ra không phụ thuộc vào dữ liệu đang được truyền thông. Sau đó chúng tôi sẽ
áp dụng thử nghiệm thuật toán này vào bài toán phương trình nước nông.
Luận văn bao gồm các chương chính sau:
Chƣơng 1: Tìm hiểu các mô hình tính toán song song và thư viện lập trình

song song MPI, tìm hiểu các phương thức truyền thông trong MPI.
Chƣơng 2: Tìm hiểu bài toán Shallow-Water Equations (Phương trình nước
nông), xây dựng phương pháp số giải bài toán Shallow-Water Equations, cài đặt
chương trình.
Chƣơng 3: Thiết kế giải thuật truyền thông tối ưu trong chương trình song
song
Chƣơng 4: Chạy thử nghiệm chương trình song song trên các hệ thống như
cluster, siêu máy tính, phân tích kết quả, đánh giá hiệu quả của thuật toán truyền
thông.

Học viên: Nguyễn Thị Tố Loan

2

Luận văn thạc sĩ


Chương 1: Mô hình tính toán song song sử dụng thư viện MPI
Chƣơng 1: Mô hình tính toán song song sử dụng thƣ viện MPI

1.1. Các mô hình tính toán song song
Hiện có rất nhiều mô hình lập trình song song. Tuy nhiên, các mô hình sau đây
hay được sử dụng nhất:
 Master/Slave.
 Single Program Multiple Data (SPMD).
 Data pipelining.
 Divide and conquer.
Các mô hình tính toán song song được trình bày chi tiết trong [5,6,7]. Trong phần sau
tôi sẽ trình bày tóm tắt các mô hình tính toán song song trên.
1.1.1. Mô hình Master/Slave

Mô hình Master/ Slave bao bồm: một tiến trình Master và nhiều tiến trình
Slave. Tiến trình tổng thể Master chia bài toán thành các nhiệm vụ nhỏ cho các tiến
trình Slave xử lý. Sau đó thu thập và kết hợp các kết quả từ các tiến trình Slave.
Mỗi tiến trình Slave nhận một nhiệm vụ từ tiến trình master, thực hiện nhiệm vụ đó
và gửi kết quả về tiến trình Master. Việc truyền thông chỉ cần thiết giữa các tiến
trình Master và Slave
Mô hình Master/Slave này phù hợp cho các ứng dụng là một thuật toán tuần tự
có thể được thực hiện đồng thời và độc lập trên các tiến trình khác nhau với dữ liệu
đầu vào và dữ liệu đầu ra khác nhau. Mô hình này cũng có thể thực hiện với nhiều
chương trình khác nhau sử dụng cùng một dữ liệu đầu vào.

Học viên: Nguyễn Thị Tố Loan

3

Luận văn thạc sĩ


Chương 1: Mô hình tính toán song song sử dụng thư viện MPI
1.1.2. Mô hình Data pipelining
Trong mô hình Data Pipelining, một nhóm các tiến trình hình thành nên một
pipeline ảo. Mỗi luồng dữ liệu liên tục được đưa vào các pipeline, các tiến trình
thực hiện tại các công đoạn khác nhau của pipeline theo mô hình đồng thời một
cách chồng chéo. Mô hình này thường được áp dụng trong các ứng dụng giảm dữ
liệu và xử lý ảnh
1.1.3. Mô hình Divide and conquer
Mô hình chia để trị: Một bài toán được chia thành nhiều bài toán con. Các bài
toán con được giải quyết một cách độc lập và tổng hợp kết quả cho kết quả cuối
cùng. Khác với mô hình Master / Slave giao tiếp giữa tiến trình tổng thể và tiến
trình con là cần thiết. Mô hình chia để trị không đòi hỏi sự thông tin liên lạc nào

giữa các tiến trình vì các bài toán trong mô hình này là độc lập.
1.1.4. Mô hình SPMD
Trong mô hình SPMD, miền tính toán của bài toán (Domain) được chia thành
các miền con (Subdomain), các miền con được tính toán bởi cùng một chương
trình trên các bộ xử lý (Process) khác nhau. Mô hình lập trình song song SPMD
được mô tả như trong Hình 1.

Học viên: Nguyễn Thị Tố Loan

4

Luận văn thạc sĩ


Chương 1: Mô hình tính toán song song sử dụng thư viện MPI

Hình 1: Mô hình lập trình song song SPMD

Một chương trình song song sử dụng mô hình SPMD bao gồm các bước chính
sau:
 Phân chia miền tính toán (Domain decomposition)
 Phân tán dữ liệu đầu vào (Data distribution)
 Truyền thông dữ liệu (Communication)
 Tính toán (Computation)
 Tập hợp dữ liệu đầu ra (Result collection)
Việc lựa chọn mô hình lập trình song song dựa trên kiến trúc hệ thống tính
toán song song cũng như kiểu dữ liệu và tính toán của bài toán. Trong các mô hình
trên, mô hình SPMD là phổ biến nhất do phù hợp với các hệ thống tính toán có bộ
nhớ phân tán và các bài toán có dữ liệu phân tán. Do đó trong luận văn này tôi sẽ
chọn SPMD làm mô hình tính toán song song.


Học viên: Nguyễn Thị Tố Loan

5

Luận văn thạc sĩ


Chương 1: Mô hình tính toán song song sử dụng thư viện MPI
1.2. Giới thiệu thƣ viện lập trình song song MPI
Thư viện lập trình song song MPI được trình bày chi tiết trong [4,5,7]. Trong phần
sau tôi sẽ giới thiệu sơ lược một số nội dung liên quan đến Luận văn này.
1.2.1 Giới thiệu
MPI là viết tắt của các chữ Message Passing Interface. MPI là bộ thư viện hỗ trợ
việc lập trình song song với các ngôn ngữ như C, Fortran,... Tập MPI thi hành bao gồm
một thư viện các thủ tục sao cho có thể gọi được từ các chương trình
Fortran, C, C++ hay Ada. Lợi thế của MPI so với các thư viện cũ là nó vừa thuận tiện
(vì MPI thực thi cho hầu hết các kiến trúc bộ nhớ phân tán) vừa nhanh (vì mỗi thủ tục
được tối ưu hóa cho phần cứng mà nó đang chạy).
1.2.2 MPI tiêu chuẩn
MPI tiêu chuẩn hỗ trợ cho nhiều ngôn ngữ lập trình như C, C++, Fortran, chạy trên
nhiều nền tảng phần cứng khác nhau. Điều nay đem lại nhiều lời ích, bao gồm:
- Giảm thời gian viết chương trình;
- Cho phép phát triển một ứng dụng (ví dụ, chạy trên một mạng lưới các máy
trạm làm việc) có thể chạy hiệu quả trên nhiều hệ thống khác nhau (ví dụ như chạy trên
các hệ thống song song chuyên biệt).
Mục tiêu chính của các đặc điểm này của MPI là để cho phép người dùng không
không cần phải băn khoăn về hiệu quả, tính năng linh hoạt, và chức năng của chương
trình. Điều này có nghĩa rằng người ta có thể viết các chương trình chạy linh hoạt trên
nhiều hệ thống mà vẫn có thể tận dụng lợi thế của các phần cứng chuyên dụng và phần

mềm được cung cấp bởi các nhà cung cấp cá nhân. Đồng thời, các tính năng tiên tiến,
chẳng hạn như tập rộng lớn của các hoạt động tập thể, có thể được dự kiến trong mỗi
MPI và có thể được sử dụng trong tất cả các chương trình ứng dụng song.

Học viên: Nguyễn Thị Tố Loan

6

Luận văn thạc sĩ


Chương 1: Mô hình tính toán song song sử dụng thư viện MPI
MPI không phải là một cuộc cách mạng mới của máy tính lập trình song song,
đúng hơn, nó là một nỗ lực để thu thập các tính năng tốt nhất của nhiều hệ thống đi qua
hiện có, cải thiện chúng ở nơi thích hợp, và chuẩn hóa chúng.
1.2.3 Khái niệm cơ bản của MPI
Các khái niệm cơ bản của các MPI tiêu chuẩn là tiến trình và các truyền thông.
Trong khi truyền thông kiểu điểm – điểm (point-to point) và kiểu tập hợp (Collective)
là trung tâm của MPI, nhóm tiến trình, gói dữ liệu, các kiểu dữ liệu, và topo ảo là
những khái niệm quan trọng khác của MPI tiêu chuẩn.
1.2.3.1 Gói dữ liệu và các tiến trình
Một tiến trình MPI là một thực thể tham gia vào thực hiện một số nhiệm vụ tính
toán. Trong mô hình lập trình cơ bản MPI, mỗi tiến trình được liên kết với một bộ nhớ
duy nhất, được gọi là bộ nhớ cục bộ của nó, mà nó chỉ có thể truy cập và cập nhật trực
tiếp. Một gói dữ liệu bao gồm một phần nội dung thông tin, cùng với một số dữ liệu
bổ sung được gọi là một nhãn. Nhãn của một gói tin chỉ rõ để người nhận tiến trình có
thể đọc nội dung thông tin của các tin nhắn vào bộ nhớ địa phương của mình. Nhãn
chứa thêm thông tin có thể được sử dụng bởi các tiến trình nhận để quyết định hay
không và khi mở các tin nhắn cũng như làm thế nào để truy cập dữ liệu trong một tin
nhắn nó đã được nhận.

Việc trao đổi thông điệp giữa các tiến trình được gọi là truyền thông tin và là
phương tiện duy nhất mà các tiến trình MPI có thể truy cập dữ liệu trong bộ nhớ cục bộ
của nhau hay đồng bộ với nhau. Truyền thông trong MPI được thực hiện bởi các hàm
(C hoặc Fortran) xây dựng sẵn trong MPI [4].
1.2.3.1.1 Nhóm tiến trình

Một nhóm tiến trình trong MPI là một tập hợp các tiến trình mà các thành
viên đều được đánh số liên tiếp bắt đầu từ 0. Các số liên quan đến một tiến trình
Học viên: Nguyễn Thị Tố Loan

7

Luận văn thạc sĩ


Chương 1: Mô hình tính toán song song sử dụng thư viện MPI
trong một nhóm được gọi là thứ hạng (Rank) của nó trong nhóm. Nhóm được
thành lập trên cơ sở nhiệm vụ để thực hiện; đó là, một nhóm tiến trình MPI
thường cùng thực hiện một nhiệm vụ chung. Một tiến trình có thể thuộc về bất
kỳ số lượng nào của các nhóm. Nhóm MPI được cho là tĩnh bởi vì tất cả họ đều
xuất phát từ các nhóm ban đầu và không có tiến trình mới có thể được tạo ra
trong tiến trình thực hiện chương trình. Ngoài hạn chế này, MPI cung cấp một
loạt các thiết bị quản lý nhóm tiến trình.
1.2.3.1.2 Phương thức truyền thông
Một tiến trình MPI đơn có thể lựa chọn có hoặc không có thông báo, tùy thuộc
vào nhãn của thông báo đó. Nhận được tin nhắn làm thay đổi bộ nhớ cục bộ của tiến
trình và là một hoạt động không thể đảo ngược. Một lỗi phổ biến trong lập trình MPI là
một tiến trình nhận được một tin nhắn gửi bởi tiến trình sai hoặc một tin nhắn gửi bởi
đúng tiến trình nhưng dự định cho một giai đoạn khác của tính toán. Vấn đề này đặc
biệt liên quan khi các nhiệm vụ được giao cho một tiến trình liên quan đến các cuộc gọi

đến một thủ tục thư viện song song. Vấn đề ở đây là giao tiếp trực tiếp khởi xướng bởi
người sử dụng và thông tin liên lạc được tiến hành trong các cuộc gọi đến một thủ tục
thư viện thuộc các ngữ cảnh khác nhau
1.2.3.1.3 Topo ảo
Cách sắp xếp vật lý của các CPU không phải lúc nào cũng phù hợp một cách tự
nhiên với các mô hình bài toán. Ví dụ các CPU được sắp xếp trong không gian 2 chiều
nhưng bài toán lại là không gian 3 chiều. Hoặc CPU được xếp theo hàng nhưng mô
hình bài toán được xếp theo mô hình vòng tròn. Trong những trường hợp này ta dùng
Topo ảo.

Học viên: Nguyễn Thị Tố Loan

8

Luận văn thạc sĩ


Chương 1: Mô hình tính toán song song sử dụng thư viện MPI
1.2.3.1.4 Comminicator
Comminicator trong MPI gắn với các khái niệm của nhóm tiến trình, bối cảnh
giao tiếp, và topology ảo. Một giao tiếp luôn gắn liền với một nhóm tiến trình, một bối
cảnh giao tiếp và một topology ảo. Nhóm và Comminicator là các đối tượng đục, họ
chỉ có thể được thông qua như là đối số cho hàm MPI và có thể xuất hiện trong các
biểu thức Boolean. Tất cả thông tin liên lạc trong MPI liên quan đến ít nhất một người
giao tiếp. Tất cả các tiến trình liên quan đến một thông tin phải cung cấp các
comminicator giống như một đối số trong các MPI cuộc gọi thủ tục tương ứng.
1.2.3.2 Kiểu dữ liệu MPI
Hệ thống kiểu dữ liệu trong ngôn ngữ lập trình, như C và Fortran, cho trình
biên dịch như thế nào để giải thích dữ liệu và có thể như thế nào dữ liệu sẽ được đặt ra
trong bộ nhớ chính. Đó là thông tin rất quan trọng để MPI định nghĩa một kiểu hệ

thống tin nhắn trên đầu trang của các hệ thống kiểu dữ liệu của C và các ngôn ngữ
Fortran. Các kiểu dữ liệu MPI đơn giản chủ yếu là sự kết hợp của các kiểu dữ liệu
nguyên bản của C và Fortran cộng với một tiền tố MPI ở trước.
MPI cung cấp thủ tục MPI để xác định kiểu dữ liệu MPI có nguồn gốc. Một dữ
liệu MPI thu được quy định cụ thể các định dạng của một chuỗi các giá trị và bao gồm:
số lượng các thành phần trong chuỗi, các kiểu dữ liệu MPI của mỗi phần tử và khoảng
cách trong byte giữa các yếu tố của chuỗi
1.2.3.3 Truyền thông
Các cuộc gọi đến thủ tục truyền thông MPI được phân loại theo cách khi nó
được gọi một cách an toàn, khi nào nó được thoát ra, có cần bộ nhớ đệm không.
Một thủ tục truyền thông MPI được gọi là bị khóa (Blocking MPI) nếu một cuộc
gọi đến nó chỉ trở lại trước khi việc truyền và nhận dữ liệu kết thúc. Nó là an toàn cho
một tiến trình để tái sử dụng các nguồn tài nguyên quy định trong các cuộc gọi.

Học viên: Nguyễn Thị Tố Loan

9

Luận văn thạc sĩ


Chương 1: Mô hình tính toán song song sử dụng thư viện MPI
Thủ tục truyền thông MPI được gọi là không khóa (Unblocking MPI) nếu cuộc
gọi đến nó trở lại ngay lập tức khi việc truyền và nhận dữ liệu kết thúc. Unblocking
MPI bổ sung các thủ tục kiểm tra hoặc chờ cho phép tái sử dụng các nguồn lực xác
định trong cuộc gọi của họ.
1.2.3.3.1 Truyền thông Point-to-point
Truyền thông Point-to-point chỉ liên quan đến hai tiến trình: một tiến trình gửi
một tin nhắn và một tiến trình tiếp nhận thông điệp đó. Mọi thủ tục truyền thông MPI
Point-to-point có một phiên bản đồng bộ và một phiên bản không đồng bộ.


Hình 2: Truyền thông point to point

Mỗi MPI gửi thủ tục hoạt động trong một trong bốn chế độ: đồng bộ, đệm, tiêu
chuẩn và sẵn sàng. Các chế độ truyền thông xác định thời gian hoàn thành các hoạt
động gửi và khi có cuộc gọi đến thủ tục gửi tương ứng có thể được ban hành một cách
an toàn. Lưu ý rằng một cuộc gọi đến một thủ tục không đồng bộ gửi thủ tục có thể trở
lại trước khi chính nó được hoàn thành. Vì lý do đó, các thủ tục không đồng bộ có một
tham số bổ sung: một để xử lý một yêu cầu gửi trả lại bởi các thủ tục không đồng bộ.
Xử lý mà có thể được sử dụng để kiểm tra hoặc chờ đợi để hoàn thành các hoạt động
gửi.
Một cuộc gọi đến, một gửi đồng bộ là hoàn toàn chỉ sau khi một cuộc gọi để phù
hợp với một thủ tục nhận đã được ban hành. Một các thủ tục gửi không đồng bộ hoàn

Học viên: Nguyễn Thị Tố Loan

10

Luận văn thạc sĩ


Chương 1: Mô hình tính toán song song sử dụng thư viện MPI
thành hay không một cuộc gọi để phù hợp với một thủ tục nhận đã được ban hành. Các
tiêu chuẩn của MPI xác định các thủ tục để quản lý không gian đệm và người sử dụng
có trách nhiệm cung cấp đủ không gian đệm để lưu trữ các tin nhắn gửi đi. Sự lựa chọn
giữa gọi một đồng bộ hoặc một thủ tục gửi không đồng bộ từ một số thỏa hiệp giữa các
không gian đệm và thời gian thực hiện. Các chế độ tiêu chuẩn của truyền thông chuyển
tiếp các phân tích của các bản MPI thương mại. Vì vậy, một cuộc gọi đến một thủ tục
gửi hoạt động trong chế độ tiêu chuẩn có thể hoặc có thể không hoàn thành trước khi
một cuộc gọi đến một kết hợp nhận thủ tục đã được ban hành. Một cuộc gọi đến bất kỳ

thủ tục gửi hành trong tiêu chuẩn, chế độ hoặc đệm đồng bộ có thể được ban hành một
cách an toàn ngay cả khi không phù hợp với nhận cuộc gọi đã được ban hành. Điều đó
là không đúng đối với các cuộc gọi để gửi hành thủ tục ở chế độ sẵn sàng. Các hoạt
động chính xác của các thủ tục gửi dựa trên các lập trình để đảm bảo rằng gửi sẽ được
kết hợp bởi nhận được một cách phù hợp. Những chỉ là một phương thức hoạt động
cho các thủ tục MPI nhận được một tin nhắn.
Điều kiện hoàn thành
Gửi đồng bộ

Chỉ hoàn thành khi nhận được đã được ban hành.

Gửi bộ đệm

Luôn hoàn thành (trừ khi có lỗi xảy ra), không phân biệt là
nhận đã hoàn thành

Tiêu chuẩn gửi

Hoặc là đồng bộ hoặc đệm.

Sẵn sàng gửi

Luôn hoàn thành (trừ khi có lỗi xảy ra), không phân biệt là
nhận đã hoàn thành

Nhận

Hoàn thành khi một tin nhắn đã đến.
Bảng 1: Phương thức giao tiếp MPI


Học viên: Nguyễn Thị Tố Loan

11

Luận văn thạc sĩ


Chương 1: Mô hình tính toán song song sử dụng thư viện MPI
Tất cả bốn chế độ tồn tại trong cả hai phương thức đồng bộ và không đồng bộ. Trong
các hình thức đồng bộ (blocking MPI), trở về từ các thói quen hoàn thành nghĩa. Trong
các hình thức non-blocking, tất cả các chế độ được thử nghiệm để hoàn thành với thói
quen thông thường MPI_Test, MPI_Wait, vv).
Blocking MPI

Unblocking MPI

Tiêu chuẩn gửi

MPI_Send

MPI _Isend

Gửi đồng bộ

MPI_Ssend

MPI_Issend

Gửi bộ đệm


MPI_Bsend

MPI_Ibsend

Sẵn sàng gửi

MPI_Rsend

MPI_Irsend

Nhận

MPI_Recv

MPI_Irecv

Bảng 2: Giao tiếp MPI thông thường

1.2.3.3.2 Hàm gửi dữ liệu MPI_Send
Tiêu chuẩn gửi có dạng như sau:
int MPI_Send(void *buf, int count, MPI_Datatype datatype, int dest,int tag,
MPI_Comm comm)
Trong đó:
-

buf là địa chỉ của các dữ liệu được gửi đi.

-

count là số phần tử của các kiểu dữ liệu MPI mà buf chứa.


-

datatype là kiểu dữ liệu MPI.

-

dest là quá trình điểm đến cho các tin nhắn. Điều này được quy định bởi
các Rank của quá trình đích trong nhóm kết hợp với giao tiếp comm.

Học viên: Nguyễn Thị Tố Loan

12

Luận văn thạc sĩ


Chương 1: Mô hình tính toán song song sử dụng thư viện MPI
-

tag là một dấu hiệu được sử dụng bởi người gửi để phân biệt giữa các
loại khác nhau của thông điệp

-

comm là người giao tiếp được chia sẻ bởi các quá trình gửi và nhận. Quy
trình chỉ có mà chia sẻ cùng người giao tiếp có thể giao tiếp.

1.2.3.3.3 Hàm nhận MPI_Recv:
Tiêu chuẩn nhận có dạng như sau:

int MPI_Recv(void *buf, int count, MPI_Datatype datatype, int source,int tag,
MPI_Comm comm, MPI_Status *status)
Trong đó:
-

buf là địa chỉ mà các dữ liệu cần được đặt một lần nhận được (buffer
Receiv). Đối với các giao tiếp để thành công, các bộ đệm nhận phải đủ
lớn để giữ tin nhắn mà không cần cắt ngắn. Nếu nó không phải là, hành
vi là không xác định. Tuy nhiên các bộ đệm có thể kéo dài hơn so với dữ
liệu nhận được.

-

count là số phần tử của dữ liệu MPI bao gồm cả buf

-

datatype là kiểu dữ liệu cho tin nhắn. Điều này phải phù hợp với các kiểu
dữ liệu quy định tại MPI gửi thông thường.

-

Sounce là cấp bậc của các nguồn của thông điệp trong nhóm liên quan
với các giao tiếp comm. Thay vì quy định các thông điệp mã nguồn có
thể được nhận được từ một trong một số nguồn bởi Chỉ định một ký tự
đại diện, MPI_ANY_SOURCE, cho lập luận này.

-

Tag được sử dụng bởi các quá trình nhận gửi quy định đó Nó shoulds

nhận chỉ có một bài với một số từ khóa. Thay vì quy định các tag, các ký
tự đại diện MPI_ANY_TAG có thể được chỉ định cho lập luận này.

Học viên: Nguyễn Thị Tố Loan

13

Luận văn thạc sĩ


Chương 1: Mô hình tính toán song song sử dụng thư viện MPI
-

comm là người giao tiếp được chỉ định bởi việc gửi và nhận gửi Cả hai
quá trình. Không có tùy chọn để đại diện cho lập luận này.

Nếu quá trình gửi nhận đã định ký tự đại diện cho cả vàng Dù nguồn gốc của thẻ vàng,
Sau đó thông tin tương ứng từ các tin nhắn đó đã thực sự nhận được có thể cần thiết.
Thông tin này được trả về trong tình trạng, và có thể được truy vấn sử dụng
status.MPI_SOURCE và status.MPI_TAG.
1.2.3.3.4 Truyền thông tập hợp
Thông tin liên lạc tập thể được khởi xướng bởi tất cả các tiến trình trong các giao
tiếp trong mà giao tiếp diễn ra. Các tiêu chuẩn MPI cung cấp cho các loại chính của
thông tin liên lạc tập thể gặp phải trong thực tế hiện nay. Các tập thể MPI thủ tục
truyền thông được ngăn chặn. Các rào cản, mô tả sau, hoạt động trong đồng bộ chế độ;
tất cả các thủ tục giao tiếp tập thể khác MPI có thể được coi là hoạt động trong chế độ
tiêu chuẩn. Các hình thức chủ yếu của thông tin liên lạc tập thể bao gồm trong tiêu
chuẩn MPI.
1.2.3.3.5 Broadcast, Scatter, Gather
Các hàm này cho phép gửi, phân phối và tập hợp các dữ liệu mà không thực hiện bất

cứ hoạt động trên dữ liệu. Các hàm được thể hiện bằng sơ đồ ở Hình 3.
Hàm MPI_Bcast:
int MPI_Bcast(void *buffer, int count, MPI_Datatype datatype,
int root, MPI_Comm comm)
Hàm MPI_Bcast gửi dữ liệu từ tiến trình gốc đến các tiến trình khác.
Trong đó:
-

buffer : là địa chỉ dữ liệu gửi đi,

-

count: Số lượng dữ liệu gửi tới mỗi tiến trình,

Học viên: Nguyễn Thị Tố Loan

14

Luận văn thạc sĩ


Chương 1: Mô hình tính toán song song sử dụng thư viện MPI
-

datatype là kiểu dữ liệu MPI,

-

comm là người giao tiếp được chia sẻ bởi các quá trình gửi và nhận. Quy
trình chỉ có mà chia sẻ cùng người giao tiếp có thể giao tiếp.


Hình 3: Broadcast, Scatter, Gather

Học viên: Nguyễn Thị Tố Loan

15

Luận văn thạc sĩ


Chương 1: Mô hình tính toán song song sử dụng thư viện MPI
1.3. Các Phƣơng thức truyền thông trong MPI
1.3.1. Phương thức truyền thông blocking MPI

Receiver

Sender
Send envelope
Acknowledgment
Send Data

Hình 4: Phương thức truyền thông Blocking MPI

Phương thức truyền thông blocking MPI bao gồm các bước sau:
 Bên gửi (Sender) gửi thông báo sẽ gửi gói tin (message) cho bên nhận
(receiver).
 Bên nhận (receiver) sẵn sàng nhận thì sẽ gửi thông báo phản hồi
(Acknowledgment) đồng ý cho bên gửi (sender).
 Khi bên gửi (Sender) nhận được phản hồi đồng ý của bên nhận ( Receiver)
thì bên gửi (Sender) sẽ gửi dữ liệu (Send Data) cho bên nhận.

1.3.2. Phương thức truyền thông unblocking MPI

Sender

Receiver

Buffer

Send envelope
Send Data

Hình 5: Phương thức truyền thông Unblocking MPI

Học viên: Nguyễn Thị Tố Loan

16

Luận văn thạc sĩ


Chương 1: Mô hình tính toán song song sử dụng thư viện MPI
Phương thức truyền thông Unblocking MPI bao gồm các bước sau:

 Bên gửi (Sender) gửi thông báo gửi dữ liệu cho bên nhận (Receiver).
 Bên gửi (Sender) tiếp tục gửi dữ liệu (Data) và vùng đệm (Buffer) của bên
nhận (Receiver).
1.3.3. So sánh 2 phương thức truyền thông Blocking và Unblocking
Blocking MPI
Đồng bộ


Unblocking MPI

Không cần đồng bộ giữa người Cần đồng bộ giữa người gửi và
gửi và người nhận

người nhận

Kích thước tin Không giới hạn kích thước

Kích thước của tin nhắn nhỏ hơn

nhắn

kích thước bộ đệm

Thời gian chờ Chờ phản hồi của bên nhận đồng Không cần thời gian chờ
đợi

ý mới gửi tin
Bảng 3 : Phương thức truyền thông của MPI

Học viên: Nguyễn Thị Tố Loan

17

Luận văn thạc sĩ


×