We describe an implementation of a sizable subset of OpenMP on networks of workstations (NOWs). By extending the availability of OpenMP to NOWs, we overcome one of its primary drawbacks compared to MPI, namely lack of portability to environments other than hardware shared memory machines. In order to support OpenMP execution on NOWs, our compiler targets a software distributed shared memory system (DSM) which provides multi-threaded execution and memory consistency. This paper presents two contributions. First, we identify two aspects of the current OpenMP standard that make an implementation on NOWs hard, and suggest simple modifications to the standard that remedy the situation. These problems reflect differences in memory architecture between software and hardware shared memory and the high cost of synchronization on NOWs. Second, we present performance results of a prototype implementation of an OpenMP subset on a NOW, and compare them with hand-coded software DSM and MPI results for the same applications on the same platform. We use five applications (ASCI Sweep3d, NAS 3D- FFT, SPLASH-2 Water, QSORT, and TSP) exhibiting various styles of parallelization, including pipelined execution, data parallelism, coarse-grained parallelism, and task queues. The measurements show little difference between OpenMP and hand-coded software DSM, but both are still lagging behind MPI. Further work will concentrate on compiler optimization to reduce these differences.
我们描述了在工作站网络(NOWs)上对OpenMP的一个相当大的子集的一种实现。通过将OpenMP的可用性扩展到NOWs,我们克服了它与MPI相比的一个主要缺点,即缺乏对硬件共享内存机器之外的环境的可移植性。为了支持在NOWs上执行OpenMP,我们的编译器以一个软件分布式共享内存系统(DSM)为目标,该系统提供多线程执行和内存一致性。本文有两个贡献。首先,我们确定了当前OpenMP标准中使得在NOWs上实现困难的两个方面,并对标准提出了简单的修改建议以解决这种情况。这些问题反映了软件和硬件共享内存之间在内存架构上的差异以及在NOWs上同步的高成本。其次,我们给出了在一个NOW上对OpenMP子集的原型实现的性能结果,并将它们与在同一平台上针对相同应用的手工编码的软件DSM和MPI的结果进行了比较。我们使用了五个应用程序(ASCI Sweep3d、NAS 3D - FFT、SPLASH - 2 Water、QSORT和TSP),它们展示了各种并行化风格,包括流水线执行、数据并行性、粗粒度并行性和任务队列。测量结果显示OpenMP和手工编码的软件DSM之间差异很小,但两者仍然落后于MPI。进一步的工作将集中在编译器优化上以减少这些差异。