当许多处理器同时向特定处理器发送消息时,消息传递是否变成顺序的?

Does message passing become sequential when many processors send to a specific processor at the same time?

当许多处理器同时向特定处理器发送数据时,它们是否按顺序复制?例如,

if(rank==1)
    MPI_Send(&message, 1, MPI_DOUBLE, 0, 0, MPI_COMM_WORLD);
if(rank==0)
    MPI_Recv(&message, 1, MPI_DOUBLE, 1, 0, MPI_COMM_WORLD, &status);

T为这个execution.Then所需要的时间,下面代码所需要的时间是多少?

MPI_Gather(&message,1,MPI_DOUBLE,messages,1,MPI_DOUBLE,0,MPI_COMM_WORLD);

其中 n-1 个处理器尝试向主节点发送消息,而我有 128 个处理器。是 T 还是 127*T

你的问题说明你还是一头雾水。 MPI_Gather() 不仅仅是一个消息序列。因此,你没有提及你的问题实际上意味着聚会没有任何意义。

MPI_Send和MPI_Recv是点2点通信,但是MPI_Gather是集体程序。 MPI 库有一个特殊的实现,可以避免将其天真地实现为发送到目标进程的序列。

您可以阅读文章 http://cursuri.cs.pub.ro/~apc/2003/resources/mpi/impl/wmpi/docs/WMPI_EuroPVMMPI99_Silva.pdf 如何实现集合体以获得高性能。