1

有英特尔 Cluster OpenMP 的类似物吗?该库模拟共享内存机器(如 SMP 或 NUMA),同时在分布式内存机器(如以太网连接的 PC 集群)上运行。

该库允许直接在集群上启动 openmp 程序。

我寻找

  • 允许多线程程序在分布式集群上运行的库
  • 或库(替换例如 libgomp),允许 OpenMP 程序在分布式集群上运行
  • 或编译器,能够从 openmp 程序生成集群代码,除了 Intel C++
4

1 回答 1

3

您要搜索的关键字是“分布式共享内存”;有一个关于这个主题的维基百科页面。MOSIX,后来成为 openMOSIX,现在作为LinuxPMI的一部分进行开发,是我所知道的最接近的东西;但我对当前的 LinuxPMI 项目没有太多经验。

您需要注意的一件事是,这些系统在性能方面都不是特别好。(也许更乐观的说法是,这些东西完全可以工作是对开发人员的一种敬意)。您不能仅仅抽象出这样一个事实,即访问节点上的内存与通过网络访问其他节点上的内存非常不同。甚至使本地内存系统变得快速也很困难,并且需要大量硬件;你不能只希望一点点软件就能隐藏你现在通过网络做事的事实。

当您考虑到您可能想要运行的 OpenMP 程序几乎总是在假设内存访问是本地的并且因此便宜的情况下编写时,性能影响尤其重要,因为这就是 OpenMP 的用途。当您谈论访问公共缓存行的不同套接字时,错误共享已经够糟糕了——跨网络的基于页面的错误共享简直是灾难性的。

现在,很可能你有一个非常简单的程序,实际共享状态很少,分布式共享内存系统也不会那么糟糕——但在那种情况下,我不得不认为你会过得更好从长远来看,只是将问题从像 OpenMP 这样的基于共享内存的模型迁移到无论如何在集群环境中工作得更好的东西。

于 2010-12-20T19:28:17.273 回答