Bài tập thực hành MPI - Lab 3: Parallel Programming with MPI
1. Mục tiêu
SV tìm hiểu và sử dụng các hàm collective communication trong thư viện MPI
Một số hàm giao tiếp nhóm SV cần tìm hiểu :
o MPI_Bcast(), MPI_Scatter, MPI_Gather(), MPI_Barrier().
o MPI_Scan(), MPI_Reduce(), MPI_Gatherv(), MPI_Scatterv()…
o MPI_Reduce_scatter(), MPI_Allreduce …
Bạn đang xem tài liệu "Bài tập thực hành MPI - Lab 3: Parallel Programming with MPI", để 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:
- bai_tap_thuc_hanh_mpi_lab_3_parallel_programming_with_mpi.pdf
Nội dung text: Bài tập thực hành MPI - Lab 3: Parallel Programming with MPI
- Lab 3 Parallel Programming with MPI Group Communication (1) Biên soạn & hướng dẫn: Nguyễn Quang Hùng 1. Mục tiêu SV tìm hiểu và sử dụng các hàm collective communication trong thư viện MPI Một số hàm giao tiếp nhóm SV cần tìm hiểu : o MPI_Bcast(), MPI_Scatter, MPI_Gather(), MPI_Barrier(). o MPI_Scan(), MPI_Reduce(), MPI_Gatherv(), MPI_Scatterv() o MPI_Reduce_scatter(), MPI_Allreduce 2. Nội dung 2.1 Giới thiệu Sự giao tiếp giữa 1 nhóm process trong cùng communicator Mỗi process đều phải gọi hàm giao tiếp nhóm SV tìm hiểu xem mỗi hàm giao tiếp nhóm có chức năng gì và thực hiện các chương trình mẫu trong mục 2.2 Bài tập thực hành MPI – Bộ môn Hệ Thống & Mạng Máy Tính, Khoa KH&KTMT Trang 1
- - Chương trình phải chạy với bao nhiêu process thì đúng? - Kết quả in ra của biến data trên tất cả process bằng bao nhiêu? - Dùng thêm hàm MPI_Wtime() để đo thời gian thực thi hàm MPI_Bcast() trên các processor. Kết quả có bằng nhau không? 2.2.3 Chương trình sử dụng MPI_Scatter() #include #include #define N 8 int main( int argc, char* argv[] ) { int i; int rank, nproc; int isend[N], irecv[2]; MPI_Init( &argc, &argv ); MPI_Comm_size( MPI_COMM_WORLD, &nproc ); MPI_Comm_rank( MPI_COMM_WORLD, &rank ); if(rank == 0) { for(i=0; i int main( int argc, char* argv[] ) { int i; int rank, nproc; int isend, irecv[3]; MPI_Init( &argc, &argv ); MPI_Comm_size( MPI_COMM_WORLD, &nproc ); MPI_Comm_rank( MPI_COMM_WORLD, &rank ); isend = rank + 1; MPI_Gather( &isend, 1, MPI_INT, &irecv, 1,MPI_INT, 0, MPI_COMM_WORLD); if(rank == 0) { for(i=0; i<3; i++) printf(“irecv = %d\n”, irecv[i]); } MPI_Finalize(); Bài tập thực hành MPI – Bộ môn Hệ Thống & Mạng Máy Tính, Khoa KH&KTMT Trang 3