5

我想进入多核编程(不是特定于语言)并且想知道可以推荐哪些硬件来探索这个领域。我的目标是升级我现有的桌面。

4

8 回答 8

6

如果可能的话,我建议买一台双路机器,最好是四核芯片。您当然可以获得单插槽机器,但双插槽会让您开始看到 NUMA 内存的一些影响,随着核心数量越来越多,这些影响将会加剧。

你为什么在乎?现在多核开发者面临两个巨大的问题:

  1. 编程模型 并行编程很难,并且(目前)无法解决这个问题。四核系统将让您开始使用真正的并发性和所有流行的范例(线程、UPC、MPI、OpenMP 等)。

  2. 内存 每当您开始拥有多个线程时,就会出现资源争用,并且内存墙越来越大。arstechnica最近的一篇文章概述了桑迪亚的一些(非常初步的)研究,表明如果当前趋势继续下去,这可能会变得多么糟糕。多核机器将不得不让所有东西都吃饱,这将要求人们非常熟悉他们的内存系统。双插槽将 NUMA 添加到组合中(至少在 AMD 机器上),这应该让您开始走上这条艰难的道路。

如果您对有关多插槽机器的性能不一致的更多信息感兴趣,您还可以查看此主题的技术报告

此外,其他人建议使用支持 CUDA 的 GPU 的系统,我认为这也是进入多线程编程的好方法。它比我上面提到的东西级别低,但如果可以的话,在你的机器上扔一个。新的 Portland Group 编译器临时支持使用 CUDA 优化循环,因此即使您不想自己学习 CUDA,也可以使用 GPU。

于 2008-12-11T19:00:46.857 回答
4

四核,因为它允许您解决并发进程数大于 2 的问题,这通常不会使问题变得简单。

对于纯粹的 geek squee ,我也会选择一张漂亮的 NVidia 卡并使用 CUDA API。如果你有钱,有一个独立的 CUDA 工作站,它通过电缆和扩展槽插入你的主计算机。

于 2008-12-11T18:44:08.217 回答
2

这取决于你想做什么。

如果您想学习多线程编程的基础知识,那么您可以在现有的单核 PC 上进行。(如果您有 2 个线程,那么操作系统将在单核 PC 上在它们之间切换。然后当您转移到双核 PC 时,它们应该会自动在单独的内核上并行运行,以实现 2 倍的加速)。这样做的好处是免费!缺点是您不会看到加速(事实上,由于开销,并行实现可能会稍微慢一些),并且错误代码的工作机会略高。

但是,尽管您可以在单核机器上学习多线程编程,但双核(甚至超线程)CPU 将有很大帮助。

如果你想对你正在编写的代码进行真正的压力测试,那么正如“蓝色燕尾服”所说,你应该尽可能多地使用你能负担得起的内核,如果可能的话,还要使用超线程。

如果您想了解在显卡上运行的算法(这与 x86 多核非常不同),请获取 CUDA 并购买支持它的普通 nVidia 显卡。

于 2008-12-11T19:08:22.397 回答
1

我建议至少使用四核处理器。

于 2008-12-11T18:16:54.590 回答
1

您可以尝试修补CUDA。它是免费的,使用起来并不难,并且可以在任何最新的 NVIDIA 卡上运行

或者,您可以获得 PlayStation 3 和Linux SDK,并研究如何对 Cell 处理器进行编程。请注意,Cell BE 开发的下一个最便宜的选择是比 PS3 贵一个数量级。

最后,任何采用 Core Quad 或四核 Opteron 的现代主板(从华硕或其他知名制造商处获得好的主板)都可以让您以合理的价格试用多核 PC 系统。

于 2008-12-11T18:20:51.073 回答
1

我同意,根据您最终想要做什么,您可能只使用当前的单核系统即可。多核编程基本上是多线程编程,你当然可以在单核芯片上做到这一点。

当我还是学生的时候,我们的一个项目是为 C 构建一个线程安全的 malloc 库实现。即使在单核处理器上,这也足以治愈我对多线程编程的渴望。在你开始考虑花很多钱之前,我会尝试一些类似的小东西。

于 2008-12-11T19:56:16.077 回答
1

多线程/核心编程的困难在于它打开了一个全新的蠕虫罐。您将面临的错误通常不是您习惯的错误。竞争条件可能会在很长一段时间内保持休眠状态,直到它们咬人并且您的主流语言编译器不会以任何方式帮助您。您将获得每天/每周/每月/每年仅发生一次的随机数据和/或崩溃,通常是在最神秘的条件下......

幸运的是,一件事仍然正确:计算机表现出的并发性越高,您将揭示的竞争条件就越多。

因此,如果您对多线程/内核编程很认真,那么请尽可能多地使用 cpu内核。请记住,超线程和 SMT 都不允许多核提供的并发级别。

于 2008-12-11T18:55:59.880 回答
0

我同意其他我将升级到四核处理器的观点。我也是华硕主板的忠实粉丝(P5Q Pro 非常适合 Core2Quad 和 Core2Duo 处理器)!

多核编程的吸引力在于您拥有更多资源来更快地完成工作。如果你对多核编程很认真,那么我绝对会买一个四核处理器。我不认为你应该从英特尔获得新的 i7 架构来利用多核处理,因为任何为利用 Core2Duo 或 Core2Quad 而编写的东西都会在新架构上运行得更好。

如果你打算涉足多核编程,那么我会得到一个好的 Core2Duo 处理器。请记住,这不仅仅是您拥有多少核心,还有核心处理作业的速度有多快。运行在 4GHz 的 Core2Duo 通常比运行在 2.4GHz 的 Core2Quad 更快地完成工作,即使使用多核程序也是如此。

让我知道这是否有帮助!联合部队

于 2008-12-11T18:39:46.260 回答