Abstract
This paper introduces the support for developing efficient parallel programs in plain Java in the Gaspar framework. The framework supports a complete set of data locality optimisations that are introduced with Java annotations, keeping the original Java code platform independent and postponing performance tuning tasks. Performance results show that data layout improvements can provide a 2.5-fold speedup, and, when combined with the exploitation of parallelism, can deliver a 50-fold speedup when compared with an unoptimised sequential base Java application running on a 24-core machine.
Similar content being viewed by others
References
Bondhugula, U., Hartono, A., Ramanujam, J., Sadayappan, P.: A practical and fully automatic polyhedral program optimization system. In: ACM SIGPLAN PLDI, vol. 10 (2008)
Booch, G., Maksimchuk, R., Engle, M., Young, B., Conallen, J., Houston, K.: Object-Oriented Analysis and Design with Applications, 3rd edn. Addison-Wesley Professional, Boston (2007)
Bull, M., Smith, L., Westhead, M., Henty, D., Davey, R.: Benchmarking Java Grande applications. In: Proceedings of the Second International Conference on The Practical Applications of Java, Manchester, UK, pp. 63–73 (2000)
Costa, D., Andrzejak, A., Seboek, J., Lo, D.: Empirical study of usage and performance of java collections. In: Proceedings of the 8th ACM/SPEC on International Conference on Performance Engineering, pp. 389–400. ACM (2017)
Evangelista, P., Maia, P., Rocha, M.: Implementing metaheuristic optimization algorithms with jecoli. In: 2009 Ninth International Conference on Intelligent Systems Design and Applications, pp. 505–510 (2009). https://doi.org/10.1109/ISDA.2009.161
Faria, N., Silva, R., Sobral, J.L.: Impact of data structure layout on performance. In: 2013 21st Euromicro International Conference on Parallel, Distributed, and Network-Based Processing, pp. 116–120. IEEE (2013)
Grosser, T., Zheng, H., Aloor, R., Simbürger, A., Größlinger, A., Pouchet, L.N.: Polly-polyhedral optimization in llvm. In: Proceedings of the First International Workshop on Polyhedral Compilation Techniques (IMPACT), vol. 2011, p. 1 (2011)
Hasan, S., King, Z., Hafiz, M., Sayagh, M., Adams, B., Hindle, A.: Energy profiles of Java collections classes. In: Proceedings of the 38th International Conference on Software Engineering, pp. 225–236. ACM (2016)
Hirzel, M.: Data layouts for object-oriented programs. In: Proceedings of the 2007 ACM SIGMETRICS International Conference on Measurement and Modeling of Computer Systems, SIGMETRICS ’07, pp. 265–276. ACM, New York, NY, USA (2007). https://doi.org/10.1145/1254882.1254915
Jeffers, J., Reinders, J., Sodani, A.: Intel Xeon Phi Processor High Performance Programming: Knights Landing Edition. Morgan Kaufmann, Burlington (2016)
Lashgar, A., Baniasadi, A.: Openacc cache directive: opportunities and optimizations. In: 2016 Third Workshop on Accelerator Programming Using Directives (WACCPD), pp. 46–56. IEEE (2016)
Majeti, D., Barik, R., Zhao, J., Grossman, M., Sarkar, V.: Compiler-driven data layout transformation for heterogeneous platforms. In: European Conference on Parallel Processing, pp. 188–197. Springer (2013)
Medeiros, B., Silva, R., Sobral, J.: Gaspar: a compositional aspect-oriented approach for cluster applications. Concurr. Comput. Pract. Exp. (2015). https://doi.org/10.1002/cpe.3666
Sharma, K., Karlin, I., Keasler, J., McGraw, J.R., Sarkar, V.: User-specified and automatic data layout selection for portable performance. Rice University, Houston, Texas, USA, technical report, TR13-03 (2013)
Silva, R., Sobral, J.L.: Gaspar data-centric framework. In: International Conference on Vector and Parallel Processing, pp. 234–247. Springer (2016)
Silva, R., Sobral, J.L.: High performance computing with java streams. In: Euro-Par 2021 International Workshops, Lisbon, Portugal, August 30–31, 2021, Revised Selected Papers, pp. 17–28. Springer (2021)
Stratton, J.A., Rodrigues, C., Sung, I.J., Chang, L.W., Anssari, N., Liu, G., Wen-mei, W.H., Obeid, N.: Algorithm and data optimization techniques for scaling to massively threaded systems. Computer 45(8), 26–32 (2012)
Unat, D., Cai, X., Baden, S.B.: Mint: realizing CUDA performance in 3D stencil methods with annotated C. In: Proceedings of the International Conference on Supercomputing, pp. 214–224. ACM (2011)
Wende, F.: C++ data layout abstractions through proxy types. In: 2019 IEEE International Parallel and Distributed Processing Symposium Workshops (IPDPSW), pp. 758–767. IEEE (2019)
Wimmer, C., Mössenböck, H.: Automatic array inlining in Java virtual machines. In: Proceedings of the 6th Annual IEEE/ACM International Symposium on Code Generation and Optimization, CGO ’08, pp. 14–23. ACM, New York, NY, USA (2008). https://doi.org/10.1145/1356058.1356061
Acknowledgements
This work has been supported by FCT—Fundação para a Ciência e Tecnologia within the R &D Units Project Scope: UIDB/00319/2020. The evaluation used the computing infra-structure of the project Search-ON2: Revitalization of HPC infrastructure of UMinho, (NORTE-07-0162-FEDER-000086), co-funded by the North Portugal Regional Operational Programme (ON.2-O Novo Norte), under the National Strategic Reference Framework (NSRF), through the European Regional Development Fund (ERDF).
Author information
Authors and Affiliations
Contributions
JLS wrote the main manuscript based on RSS PhD thesis. All authors reviewed the manuscript.
Corresponding author
Ethics declarations
Conflict of interest
The authors declare no competing interests.
Additional information
Publisher's Note
Springer Nature remains neutral with regard to jurisdictional claims in published maps and institutional affiliations.
Rights and permissions
Springer Nature or its licensor (e.g. a society or other partner) holds exclusive rights to this article under a publishing agreement with the author(s) or other rightsholder(s); author self-archiving of the accepted manuscript version of this article is solely governed by the terms of such publishing agreement and applicable law.
About this article
Cite this article
Silva, R.S., Sobral, J.L. Efficient High-Level Programming in Plain Java. Int J Parallel Prog 51, 22–42 (2023). https://doi.org/10.1007/s10766-022-00747-0
Received:
Accepted:
Published:
Issue Date:
DOI: https://doi.org/10.1007/s10766-022-00747-0