RAM如何在MPI中的进程之间分配?

How is RAM distributed among processes in MPI?

我是 MPI 的新手,我想问一下如何在一个 computer.For 示例中将内存分配给所有进程,对于 4GB RAM 和 2 个进程,每个进程将占用 2GB 内存?

每个进程没有这样的限制。开发人员可以让一个进程使用比其他进程更少的内存或内存,例如通过基于进程等级的分支。

if(rank == 0){
   vector<int> a(N);
   // do sth with a
}

现在只有一个进程消耗了一些内存,而其他进程则没有。

请记住,无论您做什么,如果您不对每个流程进行分支,所有流程都会执行。例如,如果您 运行 以下代码片段 M 进程:

vector<int> a(N);

您将消耗比单进程程序多 M 倍的内存。如果任务要对 a 做一些操作,那么你可以用这个代替:

vector<int> a(ceil((float)N/M));