我对MPI如何为不同进程之间的共享使用分配内存的理解是,您需要在MPI_Init之前初始化它们。
typedef struct Car {
// struct
} Car;
int main
(int argc, char *argv[])
{
// Shared variables
int size, rank;
Car cars[20];
MPI_Init(&argc, &argv);
MPI_Comm_Size(MPI_COMM_WORLD, &size);
MPI_Comm_Rank(MPI_COMM_WORLD, &rank);
// Node logic
}
这是对的吗?如果是这样的话,如果我想要与节点数一样多的汽车,我将如何处理?
答案 0 :(得分:2)
MPI不为跨进程的共享使用分配内存。在MPI中,每个进程都负责自己的内存管理。如果要在每个进程上分配一个大小为size
的数组,则必须在调用MPI_comm_size
后分配内存。之后,您可以单独初始化每个进程的值,也可以在一个进程上初始化它们并交换消息以更新其他进程。
但你仍然没有共享记忆。每个进程都有一个相同名称的数组,程序员正在编写代码以确保每个进程对该数组中的值具有相同的视图。