【发布时间】:2019-07-01 04:11:07
【问题描述】:
我是 MPI 的新手,我想问一下内存是如何分配给一台计算机中的所有进程的。例如对于 4GB RAM 和 2 个进程,每个进程将占用 2GB 内存?
【问题讨论】:
标签: c++ parallel-processing mpi ram
我是 MPI 的新手,我想问一下内存是如何分配给一台计算机中的所有进程的。例如对于 4GB RAM 和 2 个进程,每个进程将占用 2GB 内存?
【问题讨论】:
标签: c++ parallel-processing mpi ram
每个进程没有这样的限制。开发人员可以让一个进程比其他进程使用更少的内存或内存,例如通过基于进程等级的分支。
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));
【讨论】: