【问题标题】:How is RAM distributed among processes in MPI? [closed]在 MPI 中,RAM 是如何在进程之间分配的? [关闭]
【发布时间】:2019-07-01 04:11:07
【问题描述】:

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

【问题讨论】:

    标签: c++ parallel-processing mpi ram


    【解决方案1】:

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

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

    【讨论】:

    • 我明白了,但是 N 个进程中的总内存必须小于 RAM 或者没关系?我的意思是我不能让一个进程使用 3GB 的 RAM,而另一个进程使用 2GB(总计RAM 4GB)还是没关系?
    • @spyros 以我在 if 语句中的操作为例。一个进程可以比其他进程更多地使用内存。向量 a 的范围仅限于 0 级。但是如果你不使用如果每个人都会分配相同的金额。
    • @oblivion 你的回答很好,但我认为 spyros 需要一本书操作系统或一个答案来帮助他们实现目标。
    • @oblivion 我明白你做了什么,我明白了你的意思。我的问题是:假设我们使用 MPI 在 C++ 中编写代码并在一台计算机中创建 2 个进程可以“总和”内存2 个进程使用的内存大于总 RAM
    • @spyros 正如 bailey 指出的那样,您可能需要一本好书:stackoverflow.com/q/2275184/10933809
    猜你喜欢
    • 2014-03-15
    • 2022-01-16
    • 1970-01-01
    • 1970-01-01
    • 2015-04-14
    • 1970-01-01
    • 2013-07-08
    • 2011-08-13
    • 2013-08-17
    相关资源
    最近更新 更多