OpenMP for Java
OpenMP pro Javu
bachelor thesis (DEFENDED)
View/ Open
Permanent link
http://hdl.handle.net/20.500.11956/61840Identifiers
Study Information System: 153227
Collections
- Kvalifikační práce [11242]
Author
Advisor
Referee
Kruliš, Martin
Faculty / Institute
Faculty of Mathematics and Physics
Discipline
General Computer Science
Department
Department of Distributed and Dependable Systems
Date of defense
15. 6. 2015
Publisher
Univerzita Karlova, Matematicko-fyzikální fakultaLanguage
English
Grade
Excellent
Keywords (Czech)
OpenMP, Java, ScalaKeywords (English)
OpenMP, Java, ScalaVzhledem k zpětné kompatibilitě je vícevláknové programování v Javě často implementováno neefektivně a odrazuje nezkušené programátory od vývoje paralelních aplikací. Tato práce představuje omp4j - preprocesor pro Javu 6, 7 a 8, který je nezávislý na běhových knihovnách a podporuje kompaktní podmnožinu nejdůležitějších OpenMP direktiv. Vyvinutý preprocesor podporuje všechny běžně užívané JVM a jím přeložené programy jsou navíc dobře škálovatelné. Pro zajištění paralelního běhu zdrojových kódů je použita kombinace syntaktické a bytecode analýzy. Vyvinutý program lze používat dvěma způsoby - přímo z příkazové řádky nebo jako knihovnu pro Java a Scala projekty. Druhý zmíněný způsob použití je demonstrován ve formě online dema v rámci stránky projektu - www.omp4j.org. Práce obsahuje vypracované vyhodnocení výkonnosti, ve kterém jsou diskutovány jednotlivé aspekty preprocesoru a srovnání s podobnými projekty v C++ a Javě. Ve srovnáním s těmito projekty byla na některých měřeních u omp4j prokázána signifikantně lepší škálovatelnost na hladině významnosti alfa = 0.01. Powered by TCPDF (www.tcpdf.org)
Due to its backward compatibility, multi-threaded programming in Java is often performed ineffectively and repels inexperienced programmers from development of parallel applications. This thesis introduces omp4j - an OpenMP-like preprocessor that supports Java language standards 6, 7 and 8 without any runtime dependencies. Furthermore, the thesis develops a scalable and portable solution for all commonly used JDKs. The combination of the syntax and bytecode analyses is employed by the preprocessor in order to parallelize the source code. The developed project may be used either as a CLI utility or as a third-party library for Java and Scala projects. The latter possibility is demonstrated in an online demo which was developed together with the project website - www.omp4j.org. Additionally, the performance evaluation, which discusses various aspects of the implemented preprocessor, is presented and the comparisons to the related C++ and Java solutions are elaborated. In comparison to the similar projects, significantly better scalability of omp4j is proven at significance level alpha = 0.01 for some of the benchmarks. Powered by TCPDF (www.tcpdf.org)