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));
我是 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));