当许多处理器同时向特定处理器发送消息时,消息传递是否变成顺序的?
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 如何实现集合体以获得高性能。
当许多处理器同时向特定处理器发送数据时,它们是否按顺序复制?例如,
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 如何实现集合体以获得高性能。