MPI_Send(a, N, MPI_DOUBLE, 0, 19, MPI_COMM_WORLD);

Một phần của tài liệu slike bài giảng tính toán lưới - nguyễn hữu đức bài 4 truyền thông điểm điểm trong lập trình song song truyền thông điệp (Trang 32 - 40)

9. }

Truy n thông đi m-đi mề ể ể

Tránh hi n tệ ượng deadlock

 Phân tích thi t k chế ế ương trình phù h pợ

 T ch c chổ ứ ương trình không ph thu c kích thụ ộ ước b đ m c a MPIộ ệ ủ

 Có th debug chể ương trình song song b ng các công c h tr nh ằ ụ ỗ ợ ư

ch c năng debug c a ptp, hay m t s công c hi n th tr c quan khác,ứ ủ ộ ố ụ ể ị ự

Truy n thông đi m-đi mề ể ể

Truy n thông không ràng bu cề

 Th c thi các đ nh tuy n g i, nh n mà không khóa ti n trình g i nó.ự ị ế ử ậ ế ọ

 Tách quá trình kh i t o và hoàn thành thành hai l i g i MPI khác nhau.ở ạ ờ ọ

• Kh i t o quá trình g i/nh nở ạ ử ậ

• Hoàn thành quá trình g i/nh nử ậ

 Gi a hai l i g i, chữ ờ ọ ương trình có th th c hi n các đ nh tuy n khác.ể ự ệ ị ề

 Truy n thông t ng th p là gi ng nhau, m c dù giao di n c a th vi n là ề ầ ấ ố ặ ệ ủ ư ệ

khác nhau.

Truy n thông đi m-đi mề ể ể

Kh i t o, hoàn thành, trình đi u khi nở ạ

 Kh i t o:ở ạ

• Kh i t o quá trình g iở ạ ử

• Kh i t o quá trình nh nở ạ ậ

 Sau khi kh i t o quá trình g i/nh n, có hai cách đ hoàn thành quá ở ạ ử ậ ể

trình:

• Ki m tra xem quá trình đã hoàn thành hay ch aể ư

• Đ i cho đ n khi hoàn thànhợ ế

 Trình đi u khi n:ề ể

• Luôn được tr v b i các đ nh tuy n g i/nh n không ràng bu cả ề ở ị ề ử ậ ộ

Truy n thông đi m-đi mề ể ể

Đ nh tuy n kh i t o MPI_Isendị ế ở ạ

MPI_Isend(void *buf, int count, MPI_Datatype dtype, int dest, int tag, MPI_Comm comm, MPI_Request *request) (adsbygoogle = window.adsbygoogle || []).push({});

Không đ c/ghi bi n nào trong l i g i trọ ế ờ ọ ước giai đo n hoàn thànhạ

IN/OUT Tên bi nế Lo i bi nạ ế Mô tả

IN buf bi n con tr (không ế ỏ

đ nh ki u)ị ể tr đ n vùng nh ch a d li uệỏ ế ớ ứ ữ

IN count int s lố ượng ph n t trong d ầ ử ữ

li uệ

IN dtype MPI_Datatype ki u d li uể ữ ệ

IN dest int rank c a ti n trình đíchủ ế

IN tag int đ xác đ nh thông đi pể ị ệ

IN comm MPI_Comm communicator c a ti n ủ ế

trình g i và nh nử ậ

Truy n thông đi m-đi mề ể ể

Đ nh tuy n kh i t o MPI_Irecvị ế ở ạ

MPI_Irecv(void* buf, int count, MPI_Datatype dtype, int source, int tag, MPI_Comm comm, MPI_Request *request)

Không đ c/ghi bi n nào trong l i g i trọ ế ờ ọ ước giai đo n hoàn thànhạ

IN/OUT Tên bi nế Lo i bi nạ ế Mô tả

OUT buf Bi n con tr (không ế ỏ

đ nh ki u)ị ể Tr đ n vùng nh ch a d li uệỏ ế ớ ứ ữ

IN count int S lố ượng ph n t trong d ầ ử ữ

li uệ

IN dtype MPI_Datatype ki u d li uể ữ ệ

IN source int Rank c a ti n trình đíchủ ế

IN tag int đ xác đ nh thông đi pể ị ệ

IN comm MPI_Comm Communicator c a ti n ủ ế

trình g i và nh nử ậ

Truy n thông đi m-đi mề ể ể

 Bi n request: xác đ nh ti n trình kh i t o g i/nh nế ị ế ở ạ ử ậ

 MPI_Wait tr v đi u khi n khi ti n trình kh i t o g i/nh n hoàn thànhả ề ề ể ế ở ạ ử ậ

 Bi n status:ế

• Đ nh tuy n kh i t o g i: mã l i cho quá trình g iị ế ở ạ ử ỗ ử (adsbygoogle = window.adsbygoogle || []).push({});

• Đ nh tuy n kh i t o nh n: thông tin c a thông đi p nh n.ị ế ở ạ ậ ủ ệ ậ

Đ nh tuy n hoàn thành: MPI_Waitị ế

Truy n thông đi m-đi mề ể ể

 Bi n request: xác đ nh ti n trình kh i t o g i/nh nế ị ế ở ạ ử ậ

 MPI_Test tr v đi u khi n ngay khi g i xong.ả ề ề ể ọ

 Bi n flag:ế

• true: đ nh tuy n kh i t o đã hoàn thànhị ế ở ạ

• false: đ nh tuy n kh i t o ch a hoàn thànhị ế ở ạ ư

 Bi n status: khi (flag == true)ế

• Đ nh tuy n kh i t o g i: mã l i cho quá trình g iị ế ở ạ ử ỗ ử

• Đ nh tuy n kh i t o nh n: thông tin c a thông đi p nh n.ị ế ở ạ ậ ủ ệ ậ

Đ nh tuy n hoàn thành: MPI_Testị ế

int MPI_Test(MPI_Request *request, int *flag, MPI_Status* status)

Truy n thông đi m-đi mề ể ể

Một phần của tài liệu slike bài giảng tính toán lưới - nguyễn hữu đức bài 4 truyền thông điểm điểm trong lập trình song song truyền thông điệp (Trang 32 - 40)