Hosting OpenMP Programs on Java Virtual Machines

Research output: Chapter in Book/Report/Conference proceedingConference contributionpeer-review

  • Authors:
  • Swapnil Gaikwad
  • Andrew Nisbet
  • Mikel Luján

Abstract

To leverage existing virtual machine infrastructures is attractive for programming language implementors because competitive runtime performance may be achieved with a reduced effort. For example, the Truffle framework has en- abled Ruby (TruffleRuby), and C (Sulong) guest language implementations to be hosted on a Java Virtual Machine (JVM). In this paper, we present Sulong-OpenMP, the first Truffle-based implementation to support parallel programs written in C/C++ and OpenMP. Our implementation adds OpenMP support to Sulong that executes LLVM Intermediate Representation (LLVM IR) for C/C++ programs on a JVM.

We outline the challenges faced in supporting OpenMP execution semantics, and the current limitations of Sulong-OpenMP. The geometric mean overhead of 1 thread Sulong- OpenMP compared to sequential Sulong execution was 2.6% for the NAS Parallel Benchmark suite, at peak runtime pe formance. Although this paper focuses on the correctness of our implementation concerning the OpenMP memory model, we also highlight the diminishing performance gap between the native execution with clang -O2 and our Sulong-OpenMP as only 1.2x in the best case using 4 OpenMP threads.

Bibliographical metadata

Original languageEnglish
Title of host publicationProceedings of the 16th ACM SIGPLAN International Conference on Managed Programming Languages and Runtimes (MPLR '19)
PublisherAssociation for Computing Machinery
DOIs
Publication statusPublished - 21 Oct 2019