【问题标题】:different behavior when using different number of multicoring workers使用不同数量的多核工人时的不同行为
【发布时间】:2010-08-23 13:11:36
【问题描述】:

我正在玩弄我的程序(尝试多核几个部分),我注意到“CPU 历史记录”看起来有点不同,这取决于我启动了多少个工人。 2-4 名工人似乎产生了“稳定”的工作流程,但固定 5-8 名工人会产生不稳定的行为(从零到最大,见图)。我应该指出,所有运行都以“平稳”的最大容量开始(例如,2 个内核只有 25%),并且仅在一分钟左右后才开始表现出不稳定的行为。 这是怎么回事?我有 4 核处理器,您认为这种行为可能与这个事实有关吗?

希望你能看到图片。

2 名工人

3 名工人

4 名工人

5 名工人

6 名工人

7 名工人

8 名工人

【问题讨论】:

  • 您使用的是multicore 包还是doSMP?这是在 Windows 7 上吗?
  • 你的工人的目的是什么?他们是完全独立的吗?也许你的工人挨饿了。
  • 这里有问题吗?如果有,是什么?
  • @Shane:W7 上的 doSMP。由于某种原因,我无法让多核工作......@lmre L:? :) @Dirk:最后两句话:发生了什么事?我有 4 核处理器,你认为这种行为可能与这个事实有关吗?

标签: windows r multicore


【解决方案1】:

这是具有超线程的四核上的经典行为。 R 不会因超线程而受益,因为它经常使用完整的核心进行计算。因此,如果一个物理处理器产生 2 个逻辑处理器,则处理器必须在两个线程之间不断切换,这就解释了这些模式。

对于 R,我推迟了计算机上的超线程。相反,它只是没有帮助。当像 R 一样只使用一个线程时,你会失去容量(最大值是 12.5% 而不是 25%)。

【讨论】:

  • 还要记住,默认情况下,进程不绑定到一个核心,而是一直在核心之间跳转。这解释了为什么当您拥有超过 4 个工作线程时,您注意到的效果会逐渐增加,而不是在 2 个逻辑核心上变得明显。它还解释了您在多核机器上不可避免地会遇到的尖峰图形。
  • 我不认同这个解释。编写良好的 CPU 密集型程序可以更好地利用 CPU。
  • @David:你不买什么?如果你只有 4 个物理核心和 8 个逻辑核心,处理器必须在两个线程之间切换吗?你怎么把2个线程放在一个核心上?同时地?或者,除非您将进程专门绑定到一个内核,否则进程本身会在可行时切换内核这一事实?
  • R 计算应受 Cpu 限制,根据我的经验,此类计算应在 i7 系统上获得至少 80% 的利用率。我已经在双四核(即 16 个逻辑核心)上看到了这一点。 i7 允许 2 个线程同时进行。
  • 使用多核,您可以获得 100%。问题是,如果您有 4 个物理核心但有 8 个逻辑核心,则每个物理核心都会分成两部分。每个核心有两个线程,并在它们之间切换。这就是为什么似乎有一半的内核在短时间内保持空闲状态。保持空闲的不是物理内核,而是逻辑内核。物理内核 100% 工作,每个内核将其功率分配给两个逻辑内核。这解释了图片中的峰值图表。
猜你喜欢
  • 2017-12-31
  • 1970-01-01
  • 1970-01-01
  • 2015-02-11
  • 2021-09-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多