1. Trang chủ
  2. » Công Nghệ Thông Tin

Lập trình song song với thư viện lập trình MPICHMPI và ứng dụng

31 223 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 31
Dung lượng 1,45 MB

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

Nội dung

Đặc điểm mô hình lập trình truyền thông điệpMỗi tiến trình có một không gian địa chỉ riêng và độc quyền... Đặc điểm mô hình lập trình truyền thông điệpLiên lạc giữa các

Trang 1

Lập trình song song với thư viện lập

trình MPICH/MPI và ứng dụng

Trang 2

Thư viện lập trình song song MPI và ứng dụng

Nội dung chính:

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

- Thư viện song song MPI

- Phầm mềm hỗ trợ lập trình song song MPICH2

Trang 3

Mô hình truyền thông điệp Chương trình song song

Process 1 Process K Prosess N

Trang 4

Đặc điểm mô hình lập trình truyền thông điệp

Nhiều tiến trình cùng hoạt động.

Mỗi tiến trình chạy một bản copy của một chương trình duy nhất.

int D = B-A; int D = B-A; int D = B-A;

Trang 5

Đặc điểm mô hình lập trình truyền thông điệp

Mỗi tiến trình có một không gian địa chỉ riêng

và độc quyền.

Trang 6

Đặc điểm mô hình lập trình truyền thông điệp

Liên lạc giữa các tiến trình

• Mỗi tiến trình có một định danh, còn gọi là hạng (rank) của tiến trình

trong nhóm.

• Việc liên lạc, phân chia công việc, dữ liệu đuợc dựa trên hạng của tiến

trình

Trang 7

Đặc điểm mô hình lập trình truyền thông điệp

Liên lạc giữa các tiến trình

• Gửi nhận dữ liệu :

Thông điệp: gói dữ liệu đuợc truyền giữa các tiến trình.

Việc gửi/nhận thông diệp được thực hiện bởi hệ thống truyền thông diệp: message passing system

Ðể thực hiện gửi/nhận thông điệp, hệ thống truyền thông điệp cần:

– phía gửi: địa chỉ tiến trình nhận, vị trí dữ liệu gửi, kiểu dữ liệu gửi, kích thuớc dữ liệu gửi.

– phía nhận: địa chỉ tiến trình gửi, vị trí dữ liệu nhận, kiểu dữ liệu nhận, kích thuớc dữ liệu nhận.

Trang 8

Đặc điểm mô hình lập trình truyền thông điệp

Mọi thao tác liên lạc đều cần sự phối hợp giữa

2 tiến trình: tiến trình có dữ liệu và tiến trình cần dữ liệu.

Kiến trúc lập trình là SIMD và MIMD.

Trang 9

Môi trường truyền thông điệp

Lập trình song song truyền thông điệp:

 Thiết kế ngôn ngữ lập trình song song chuyên dụng Vd: OCCAM

 Phát triển 1 số ngôn ngữ lập trình bậc cao để điều khiển thông điệp: C/C++, Fortran M

 Kết hợp ngôn ngữ lập trình với thư viện truyền thông điệp (MPI, PVM)

Trang 10

MPI - Message Passing Interface

MPI là bộ thư viện hỗ trợ việc lập trình song song

 Nó bao gồm các thủ tục, kiểu dữ liệu, hằng định nghĩa dùng để đặc tả truyền thông điệp.

Trang 11

Một số thủ tục chính của MPI

Trang 12

Viết chương trình đầu tiên

Trang 13

Viết chương trình đầu tiên

Trang 14

int MPI_Init(int argc, char **argv)

Khởi tạo môi trường MPI

Gán hạng cho các tiến trình

Được gọi một lần duy nhất trong một

chương trình

Gọi trước tất cả các thủ tục MPI khác

int MPI_Finalize()

Đóng môi trường MPI

Không thủ tục nào được sử dụng sau thủ tục này kể cả MPI_Init

Thủ tục môi trường

Trang 15

MPI Communicator (Kênh truyền thông)

Kênh truyền thông là một tập hợp các tiến trình tham gia liên lạc với nhau.

Các tiến trình trong đó được định danh, gán rank cho các tiến trình là các số từ 0 đến size - 1

MPI_COMM_WORLD là kênh truyền thông

đã được định nghĩa sẵn, bao gồm tất cả các tiến trình.

Thủ tục môi trường

Trang 16

int MPI_Comm_size(MPI_Comm comm, int *size)

•Trả về số lượng tiến trìnhTham số:

•comm - số hiệu kênh truyền thông dữ liệu

•size - giá trị trả về số lượng tiến trình

int MPI_Comm_rank(MPI_Comm comm, int

*rank)

• Trả về số hiệu các tiến trình

 Tham số:

• comm - số hiệu kênh

• rank - giá trị trả về số hiệu của tiến trình trong phạm vi từ 0…size-1

Thủ tục môi trường

Trang 17

Thủ tục môi trường

Ví dụ : đưa ra rank của tiến trình hiện tại và số lượng tiến trình.

Trang 18

Thủ tục môi trường

Trang 19

Thủ tục truyền thông điểm – điểm

Buffered blocking

operations

Lệnh send(): sender sẽ bị

khóa cho đến khi message đã

được sao chép đầy đủ lên bộ

đệm nhận.

Lệnh receive(): receiver cũng bị khóa cho đến khi

message đã được nhận từ bộ

đệm.

Trang 20

Thủ tục truyền thông điểm – điểm

 Thực hiện nhiệm vụ nhận các thông điệp truyền về từ

Trang 21

Thủ tục truyền thông điểm – điểm

Trang 22

Bảng ánh xạ kiểu dữ liệu

Trang 23

Thủ tục truyền thông điểm – điểm

MPI_Isend

int MPI_Isend(void *buf, int count,

MPI_Datatype datatype, int dest,int msgtag,

MPI_Comm comm, MPI_Request *request)

 Thủ tục gửi không bị khoá

MPI_Irecv

int MPI_Irecv(void *buf, int count,

MPI_Datatype datatype, int source,int msgtag, MPI_Comm comm, MPI_Status *request)

 Thủ tục nhận không bị khoá

Trang 24

Thủ tục truyền thông điểm – điểm

Trang 25

Thủ tục truyền thông tập hợp

Trang 26

Thủ tục truyền thông tập hợp

Trang 27

 Phân phối bộ đệm từ tiến trình gốc cho các tiến

trình còn lại trong comm

Thủ tục truyền thông tập hợp

Trang 28

Thủ tục truyền thông tập hợp

Trang 29

MPI_Reduce

int MPI_Reduce(void* sendbuf, void* recvbuf, int count, MPI_Datatype datatype, MPI_Op op, int root, MPI_Comm comm)

 Kết hợp các giá trị đơn của các tiến trình

Thủ tục truyền thông tập hợp

Trang 30

Thủ tục truyền thông tập hợp

Bảng kết hợp các kiểu dữ liệu trong MPI_Reduce

Ngày đăng: 21/02/2019, 23:15

TỪ KHÓA LIÊN QUAN

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

w