我正在 MPI 中实现一个程序,其中主进程(等级 = 0)应该能够接收来自其他进程的请求,这些进程要求只有根才知道的变量值。
如果我按等级 0 进行 MPI_Recv(...),我必须指定向根发送请求的进程的等级,但我无法控制它,因为进程不按顺序运行 1,2,3 ,....
如何接收来自任何级别的请求并使用发出进程的编号向其发送必要的信息?
这假设您使用的是 C。C++ 和 Fortran 中也有类似的概念。你只需指定MPI_ANY_SOURCE
作为源MPI_recv()
。状态结构包含消息的实际来源。
int buf[32];
MPI_Status status;
// receive message from any source
MPI_recv(buf, 32, MPI_INT, MPI_ANY_SOURCE, MPI_ANY_TAG, MPI_COMM_WORLD, &status);
int replybuf[];
// send reply back to sender of the message received above
MPI_send(buf, 32, MPI_INT, status.MPI_SOURCE, tag, MPI_COMM_WORLD);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)