高度并发的多线程应用程序需要硬件

时间:2009-12-10 17:42:07

标签: linux hardware smp parallel-processing flops

我正在寻找一种硬件,它必须在24小时模式下运行大约256个计算密集型实时并发任务(一个多线程C应用程序)。每项任务大约需要40-50 MFLOP,因此所有任务都需要大约10 GFLOP。 CPU-RAM速度微不足道。所有任务必须由Linux内核(32位,带有SMP)管理。

我正在寻找一个带有一个多核CPU的单主板解决方案(如果存在这样的CPU)。如果这样的CPU不存在,那么我需要一个多插槽主板解决方案(有多个CPU)。

您能否向我推荐任何满足此类要求的专业CPU /主板解决方案? Linux Kernel(2.6.25)也没有问题也很重要。没有虚拟化,没有巨大的RAM或CPU缓存需求。我也更喜欢英特尔架构和久经考验的稳定性。我仍然怀疑它是否可行。

提前谢谢。

更新: 我想我找到了正确答案herehere

7 个答案:

答案 0 :(得分:3)

UltraSPARC T2有8个核心,每个核心有8个线程。集成高带宽内存和IO。 T5140携带其中两个用于128个硬件线程。

  

8个浮点单位的理论最大原始性能是每秒11千兆位(GFlops / s)。然而,与其他实现相比,一个巨大的优势是64个线程可以共享单元,因此我们可以实现极高百分比的理论峰值。我们的实验已经达到了11 Gflop / s的近90%。 - (http://blogs.oracle.com/deniss/entry/floating_point_performance_on_the

答案 1 :(得分:1)

  1. 租用一些Amazon EC2节点。

  2. 更新了:那么PS3呢? NASA将它们用于模拟引擎。

  3. 也许在商用服务器中使用CPU + GPU?

  4. 围绕FPGAs构建:现在,一些变种包括可以运行Linux的处理器。

答案 2 :(得分:1)

即使您已经向我们提供了您认为需要的规格,但如果您告诉我们应用程序的目标是什么以及如何实施,我们可能会帮助您更好。

可能有更好的方法来分解工作或处理它而不是当前的解决方案。

答案 3 :(得分:0)

获取一堆四核或八核计算机,并使用某种网格或群集软件在计算机之间拆分处理。也许看看Beowulf

正如你所提到的,10GFlops并不是完全打算在一台机器上打喷嚏,它会很贵。还有一个问题,当机器坏了你做什么,你不太可能有第二台类似规格的机器。如果使用商用硬件构建集群,则可以更有弹性,并且更容易找到替换机器。

答案 4 :(得分:0)

不是英特尔架构,但它们运行linux并且在单个芯片上有64个内核。

TILEPro64

答案 5 :(得分:0)

我看到你更喜欢英特尔,但如果你需要一个芯片,我会再次建议使用单元处理器 - 它的理论峰值性能是25GFlops - 内核2.6.25已经支持它。

您可以尝试使用超薄游戏机3进行实验(这会花费您很少)或者让自己获得价值约8,000美元的基于服务器的解决方案 - 您将不得不重新编写和微调您的线程在那里推荐SPU协处理器,但你可以通过单个CELL(1个PPC核心+ 8个SPU)来实现您的计算需求而不会出汗!

注意:使用PlayStation 3,您只有6个可用的协处理器 - 但您没有看到这个项目的预算 - 因此,您至少可以尝试IBM的单元开发工具包,它提供了一个模拟器,看看您是否可以编写解决方案来运行它。

Thre是商用CELL产品,既可作为刀片式工厂的独立服务器,也可作为PC工作站的PCI Express附加板 Mercury计算机系统: http://www.mc.com/microsites/cell/products.aspx?id=6986

Mercury没有在网站上列出任何价格,但是这些PCI Express卡的价格大约在上面提到的U $ 8000.00左右。

PlayStation 3视频游戏可以以大约300美元的价格购买 - 并允许您对应用程序进行原型设计,并检查它是否达到了所需的性能。 (我自己拿到了一个并且运行了Fedora 9,虽然我把它作为一个爱好者并且到目前为止还没有用它进行任何计算 - 我还组建了一个用于分子模拟的Playstation-3 12 machinne集群。当地大学。他们运行的应用程序没有利用多媒体SPU,而我当时也接触过。但即便如此,时钟频率为3.5GHz,表现优于标准,价格极低的PC,甚至考虑到PS3的价格是5倍在这附近更高)

答案 6 :(得分:0)

MFLOPS和GFLOPS是程序在任何给定CPU上运行的良好指标。目前,缓存占用空间更为重要;也许分支预测的准确性。

几乎没有办法在不实际给它旋转的情况下测量给定应用程序在不同体系结构上的性能。即便如此,如果你不幸在不知不觉中使用破坏了缓存占用空间的编译器选项,或者使用了错误的线程库,或者其他任何一件事情,那么你可能不会有一个好主意。