1
从两个匹配的非阻塞发送和recv操作中仅检查一个请求对象是否足够。如果recv和send匹配,mpi请求是否完成
这会很好,因为这样可以减少处理程序中请求对象的工作量。
这里的一个小例子与升压MPI:
#include <boost/mpi.hpp>
int main(int argc, char* argv[]) {
// initialize mpi
mpi::environment env(argc, argv);
boost::mpi::communicator world;
boost::mpi::request req0, req1;
double blub;
if(world.rank()==1)
req1 = world.irecv(0, 23, blub);
if(world.rank()==0)
req0 = world.isend(0, 23, blub);
//now I want to synchronize the processors is this enough?
req0.wait();
//or do I also need this line
req1.wait();
}
你应该真的考虑在哪个进程中执行哪条语句。 MPI newcommers有点难以掌握这种精神分裂症的行为,但你会习惯于这种行为。顺便说一句,如果你不关心任何'I'操作的结果,你可以用'MPI_Request_free()'释放请求句柄(对不起,不知道MPI的等价物是什么),它会是MPI库完成后自动处理。 –