我有一个在 main() 中使用 C 和 openMPI 并行化的算法;它运行良好,但现在我想将代码移至外部函数。
void my_parallel_function(int v[], int size, int rank)
{
if(rank==0)
{
MPI_Send(&v[0], 5, MPI_INT, 1, 1, MPI_COMM_WORLD);
}
else
{
MPI_Recv(&v[0], 5, MPI_INT, MPI_ANY_SOURCE, 1, MPI_COMM_WORLD,&status);
printf("value of item 1: %d", v[0]);
}
}
int main(int argc, char *argv[])
{
int rank, size;
MPI_Init(&argc, &argv);
MPI_Comm_size(MPI_COMM_WORLD, &size);
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
MPI_Status status;
int vect[100];
if (rank==0)
{
my_parallel_function(vect, size, rank);
}
MPI_Finalize();
return 0;
}
上面的代码只是为了说明我想做的事情。我可以从控制台运行我的代码,但没有响应,它只是挂起。
有任何想法吗?非常感谢!