gpt4 book ai didi

c++ - 多核机器上的多个程序实例

转载 作者:IT王子 更新时间:2023-10-29 01:07:58 26 4
gpt4 key购买 nike

我假设一台双核(每个处理器 2 个内核)机器有 2 个处理器来回答下面的问题;所以总共有 4 个“核心”。所以一些自然的问题出现了:

  1. 假设我编写了一个简单的串行程序并将其构建在 Visual Studio 中......然后运行同一程序两次,比如说,每次运行时输入数据不同。他们会在同一个处理器上运行吗?还是不同的处理器?每个将分配多少 RAM 内存?是 1 个处理器(2 个内核)上的 RAM 内存还是总 RAM?我相信这两个程序会在不同的处理器上运行,并且每个程序都应该有 1 个处理器(2 个内核)的 RAM 内存;但我不是 100% 确定。 Linux 上的行为会有什么不同吗?

  2. 现在假设我的程序是使用分布式内存并行接口(interface)(例如 MPI)编写的,并且我在 np 参数(比方说)中使用 2 个处理器运行了一次。该程序会使用两个处理器(实际上是所有 4 个内核)吗?这是参数 -np 的最优值吗?换句话说,如果我对 -np 3 或 -np 4 做同样的事情;假设没有额外优势是否正确?同样,我也这么认为,但我不是 100% 确定。我还假设我可以高于 4(-np 5、-np 6 等)。在这种情况下,进程如何在 np > 4 的值处竞争内存? np > 4 时性能会变差吗?我想是的,也许这部分取决于问题的大小,但也不是 100% 确定。

    接下来,假设我运行了我的 MPI 构建的并行程序的两个实例,都带有 -np 2,每个实例都有不同的输入数据。首先,这可能吗?我认为是的,并且它们每个都在两个处理器上运行?这两个程序是如何同步的,它们又是如何按顺序单独竞争内存的?这应该至少部分地基于启动程序的顺序,大概是吧?

  3. 最后,假设我的程序是使用共享内存并行接口(interface)(例如 OpenMP)编写的,并且我运行了一次。我可以在多少个“线程”上运行它以充分利用共享内存并行性——是 2 个还是 4 个? (因为我有 2 个处理器,每个处理器有 2 个内核)。我的猜测是 4;因为所有 4 个内核都是单个共享内存单元的一部分?那是对的吗?如果答案是4;在超过 4 个线程上运行有意义吗?我不确定这是否有效(与 MPI 不同,我相信我们可以在 MPI 中执行 -np 5、-np 6 等等)。

最后,假设我运行了共享内存并行程序的 2 个实例,每个实例都具有不同的输入数据。我假设这是可能的,并且各个进程会以某种方式竞争内存,大概是按照程序启动的顺序?

最佳答案

它们运行在哪个处理器上完全取决于操作系统并取决于许多因素,包括同一台机器上发生的任何其他事情。不过,常见的情况是它们倾向于各自位于一个核心上,偶尔会切换到不同的核心(“偶尔”可能意味着每秒几次甚至更频繁)。

在普通 PC 硬件上,Çores 没有自己的 RAM,无论进程请求多少 RAM,它们都会被提供。

对于 MPI 进程,是的,您的并行度应该与核心数相匹配(假设 CPU 繁重的工作负载)。如果两个 MPI 进程以 -np 2 运行,它们将简单地消耗所有四个核心。增加任何东西,他们就会开始竞争。如上所述,RAM 与这一切无关,但缓存会因争用而受到影响。

这个“问题”太长了,所以我现在要打住。

关于c++ - 多核机器上的多个程序实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6989626/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com