Bài giảng Tính toán song song (Parallel computing) - Phần 3: Lập trình thư viện MPI - Phan Trọng Tiến

Communicators and Groups
 Communicators và Group là tập hợp tất cả các processes có
thể giao tiếp được với nhau.
 Phần lớn các hàm trong thư viện MPI yêu cầu tham số
Communicator.
 MPI_COMM_WORLD được định nghĩa sẵn.
pdf 22 trang thamphan 26/12/2022 4700
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Tính toán song song (Parallel computing) - Phần 3: Lập trình thư viện MPI - Phan Trọng Tiến", để tải tài liệu gốc về máy hãy click vào nút Download ở trên.

File đính kèm:

  • pdfbai_giang_tinh_toan_song_song_parallel_computing_phan_3_lap.pdf

Nội dung text: Bài giảng Tính toán song song (Parallel computing) - Phần 3: Lập trình thư viện MPI - Phan Trọng Tiến

  1. 5/11/16 LẬP TRÌNH THƯ VIỆN MPI MESSAGE PASSING INTERFACE ThS. Phan Trọng Tiến Bộ môn CNPM – Khoa CNTT Học Viện Nông nghiệp Việt Nam Email: phantien84@gmail.com Website: 1/1/2015 Lập trình thư viện MPI 1 MPI là gì? q Là viết tắt của Message Passing Interface, chỉ một dạng giao thức kết nối của máy tính. Nó nằm trong chuẩn “de facto” cho kết nối giữa các nút chạy một chương trình song song trên bộ nhớ phân tán. q 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. 1/1/2015 Lập trình thư viện MPI 2 1
  2. 5/11/16 Lập trình MPI q Cấu trúc của chương trình MPI 1/1/2015 Lập trình thư viện MPI 5 Communicators and Groups q Communicators và Group là tập hợp tất cả các processes có thể giao tiếp được với nhau. q Phần lớn các hàm trong thư viện MPI yêu cầu tham số Communicator. q MPI_COMM_WORLD được định nghĩa sẵn. 1/1/2015 Lập trình thư viện MPI 6 3
  3. 5/11/16 Các hàm quản lý môi trường q MPI_Comm_size qXác định số lượng process trong nhóm ứng với một Communicator (thường là MPI_COMM_WORLD) q MPI_Comm_rank qTr ả về id của Communicator hiện tại int MPI_Comm_size(MPI_Comm comm,int *size ) int MPI_Comm_rank (comm,&rank) 1/1/2015 Lập trình thư viện MPI 9 Các hàm quản lý môi trường q MPI_Abort qH ủy bỏ tất cả các MPI processes gắn với một Communicator int MPI_Abort(MPI_Comm comm,int errorcode) 1/1/2015 Lập trình thư viện MPI 10 5
  4. 5/11/16 Giao tiếp Point to Point q MPI Point to Point là giao tiếp giữa hai và chỉ hai processes với nhau. q Khi một Process thực hiện giao thức truyền tin (send) thì nhiệm vụ khác phải có giao thức nhận tin (receive) tương ứng. 1/1/2015 Lập trình thư viện MPI 13 Giao tiếp Point to Point q Các kiểu truyền và nhận trong MPI qSynchronous send qBlocking send/blocking receive qNon-Blocking send/ non-blocking receive qBuffered send qCombined send/receive qReady send 1/1/2015 Lập trình thư viện MPI 14 7
  5. 5/11/16 Non-blocking q Hai phương thức send và receive có hoạt động giống nhau, chúng sẽ kết thúc ngay sau lời gọi mà không quan tâm dữ liệu đã gửi hoặc nhận xong hay chưa. q Cần sử dụng phương thức “wait” 1/1/2015 Lập trình thư viện MPI 17 Các hàm trong Point-to-Point Blocking sends MPI_Send(buffer, count, type, dest, tag, comm) Non-Blocking MPI_Isend(buffer, count, type, dest, tag, sends comm, request) Blocking receive MPI_Recv(buffer, count, type, source, tag, comm, status) Non-blocking MPI_Irecv(buffer, count, type, source, tag, receive comm, request) 1/1/2015 Lập trình thư viện MPI 18 9
  6. 5/11/16 Tham số trong các hàm q Communicator qCh ỉ ra communicator mà các processes sẽ giao tiếp với nhau. q Status qS ử dụng trong phương thức nhận, chỉ ra source và tag của bản tin. qĐượ c định nghĩa trong cấu trúc MPI_Status ( stat.MPI_SOURCE, stat.MPI_TAG) 1/1/2015 Lập trình thư viện MPI 21 Tham số trong các hàm q Request: qĐượ c sử dụng trong phương thức send và receive non-blocking. qH ệ thống sẽ gán cho mỗi phương thức một “số request” duy nhất để người lập trình sử dụng. 1/1/2015 Lập trình thư viện MPI 22 11
  7. 5/11/16 MPI_Recv q Là phương thức blocking Receive, kết thúc khi dữ liệu trong application buffer được nhận. MPI_Recv(&buf,count,datatype,source,tag,comm,&status) 1/1/2015 Lập trình thư viện MPI 25 MPI_Ssend q Là phương thức blocking send đồng bộ. Nó sẽ kết thúc khi application buffer được truyền đi hết và bên nhận bắt đầu nhận dữ liệu. MPI_Ssend(&buf,count,datatype,dest,tag,comm) 1/1/2015 Lập trình thư viện MPI 26 13
  8. 5/11/16 MPI_Wait q Được sử dụng để cho non-blocking send và receive, nó sẽ dừng lại cho đến khi việc nhận và gửi thành công. MPI_Wait (&request,&status) MPI_Waitall(count,&array_of_requests,&array_of_statuses) 1/1/2015 Lập trình thư viện MPI 29 Truyền thông tập hợp q Các processes có cùng một communicator thì mới giao tiếp được với nhau q Mặc định, các processes đều có communicator là MPI_COMM_WORLD q Tùy vào mục đích lập trình để chia các processes theo từng nhóm riêng biệt. 1/1/2015 Lập trình thư viện MPI 30 15
  9. 5/11/16 MPI_Barrier q Để đồng bộ tất các các process trong nhóm q Khi mỗi process tới lời gọi MPI_Barrier sẽ dừng lại khi tất cả các process khác đều tới lời gọi MPI_Barrier. MPI_Barrier (comm) 1/1/2015 Lập trình thư viện MPI 33 MPI_Bcast q Gửi một bản tin từ một processes có rank là “root” tới tất cả các process khác MPI_Bcast(&buffer,count,datatype,root,comm) 1/1/2015 Lập trình thư viện MPI 34 17
  10. 5/11/16 1/1/2015 Lập trình thư viện MPI 37 1/1/2015 Lập trình thư viện MPI 38 19
  11. 5/11/16 MPI Reduction Operation C Data types MPI_MAX Maximum Integer,float MPI_MIN Minimum Integer,float MPI_SUM Sum Integer,float MPI_PROD Product Integer,float MPI_LAND Logical AND Integer MPI_BAND Bit-wise AND Integer,MPI_BYTE MPI_LOR Logical OR Integer MPI_BOR Bit-wise OR Integer,MPI_BYTE MPI_LXOR Logical XOR Integer MPI_BXOR Bit-wise XOR Integer,MPI_BYTE MPI_MAXLOC Max value and location Float, double and long double MPI_MINLOC Min value and location Float, double and long double 1/1/2015 Lập trình thư viện MPI 41 1/1/2015 Lập trình thư viện MPI 42 21