不同主机上的OpenMP程序

gkr*_*ris 5 parallel-processing distributed-computing openmp

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

Hri*_*iev 11

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

NICTA用于开发名为vNUMA的类似SSI管理程序,但开发也停止了.除了他们的解决方案是IA64特定的(IA64是Intel Itanium,不要误解为Intel64,这是他们当前的x86 CPU).

英特尔过去常常开发集群OpenMP(ClOMP;不要误解同样命名的项目,以便为Clang提供OpenMP支持),但由于"客户普遍缺乏兴趣而且案例数量少于预期,显示出收益"而被放弃了(从这里).ClOMP是英特尔对OpenMP的扩展,它内置于英特尔编译器套件中,例如你不能将它用于GCC(这个为GCC启动ClOMP开发的请求陷入了困境).如果您可以访问旧版本的英特尔编译器(版本从9.1到11.1),则必须获得(试用版)ClOMP许可证,这可能几乎是不可能的,因为产品已经死亡且旧的(试用)许可证已经存在过期.然后,从版本12.0开始,英特尔编译器不再支持ClOMP.

存在其他研究项目(仅搜索"分布式共享内存"),但只有vSMP(ScaleMP解决方案)似乎足够成熟,适用于生产HPC环境(并且相应地定价).现在大多数人都在努力开发共同阵列语言(Co-Array Fortran,统一并行C等).我建议您看看伯克利UPC或花一些时间学习MPI,因为它在未来几年肯定不会消失.