【发布时间】:2013-04-27 00:38:53
【问题描述】:
假设以下 MPI 代码。
MPI_Comm_Rank(MPI_COMM_WORLD, &rank);
if (rank == 0){
MPI_Send(a, count, MPI_CHAR, 1, 0, MPI_COMM_WORLD);
MPI_Send(b, count, MPI_CHAR, 1, 0, MPI_COMM_WORLD);
}
else if (rank == 1){
MPI_IRecv(a, 1, MPI_CHAR, 0, 0, MPI_COMM_WORLD, &req);
MPI_Recv(b, count, MPI_CHAR, 0, 0, MPI_COMM_WORLD);
MPI_Wait(&req, &status);
}
说第一个MPI_Send(a, count, ...) 不会阻塞,即使它的匹配MPI_IRecv(a, 1, ...) 只是从缓冲区中读取一个元素,这是否正确?
另外,由于没有对缓冲区 a 进行读/写,即使在 MPI_IRecv 之后没有直接调用 MPI_Wait,进程 1 也不会阻塞是否正确?
谢谢。
【问题讨论】:
标签: parallel-processing mpi distributed-computing