首页 > 解决方案 > 在 MPI 中,RAM 是如何在进程之间分配的?

问题描述

我是 MPI 的新手,我想问一下如何将内存分配给一台计算机中的所有进程。例如,对于 4GB RAM 和 2 个进程,每个进程将占用 2 GB 内存?

标签: c++parallel-processingmpiram

解决方案


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

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

推荐阅读