【发布时间】:2017-06-03 00:04:52
【问题描述】:
我想问一下下面问题的答案
对于这个通过让每个进程发送一个通信来执行通信的 MPI 程序段 值,n,以环形模式传递给它旁边的进程。即如果有N个进程,那么进程0 将值发送到 1,进程 1 将发送到 2,依此类推。最后一个进程将发送它的值 到 0。这些消息将同时发生一次。
if (my_rank%2 == 0) { MPI_SEND(msg,size,MPI_INT,(my_rank+1)%comm_sz,0,comm);
MPI_RECV(new_msg,size,MPI_INT,(my_rank+comm_sz-1)%comm_sz,0,comm,MPI_STATUS_IGNORE); }
else {
MPI_RECV(new_msg,size,MPI_INT,(my_rank+comm_sz-1)%comm_sz,0,comm,MPI_STATUS_IGNORE);
MPI_SEND(msg,size,MPI_INT,(my_rank+1)%comm_sz,0,comm); }
假设发送一条消息的时间是一个时间单位,接收一个消息的时间是一个时间单位 消息是一个时间单位。仅包括消息传递的成本(忽略任何启动 成本等)并在最好的情况下计算您的代码需要多少时间单位 去完成。您应该明确说明您做出的任何假设。
我认为它会是 4,在最好的情况下,如果所有偶数同时发送 n 并且同时收到的所有赔率在这里是 2,而奇数发送相同,那么另一个 2所以应该是4,但我不知道我是否正确
【问题讨论】:
标签: parallel-processing mpi shared-memory distributed-computing