多核编程

时间:2008-12-11 18:15:00

标签: hardware multicore

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

8 个答案:

答案 0 :(得分:6)

如果可能的话,我会建议购买双插槽机器,最好使用四核芯片。你当然可以得到一个单插槽机器,但双插槽可以让你开始看到随着核心数量越来越高而会加剧NUMA内存的一些影响。

为什么要关心?目前多核开发人员面临两个巨大的问题:

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

  2. 内存每当您开始拥有多个线程时,就会出现争用资源的问题,内存墙也越来越大。 A recent article at arstechnica概述了桑迪亚的一些(非常初步的)研究,该研究表明,如果目前的趋势持续下去,这可能会有多糟糕。多核机器将不得不保持所有食物,这将要求人们非常熟悉他们的记忆系统。双插槽为混合添加NUMA(至少在AMD机器上),这应该让你开始走这条艰难的道路。

  3. 如果您对有关多插槽机器性能不一致的更多信息感兴趣,您还可以查看有关该主题的this technical report

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

答案 1 :(得分:4)

四核,因为它允许你在并发进程数量为>的情况下解决问题。 2,这往往是非常轻微的问题。

我也会,为了纯粹的极客挤压,拿起一张漂亮的NVidia卡并使用CUDA API。如果你有钱,有一个独立的CUDA工作站,可以通过电缆和扩展槽插入主计算机。

答案 2 :(得分:2)

这取决于你想做什么。

如果您想学习多线程编程的基础知识,那么您可以在现有的单核PC上实现这一目标。 (如果你有2个线程,那么操作系统将在单核PC上切换它们。然后当你转移到双核PC时,它们应该在不同的内核上自动并行运行,速度提高2倍)。这有免费的优势!缺点是您不会看到加速(实际上并行实现可能会因开销而略微减慢),并且该错误代码的工作机会略高。

然而,尽管您可以在单核盒子上学习多线程编程,但双核(甚至超线程)CPU将是一个很好的帮助。

如果你想真正对你正在编写的代码进行压力测试,那么就像“蓝色礼服”所说的那样,你应该选择尽可能多的核心,如果可能的话,也可以获得超线程。

如果你想了解在显卡上运行的算法 - 这是x86多核的一个非常不同的领域 - 然后获得CUDA并购买支持它的普通nVidia显卡。

答案 3 :(得分:1)

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

答案 4 :(得分:1)

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

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

最后,任何采用Core Quad或四核Opteron的现代主板(从华硕或其他声誉良好的制造商那里获得一个好的主板)都可以让您以合理的金额来试验多核PC系统。

答案 5 :(得分:1)

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

幸运的是,有一件事情仍然存在:计算机显示的并发性越高,您将展示的竞争条件就越多。

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

答案 6 :(得分:1)

我同意,根据你最终想要做的事情,你可能只使用你当前的单核系统。多核编程基本上是多线程编程,你当然可以在单核芯片上实现。

当我还是学生时,我们的一个项目是为C构建一个线程安全的实现malloc库。即使在一个单核处理器上,这也足以让我对进入多个系统的愿望有所了解。线程编程。在你开始考虑花很多钱之前,我会尝试这样的小事。

答案 7 :(得分:0)

我同意其他我升级到四核处理器的地方。我也是华硕主板的大风扇(P5Q Pro非常适合Core2Quad和Core2Duo处理器)!

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

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

如果这有帮助,请告诉我! JFV