【发布时间】:2018-05-11 19:34:20
【问题描述】:
我正在编写一个用于数据交换的 MPI C++ 代码,下面是示例代码:
#include <stdio.h>
#include <mpi.h>
int main(int argc, char **argv)
{
int size, rank;
int dest, tag, i;
MPI_Init(&argc, &argv);
MPI_Comm_size(MPI_COMM_WORLD, &size);
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
printf("SIZE = %d RANK = %d\n",size,rank);
if ( rank == 0 )
{
double data[500];
for (i = 0; i < 500; i++)
{
data[i] = i;
}
dest = 1;
tag = 1;
MPI_Send(data,500,MPI_DOUBLE,dest,tag, MPI_COMM_WORLD );
}
MPI_Finalize();
return(0);
}
看起来 500 是我可以发送的最大值。如果数据数量增加到 600,代码似乎停止在“MPI_SEND”处而没有进一步的进展。我怀疑使用 MPI_SEND 传输数据是否有任何限制。有没有大神能解惑一下?
提前致谢,
坎
【问题讨论】:
-
有一段时间没有使用 MPI,但我的第一个猜测是某些缓冲区已满,
Send等待匹配的Receive消耗。 -
您必须发布匹配的
MPI_Recieve!不管它是否为n<=500“运行”——它总是错误的。请查阅 MPI 的介绍材料。 -
@user463035818,不 - 不相关。