【问题标题】:Multi core programming多核编程
【发布时间】:2008-12-11 18:15:00
【问题描述】:

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

【问题讨论】:

    标签: hardware multicore


    【解决方案1】:

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

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

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

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

    如果您有兴趣了解有关多插槽机器的性能不一致的更多信息,您还可以查看this technical report 的相关主题。

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

    【讨论】:

      【解决方案2】:

      四核,因为它可以让您解决并发进程数大于 2 的问题,这通常不是小问题。

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

      【讨论】:

        【解决方案3】:

        这取决于你想做什么。

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

        不过,虽然您可以在单核机器上学习多线程编程,但双核(甚至超线程)CPU 会很有帮助。

        如果您想对您正在编写的代码进行真正的压力测试,那么正如“blue tuxedo”所说,您应该尽可能多地使用可以负担得起的内核,并且如果可能的话,还要使用超线程。

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

        【讨论】:

          【解决方案4】:

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

          【讨论】:

            【解决方案5】:

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

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

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

            【讨论】:

              【解决方案6】:

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

              幸运的是,有一点是正确的:计算机表现出的并发性越高,你就会发现越多的竞争条件。

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

              【讨论】:

                【解决方案7】:

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

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

                【讨论】:

                  【解决方案8】:

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

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

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

                  如果这有帮助,请告诉我! 捷豹路虎

                  【讨论】:

                    猜你喜欢
                    • 2010-12-10
                    • 1970-01-01
                    • 1970-01-01
                    • 2010-12-08
                    • 1970-01-01
                    • 2011-01-23
                    • 2011-11-13
                    • 2011-04-08
                    • 1970-01-01
                    相关资源
                    最近更新 更多