我想知道是否可以在多个主机上运行 OpenMP 程序。到目前为止,我只听说过可以在多线程上执行但都在同一台物理计算机上执行的程序。是否可以在两个(或更多)客户端上执行程序?我不想使用 MPI。
是的,可以在分布式系统上运行 OpenMP 程序,但我怀疑每个用户都可以做到这一点。 ScaleMP 提供 vSMP——一种昂贵的商业管理程序软件,允许人们在许多联网主机之上创建虚拟 NUMA 机器,然后在该虚拟机内运行常规操作系统(Linux 或 Windows)。它需要快速的网络互连(例如 InfiniBand)和专用主机(因为它在正常操作系统下作为虚拟机管理程序运行)。我们这里有一个可运行的 vSMP 集群,它运行未经修改的 OpenMP 应用程序,但性能很大程度上取决于数据层次结构和访问模式。
NICTA曾经开发过类似的SSI管理程序,名为vNUMA,但开发也停止了。此外,他们的解决方案是 IA64 特定的(IA64 是 Intel Itanium,不要与 Intel64 混淆,后者是他们当前一代的 x86 CPU)。
Intel 曾经开发过 Cluster OpenMP(ClOMP;不要与为 Clang 带来 OpenMP 支持的类似名称的项目混淆),但由于“客户普遍缺乏兴趣,而且显示出好处的案例比预期少”,该项目被放弃了(从here http://software.intel.com/en-us/forums/topic/281819)。 ClOMP 是英特尔对 OpenMP 的扩展,它内置于英特尔编译器套件中,例如你不能将它与 GCC 一起使用(这个request http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27541为 GCC 启动 ClOMP 开发陷入了困境)。如果您可以访问旧版本的英特尔编译器(版本从 9.1 到 11.1),则必须获得(试用)ClOMP 许可证,鉴于该产品已失效并且旧(试用)许可证已经过时,这几乎是不可能的已到期。不过,从版本 12.0 开始,英特尔编译器不再支持 ClOMP。
存在其他研究项目(只需搜索“分布式共享内存”),但只有 vSMP(ScaleMP 解决方案)似乎对于生产 HPC 环境来说足够成熟(并且相应定价)。似乎现在大多数努力都投入到了联合数组语言(Co-Array Fortran、Unified Parallel C 等)的开发上。我建议你看一下伯克利UPC http://upc.lbl.gov/或者投入一些时间学习 MPI,因为它在未来几年绝对不会消失。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)