假设我有一个MPI程序,其中包含两个进程,排名为0和1。
int i[20], j[20], temp, size;
在排名为0的进程中,我有
for(temp=0; temp<20; temp++)
i[temp] = temp;
MPI_Send(i, 15, MPI_INT, 1, 1, MPI_COMM_WORLD);
假设进程的等级为1,则执行以下操作:
// At this point, size is declared, but not assigned any value.
MPI_Recv(j,size, MPI_INT, 0, 1, MPI_COMM_WORLD):
cout << "I have received " << size << " elements" ;
我的问题是,在上述语句中,"size"需要声明吗?还是MPI_Recv会“知道”它正在接收15个元素,并自动设置size = 15?如果未定义size,代码会发生什么?
基本上,我的问题是,我正在向具有不同等级的处理器发送不同数量的元素,所有消息均源自rank 0。我想知道是否应该先发送大小,然后准备处理器接收那么多元素,还是直接发送数组,进程会自动从中提取大小。