【问题标题】:In a multithreaded app, would a multi-core or multiprocessor arrangement be better?在多线程应用程序中,多核或多处理器安排会更好吗?
【发布时间】:2011-02-15 14:29:22
【问题描述】:

我已经在这里阅读了很多关于此主题的内容(例如,stackoverflow.com/questions/1713554/threads-processes-vs-multithreading-multi-core-multiprocessor-how-they-are 或 multi-CPU, multi-core and hyper-thread)和其他地方(例如,ixbtlabs.com/articles2/cpu/rmmt-l2-cache.html 或 software.intel.com/en-us/articles/multi-core-introduction/),但我仍然不确定有几个看起来很简单的事情。所以我想我只是问问。

(1) 每个内核都有专用高速缓存的多核处理器是否与多处理器系统一样有效(当然要在处理器速度、高速缓存大小等方面进行平衡)?

(2) 假设我有一些图像要分析(即计算机视觉),并且我将这些图像加载到 RAM 中。我的应用程序为每个需要分析的图像生成一个线程。此应用在共享缓存多核处理器上的运行速度是否会比在专用缓存多核处理器上的运行速度慢,并且后者的运行速度是否与在等效单核多处理器机器上的运行速度相同?

感谢您的帮助!

【问题讨论】:

  • 意识到你在这里的理论领域。从实际的角度来看,您不太可能注意到任何这些选项之间的明显差异。如果这只是智力上的好奇,那很好,但如果你真的试图围绕这些变量进行计划,这就是过早优化的定义。
  • @Adam 我不同意。缓存效果可能会产生相当壮观的伪影,此外,必须计算 cpu 包之间的总线通信如何影响性能以及内存库如何映射到处理器
  • @aaa:壮观(这是一个词吗?)在旁观者的眼中。是的,有一些极端的极端情况,在这个问题中提出的各种设置可能会在性能上有显着差异,但是 a)在考虑整个软件开发时,这些情况非常罕见,并且 b)创建一个全面的(甚至一般来说很好-covered) 确定此类情况的指南几乎是不可能的。
  • @Adam 好吧,我同意你的观点(极端情况)。然而,根据我最近的经验,一些线性代数发生了有趣的事情,添加额外的多核处理器实际上会减慢速度。
  • 缓存效果可能非常引人注目,谷歌“虚假分享”有很多关于此的激动人心的讨论。

标签: multithreading multicore multiprocessor


【解决方案1】:

缓存的大小很重要。为此,我假设 x86 处理器仅使用 L2 缓存,它在双核处理器上共享。

如果您将 2 个单核处理器与 1 个双核处理器进行比较,并且单核处理器都具有相同数量的数据缓存(以相同的速度运行),那么您有更多的缓存,因此更多的图像部分可以适合缓存,如果图像数据的处理必须重复加载和/或存储到此数据,则很有可能在相同的时钟速度下会更快。

如果您将 2 个单核处理器与 1 个双核处理器(其数据缓存是每个单核处理器数据缓存大小的两倍)进行比较,那么大约一半的数据缓存将用于每个处理器的工作。除了每个独立线程必须使用的图像数据之外,很可能还会有一些共享数据。如果此共享数据存储在共享数据缓存中,那么与 2xSingle 内核设置相比,它可以更容易地在两个内核之间共享。在每个共享数据块的 2xSingle 核心设置中,其中一个缓存会存储它,当另一个处理器需要使用该数据时会有一点开销。

双核机器还使线程更容易在同一处理器模块上从一个内核迁移到另一个内核,因为线程的新处理器的缓存不需要填充,而另一个处理器有不需要的数据不再占用空间。

我建议无论您最终得到什么结果,您都可以随时尝试将线程数限制为每个内核 3 到 10 个以供一般使用。线程都将相互竞争该缓存空间,因此太多会导致来自 1 个线程的所有数据在重新调度该线程之前被推出。此外,如果每个线程都可以遍历几个图像文件,那么您可以通过鼓励每个线程的堆栈空间保留在缓存中来获得一点好处,因为您有更少的堆栈。您还可以减少操作系统为跟上线程而必须使用的内存量。

您最大的胜利是当您可以将处理与慢速访问重叠时,例如磁盘、网络或人工交互,因此您需要足够的线程来保持 CPU 繁忙的处理。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-29
    • 1970-01-01
    • 1970-01-01
    • 2013-01-26
    • 1970-01-01
    • 2020-02-26
    • 1970-01-01
    相关资源
    最近更新 更多