我有一些特殊的问题:在一个简单的 MPI_Send/MPI_Recv 程序中,假设我们知道我们将要发送的消息类型,但在接收端我们不知道我们将收到哪种类型的数据。
所以我尝试第一次尝试如下:
#include "mpi.h"
#include <stdlib.h>
#include <stdio.h>
int main(int args, char** argv){
int rank, size;
MPI_Status status;
MPI_Init(&args,&argv);
MPI_Comm_rank(MPI_COMM_WORLD,&rank);
MPI_Comm_size(MPI_COMM_WORLD,&size);
if(rank==0){
int x = 10;
MPI_Send(&x,4,MPI_BYTE,1,0,MPI_COMM_WORLD);
}
if(rank==1){
void* datax;
int count = sizeof(int);
datax = malloc(count);
MPI_Recv(datax,count,MPI_BYTE,0,0,MPI_COMM_WORLD,&status);
//Now check if the value is received correctly
int z = (int) datax;
printf("RCV: %d \n",z);
}
MPI_Finalize();
return 0;
}
程序正确编译并运行,但接收到的值是一些内存垃圾值,而不是正确的值(在这种情况下为 10)。
请问有什么建议吗?
谢谢,