不同主机上的 OpenMP 程序 [英] OpenMP program on different hosts

查看:21
本文介绍了不同主机上的 OpenMP 程序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想知道是否可以在多个主机上运行 OpenMP 程序.到目前为止,我只听说过可以在多个线程上执行但都在同一台物理计算机中执行的程序.是否可以在两个(或更多)客户端上执行程序?我不想使用 MPI.

I want to know if it would be possible to run an OpenMP program on multiple hosts. So far I only heard of programs that can be executed on multiple thread but all within the same physical computer. Is it possible to execute a program on two (or more) clients? I don't want to use MPI.

推荐答案

是的,可以在分布式系统上运行 OpenMP 程序,但我怀疑它是否在每个用户的范围内.ScaleMP 提供了 vSMP——一种昂贵的商业管理程序软件,允许在许多联网主机上创建虚拟 NUMA 机器,然后在此 VM 中运行常规操作系统(Linux 或 Windows).它需要快速的网络互连(例如 InfiniBand)和专用主机(因为它在正常操作系统下作为管理程序运行).我们这里有一个可操作的 vSMP 集群,它运行未经修改的 OpenMP 应用程序,但性能在很大程度上取决于数据层次结构和访问模式.

Yes, it is possible to run OpenMP programs on a distributed system, but I doubt it is within the reach of every user around. ScaleMP offers vSMP - an expensive commercial hypervisor software that allows one to create a virtual NUMA machine on top of many networked hosts, then run a regular OS (Linux or Windows) inside this VM. It requires a fast network interconnect (e.g. InfiniBand) and dedicated hosts (since it runs as a hypervisor beneath the normal OS). We have an operational vSMP cluster here and it runs unmodified OpenMP applications, but performance is strongly dependent on data hierarchy and access patterns.

NICTA 曾经开发过类似的名为 vNUMA 的 SSI 管理程序,但开发也停止了.此外,他们的解决方案是特定于 IA64 的(IA64 是 Intel Itanium,不要与 Intel64 混淆,这是他们当前一代的 x86 CPU).

NICTA used to develop similar SSI hypervisor named vNUMA, but development also stopped. Besides their solution was IA64-specific (IA64 is Intel Itanium, not to be mistaken with Intel64, which is their current generation of x86 CPUs).

英特尔曾经开发过 Cluster OpenMP(ClOMP;不要误认为是将 OpenMP 支持引入 Clang 的同名项目),但由于客户普遍缺乏兴趣,而且它显示的案例少于预期,因此被放弃了好处"(来自此处).ClOMP 是英特尔对 OpenMP 的扩展,它内置于英特尔编译器套件中,例如你不能在 GCC 中使用它(这个请求开始 GCC 的 ClOMP 开发进入了悬空).如果您可以访问旧版本的英特尔编译器(从 9.1 到 11.1 的版本),您将必须获得(试用)ClOMP 许可证,鉴于该产品已失效并且旧的(试用)许可证已经存在,这几乎是不可能的已到期.再说一次,从 12.0 版开始,英特尔编译器不再支持 ClOMP.

Intel used to develop Cluster OpenMP (ClOMP; not to be mistaken with the similarly named project to bring OpenMP support to Clang), but it was abandoned due to "general lack of interest among customers and fewer cases than expected where it showed a benefit" (from here). ClOMP was an Intel extension to OpenMP and it was built into the Intel compiler suite, e.g. you couldn't use it with GCC (this request to start ClOMP development for GCC went in the limbo). If you have access to old versions of Intel compilers (versions from 9.1 to 11.1), you would have to obtain a (trial) ClOMP license, which might be next to impossible given that the product is dead and old (trial) licenses have already expired. Then again, starting with version 12.0, Intel compilers no longer support ClOMP.

存在其他研究项目(仅搜索分布式共享内存"),但只有 vSMP(ScaleMP 解决方案)对于生产 HPC 环境来说似乎足够成熟(并且价格相应地定价).似乎现在大多数努力都转向了协同阵列语言(Co-Array Fortran、Unified Parallel C 等)的开发.我建议你看看 Berkeley UPC 或者花一些时间学习 MPI,因为它肯定不会在几年内消失来.

Other research projects exist (just search for "distributed shared memory"), but only vSMP (the ScaleMP solution) seems to be mature enough for production HPC environments (and it's priced accordingly). Seems like most efforts now go into development of co-array languages (Co-Array Fortran, Unified Parallel C, etc.) instead. I would suggest that you have a look at Berkeley UPC or invest some time in learning MPI as it is definitely not going away in the years to come.

这篇关于不同主机上的 OpenMP 程序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆