if(rank==0) {
for(ei=1;ei<NCORES;ei++) {
buf=&bufsnd[displs[ei]];
rc=MPI_Send (buf,lenrec,MPI_BYTE,ei,1,MPI_COMM_WORLD);
//rc=MPI_Isend(buf,lenrec,MPI_BYTE,ei,1,MPI_COMM_WORLD,&req);
}
if(rank!=0)
rc=MPI_Recv (bufrec,lenrec,MPI_BYTE,0,1,MPI_COMM_WORLD,&stat);
大家好,我正在使用上面的说明来分发不同进程要处理的数据。进程0具有数据并将它们发送到所有其他进程。发送后,它开始处理自己的数据部分。我已经尝试了Send和Isend,奇怪的是,Send的执行速度要快得多,而我希望Isend的速度更快,因为在这种情况下,master不会等到第i次发送完成之前执行第(i + 1)次发送,所有发送应同时发生。关于什么是错的任何想法?