【发布时间】:2008-12-11 18:15:00
【问题描述】:
我想进入多核编程(不是特定语言),想知道可以推荐哪些硬件来探索这个领域。 我的目标是升级我现有的桌面。
【问题讨论】:
我想进入多核编程(不是特定语言),想知道可以推荐哪些硬件来探索这个领域。 我的目标是升级我现有的桌面。
【问题讨论】:
如果可能的话,我建议购买双插槽机器,最好是四核芯片。您当然可以获得单插槽机器,但双插槽会让您开始看到 NUMA 内存的一些影响,随着核心数量越来越多,这种影响将会加剧。
你为什么在乎?目前多核开发者面临两个巨大的问题:
编程模型 并行编程很难,并且(目前)无法解决这个问题。四核系统将让您开始使用真正的并发和所有流行的范例(线程、UPC、MPI、OpenMP 等)。
内存 每当您开始拥有多个线程时,就会出现资源争用,并且内存墙越来越大。 recent article at arstechnica 概述了桑迪亚的一些(非常初步的)研究,表明如果当前趋势继续下去,情况可能会变得多么糟糕。多核机器将不得不让所有东西都吃饱,这将要求人们非常熟悉他们的内存系统。双插槽将 NUMA 添加到组合中(至少在 AMD 机器上),这应该可以帮助您开始这条艰难的道路。
如果您有兴趣了解有关多插槽机器的性能不一致的更多信息,您还可以查看this technical report 的相关主题。
另外,其他人建议使用支持 CUDA 的 GPU 的系统,我认为这也是进入多线程编程的好方法。它比我上面提到的东西级别低,但如果可以的话,在你的机器上扔一个。新的 Portland Group 编译器具有 provisional support for optimizing loops with CUDA,因此即使您不想自己学习 CUDA,也可以使用 GPU。
【讨论】:
四核,因为它可以让您解决并发进程数大于 2 的问题,这通常不是小问题。
对于纯粹的 geek squee,我也会选择一个不错的 NVidia 卡并使用 CUDA API。如果你有钱,有一个独立的 CUDA 工作站,它通过电缆和扩展槽插入你的主计算机。
【讨论】:
这取决于你想做什么。
如果您想学习多线程编程的基础知识,那么您可以在现有的单核 PC 上进行。 (如果您有 2 个线程,那么操作系统将在单核 PC 上在它们之间切换。然后当您转移到双核 PC 时,它们应该会自动在单独的内核上并行运行,以实现 2 倍的加速)。这样做的好处是免费!缺点是您不会看到加速(事实上,由于开销,并行实现可能会稍微慢一些),并且有错误的代码有更高的工作机会。
不过,虽然您可以在单核机器上学习多线程编程,但双核(甚至超线程)CPU 会很有帮助。
如果您想对您正在编写的代码进行真正的压力测试,那么正如“blue tuxedo”所说,您应该尽可能多地使用可以负担得起的内核,并且如果可能的话,还要使用超线程。
如果您想了解在显卡上运行的算法(这与 x86 多核非常不同),请获取 CUDA 并购买支持它的普通 nVidia 显卡。
【讨论】:
我建议至少使用四核处理器。
【讨论】:
多线程/核心编程的困难在于它打开了一个全新的蠕虫罐。您将面临的错误通常不是您习惯的错误。竞争条件可能会在很长一段时间内保持休眠状态,直到它们咬人并且您的主流语言编译器不会以任何方式帮助您。您将获得每天/每周/每月/每年仅发生一次的随机数据和/或崩溃,通常是在最神秘的条件下...
幸运的是,有一点是正确的:计算机表现出的并发性越高,你就会发现越多的竞争条件。
因此,如果您对多线程/内核编程很认真,那么请尽可能多地使用 cpu 内核。请记住,超线程和 SMT 都不允许多核提供的并发级别。
【讨论】:
我同意,根据您最终想要做什么,您可能只使用当前的单核系统就可以过关。多核编程基本上是多线程编程,你当然可以在单核芯片上做到这一点。
当我还是学生的时候,我们的一个项目是为 C 构建一个线程安全的 malloc 库实现。即使在单核处理器上,这也足以治愈我想要进入多核处理器的愿望。线程编程。在你开始考虑花很多钱之前,我会尝试一些类似的小东西。
【讨论】:
我同意其他人的意见,我将升级到四核处理器。我也是华硕主板的忠实粉丝(P5Q Pro 非常适合 Core2Quad 和 Core2Duo 处理器)!
多核编程的吸引力在于您拥有更多资源来更快地完成工作。如果你对多核编程很认真,那么我绝对会买一个四核处理器。我不认为你应该从英特尔获得新的 i7 架构来利用多核处理,因为任何为利用 Core2Duo 或 Core2Quad 而编写的东西都会在新架构上运行得更好。
如果你打算涉足多核编程,那么我会得到一个好的 Core2Duo 处理器。请记住,这不仅仅是您拥有多少核心,还有核心处理作业的速度有多快。运行在 4GHz 的 Core2Duo 通常比运行在 2.4GHz 的 Core2Quad 更快地完成工作,即使使用多核程序也是如此。
如果这有帮助,请告诉我! 捷豹路虎
【讨论】: