多核编程

5

我希望能够涉足多核编程(不限语言),想知道有哪些硬件可以推荐用于探索这个领域。我的目标是升级我现有的台式电脑。

8个回答

6
如果可能的话,我建议选择双插槽机器,最好是四核芯片。您当然可以选择单插槽机器,但双插槽可以让您开始看到随着核心数量越来越高而加剧的NUMA内存效应。
为什么要关心呢?目前面临着两个巨大的多核开发问题:
  1. 编程模型 并行编程很难,目前还没有简单的方法。四核系统可以让您开始尝试真正的并发性和所有流行的范式(线程、UPC、MPI、OpenMP等)。

  2. 内存 当您开始拥有多个线程时,资源争用将会出现,而内存壁垒也越来越高。 arstechnica 的最近一篇文章 概述了 Sandia 进行的一些(非常初步的)研究,显示出如果当前趋势继续下去,情况可能变得非常糟糕。多核机器将不得不保持一切运转,并且这将需要人们对内存系统非常熟悉。双插槽在 AMD 机器上增加了 NUMA(非一致内存访问架构),这将让您开始走上这条艰难的道路。

如果您对多插槽计算机的性能不一致性更多信息感兴趣,您还可以查看此技术报告。同时,其他人建议使用具有CUDA可用GPU的系统,我认为这也是进入多线程编程的好方法。它比我上面提到的东西更低级,但如果可以,在您的机器上安装一个。新的Portland Group编译器具有支持使用CUDA优化循环的临时支持,因此即使您不想自己学习CUDA,也可以尝试玩弄GPU。

4

四核处理器,因为它可以让您处理同时运行进程数量大于2的问题,这通常会使问题变得复杂。

我还建议,出于纯粹的极客喜爱,购买一张好的NVidia显卡并使用CUDA API。如果您有足够的资金,可以购买一个独立的CUDA工作站,通过电缆和扩展插槽连接到您的主要计算机。


2

要看你想做什么。

如果你想学习多线程编程的基础知识,则可以在现有的单核 PC 上进行。 (如果你有 2 个线程,那么操作系统将在单核 PC 上在它们之间切换。然后当你转移到双核 PC 时,它们应该会自动在不同的核心上并行运行,加速 2 倍)。这种方法的优点是免费!缺点是你不会看到速度提升(实际上,由于额外开销的存在,并行实现可能略慢),而且错误代码的工作机会略高。

然而,虽然你可以在单核处理器上学习多线程编程,但双核(甚至超线程)CPU 会很有帮助。

如果你想真正测试你所编写的代码,如“蓝色礼服”所说,你应该选择尽可能多的核心,并尽可能获取超线程技术。

如果你想学习在图形卡上运行的算法——这是与 x86 多核截然不同的领域——则可以获取 CUDA 并购买支持它的普通 nVidia 图形卡。


1

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


1

你可以尝试调整CUDA。它是免费的,使用起来不是很难,并且可以在任何近期的NVIDIA显卡上运行。

或者,你可以购买PlayStation 3和Linux SDK,并学习如何编程Cell处理器。请注意,下一个最便宜的Cell BE开发选项比PS3贵一个数量级。

最后,任何现代主板都可以安装Core Quad或四核Opteron(从Asus或其他知名制造商购买好的),以合理的价格让你尝试多核PC系统。


1

多线程/核心编程的难点在于它会带来一系列新问题。你所面临的错误通常不是你习惯的那种。竞态条件可能会长期潜伏,直到它们咬你一口,而你的主流语言编译器不会以任何方式协助你。你会得到随机数据和/或崩溃,这些只会在一天/一周/一个月/一年中发生一次,通常在最神秘的情况下...

幸运的是,有一件事情始终如一:计算机展示的并发性越高,你就会揭示出更多的竞态条件。

因此,如果你真的关注多线程/核心编程,那么尽可能选择多个CPU 核心。请记住,超线程和SMT都不能提供多个核心所提供的并发级别。


1

我认为,根据你最终想要做什么,你可能只需要你现有的单核系统。多核编程基本上就是多线程编程,而你肯定可以在单核芯片上完成这个任务。

当我还是学生的时候,我们的一个项目是构建一个线程安全的C语言malloc库实现。即使在单核处理器上,那也足以让我放弃了进入多线程编程的愿望。在你开始考虑花费大量资金之前,我建议你先尝试一些小的项目。


0

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

多核编程的优势在于你有更多的资源来更快地完成任务。如果你认真对待多核编程,那么我绝对会选择四核处理器。我不认为你应该购买英特尔的新i7架构来利用多核处理,因为任何针对Core2Duo或Core2Quad的程序都会在新架构上运行得更好。

如果你只是尝试一下多核编程,那么我建议你购买一款好的Core2Duo处理器。记住,重要的不仅是你拥有多少个核心,还有这些核心处理任务的速度有多快。我的Core2Duo处理器以4GHz的速度运行,比我的Core2Quad处理器以2.4GHz的速度运行时,即使是在多核程序中,也能更快地完成任务。

如果这篇文章对你有所帮助,请告诉我! JFV


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接