Efficient Dynamic Parallelism with OpenMP on Linux-Based SMPs

In this paper we present an integrated environment for the efficient support of dynamic parallelism with OpenMP on top of Linux-based SMPs. This environment consists of an OpenMPcompliant Fortran77 compiler, a run-time threads library and a modified Linux kernel. The functionality provided by our run-time threads library is used by the NanosCompiler, which converts OpenMP Fortran77 programs to equivalent Fortran77 programs with calls to the library. The NanosCompiler generated applications use a shared arena as a communication path with the OS kernel. This kind of communication facilitates the support of dynamic parallelism, resulting to performance scalability under multiprogramming. In order to evaluate the efficiency of our approach, we have used a subset of an OpenMP implementation of the NAS benchmarks. We compared the performance of our environment with that of OmniMP. OmniMP is a free source-to-source compiler, that converts OpenMP programs written in C or Fortran77 to equivalent C programs using POSIX threads. Our environment achieves up to 6.3 times higher throughput under the presence of multiprogramming. Moreover, it performs better even on dedicated machines.