我是MPI的新手,我想问一下如何将内存分配给一台计算机上的所有进程,例如对于4GB RAM和2个进程,每个进程将占用2GB内存?
答案 0 :(得分:0)
每个进程没有这样的限制。开发人员有责任让一个进程使用比其他进程更少的内存,例如通过基于进程等级进行分支。
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));