Intel Cluster OpenMP 的类似物

发布于 2024-08-24 00:38:32 字数 277 浏览 7 评论 0原文

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

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

我搜索

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

Are there analogs of Intel Cluster OpenMP? This library simulates shared-memory machine (like SMP or NUMA) while running on distributed memory machine (like Ethernet-connected cluster of PC's).

This library allows to start openmp programs directly on cluster.

I search for

  • libraries, which allow multithreaded programms run on distributed cluster
  • or libraries (replacement of e.g. libgomp), which allow OpenMP programms run on distributed cluster
  • or compilers, capable of generating cluster code from openmp programms, besides Intel C++

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

み青杉依旧 2024-08-31 00:38:32

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

您需要注意的一件事是,这些系统在性能方面都没有表现得特别好。 (也许更乐观的说法是,这些东西能够发挥作用是对开发人员的致敬)。您不能简单地忽略这样一个事实:访问节点上的内存与网络上其他节点上的内存非常不同。即使使本地内存系统变得更快也很困难,并且需要大量硬件;您不能只希望一点点软件能够隐藏您现在正在通过网络进行操作的事实。

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

现在,很可能你有一个非常简单的程序,几乎没有实际的共享状态,并且分布式共享内存系统不会那么糟糕 - 但在这种情况下,我必须认为你会更好从长远来看,只需将问题从基于共享内存的模型(如 OpenMP)迁移到无论如何在集群环境中都能更好地工作的模型。

The keyword you want to be searching for is "distributed shared memory"; there's a Wikipedia page on the subject. MOSIX, which became openMOSIX, which is now being developed as part of LinuxPMI, is the closest thing I'm aware of; but I don't have much experience with the current LinuxPMI project.

One thing you need to be aware of is that none of these systems work especially well, performance-wise. (Maybe a more optimistic way of saying it is that it's a tribute to the developers that these things work at all). You can't just abstract away the fact that accessing on-node memory is very very different from memory on some other node over a network. Even making local memory systems fast is difficult and requires a lot of hardware; you can't just hope that a little bit of software will hide the fact that you're now doing things over a network.

The performance ramifications are especially important when you consider that OpenMP programs you might want to run are almost always going to be written assuming that memory accesses are local and thus cheap, because, well, that's what OpenMP is for. False sharing is bad enough when you're talking about different sockets accessing a common cache line - page-based false sharing across a network is just disasterous.

Now, it could well be that you have a very simple program with very little actual shared state, and a distributed shared memory system wouldn't be so bad -- but in that case I've got to think you'd be better off in the long run just migrating the problem away from a shared-memory-based model like OpenMP towards something that'll work better in a cluster environment anyway.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文