【发布时间】:2019-04-29 13:16:54
【问题描述】:
我是 MPI 的新手,我想通过 MPI_Send 向另一个进程发送一个 int 数组。
// Code example
int main(int argc, char ** argv)
{
int * array;
int tag=1;
int size;
int rank;
MPI_Status status;
MPI_Init (&argc,&argv);
MPI_Comm_size (MPI_COMM_WORLD,&size);
MPI_Comm_rank (MPI_COMM_WORLD,&rank);
if (rank == 0)
{
array = malloc (10 * sizeof(int)); // Array of 10 elements
if (!array) // error checking
{
MPI_Abort (MPI_COMM_WORLD,1);
}
MPI_Send(&array,10,MPI_INT,1,tag,MPI_COMM_WORLD);
}
if (rank == 1)
{
MPI_Recv (&array,10,MPI_INT,0,tag,MPI_COMM_WORLD,&status);
// more code here
}
MPI_Finalize();
// More code here
我想问三件事。
- 这是将数组发送到另一个进程等级的安全方式吗?
-
MPI_Send()和MPI_Recv()的语法正确用法吗? - 有没有更好的方法来发送和接收数组而不会太麻烦?
感谢任何帮助。
【问题讨论】:
-
我建议在跳入 MPI 之前重新学习有关 C 中指针的基础知识。
-
MPI_Recv()不会为您分配数组。MPI_Send()和MPI_Recv()都需要指向数据的指针,而不是指向数据的指针的地址。