Sulong-OpenMP : implementation with Sulong and evaluation
Uloženo v:
| Název: | Sulong-OpenMP : implementation with Sulong and evaluation |
|---|---|
| Autoři: | Gaikwad, Swapnil |
| Informace o vydavateli: | University of Manchester, 2020. |
| Rok vydání: | 2020 |
| Sbírka: | University of Manchester |
| Témata: | Java Virtual Machine, OpenMP |
| Popis: | It is now popular to use the existing managed language runtimes, such as Java Virtual Machine (JVM) or Microsoft Common Language Infrastructure (CLI), to host implementations of new or existing languages. The benefit of this approach is that the software development efforts are reduced as only one managed language runtime needs to be optimised and maintained. This approach avoids the need for a separate compiler/runtime for each language implementation. %because of their competitive runtime performance whilst significantly reducing language implementation effort. The Truffle open-source framework has enabled hosting guest language implementations on a JVM. Examples of such Truffle hosted guest language implementations are: Ruby (TruffleRuby), JavaScript (GraalJS), R (FastR), and C (Sulong). Truffle guest languages directly benefit from i) JVM features, that include just-in-time (JIT) compilers and Garbage Collection (GC) ii) mature development tools and environments that can support multi-language debugging and instrumentation. In this thesis, we present Sulong-OpenMP; the first Truffle hosted implementation that enables execution of the OpenMP parallel programs on a JVM. {The current implementation of Sulong-OpenMP supports a sufficient subset of the OpenMP C API to execute the NAS Parallel Benchmark (NPB) suite}. The Sulong-OpenMP extends the Sulong project, which executes LLVM Intermediate Representation (LLVM IR) for sequential C/C++/Fortran programs on a JVM. The thesis discusses a novel approach to enable the execution of OpenMP programs on a JVM. We also outline the challenges dealt with during the implementation of OpenMP semantics using the Java Memory Model. This work primarily focuses on achieving the correct execution of OpenMP programs in C on the JVM. Further, we highlight the diminishing performance gap between the native execution (with clang -O2) and Sulong-OpenMP, on multi-threaded execution. Parallel execution requires supporting sub-systems, such as thread-private stack and thread pools. Although these sub-systems increase implementation efforts, they also aid the execution performance of the implementation. Additionally, we applied more optimisations to minimise the overhead of Sulong-OpenMP. We demonstrate that the single-thread overhead of Sulong-OpenMP (compared to that of Sulong) is {on a par} with its native equivalent. Performance is a crucial aspect for {both executions} and language implementations. While trying to understand the runtime performance of Sulong, we lacked the necessary support of tools and guidance. Existing Java profiling tools could not map the profiling information to corresponding C programs executed with Sulong. Execution of the benchmarks written in Ruby and R, using their Truffle hosted implementations, also faced similar issues. A JVM hosted execution utilises multiple services offered by the JVM, such as JIT-compilation and GC. These services may influence the execution behaviour unpredictably. Further, it is non-trivial to relate performance to source-code of the hosted {language and determine} the source of overhead. The overhead may arise from the program computation, suboptimal implementation of a language feature, or the JVM services. We describe how to visually analyse the performance of Truffle hosted languages using Flamegraphs, by relating execution time to sampled call-stacks. We map sampled call-stacks onto JVM hosted guest language source-code using i) Linux tool: perf, ii) JVM Tooling Interface (JVMTI) agent: perf-map-agent, iii) enhancements to the Graal JIT-compiler. This work demonstrates the ease and flexibility of using these modified tools during execution, with lower overhead. We also illustrate the applicability of the techniques to understand the performance of Polyglot applications. |
| Druh dokumentu: | Electronic Thesis or Dissertation |
| Jazyk: | English |
| Přístupová URL adresa: | https://ethos.bl.uk/OrderDetails.do?uin=uk.bl.ethos.843459 |
| Přístupové číslo: | edsble.843459 |
| Databáze: | British Library EThOS |
Buďte první, kdo okomentuje tento záznam!
Nájsť tento článok vo Web of Science