Abstract
Java is one of the most popular programming languages in today’s software development, but the adoption of Java in some areas like high performance computing, gaming, and media processing is not as universal as in general-purpose computing. A major drawback preventing it from being extensively adopted in those areas is its lower performance than the traditional or domain-specific languages. This paper describes two approaches to improve Java’s usability in those areas by introducing vector processing capability to Java. The first approach is to provide a Java vectorization interface (JVI) that developers can program with, to explicitly expose the programs’ data parallelism. The other approach is to use automatic vectorization to generate vector instructions for Java programs. It does not require programmers to modify the original source code. We evaluate the two vectorization approaches with SPECjvm2008 benchmark. The performances of scimark.fft and scimark.lu are improved up to 55% and 107% respectively when running in single thread. We also investigate some factors that impact the vectorization effects, including the memory bus bandwidth and the superscalar micro-architecture.
Chapter PDF
Similar content being viewed by others
References
The Apache Software Foundation. Apache Harmony, http://harmony.apache.org
Larsen, S., Amarasinghe, S.P.: Exploiting superword level parallelism with multi-media instruction sets. In: PLDI, pp. 145–156 (2000)
El-Mahdy, S.E.S.A., El-Mahdy, A.: Automatic vectorization using dynamic compi-lation and tree pattern matching technique in jikes rvm. In: ICOOOLPS, pp. 63–69 (2009)
Free Software Foundation. Auto-vectorization in gcc, http://gcc.gnu.org/projects/tree-ssa/vectorization.html
Free Software Foundation. Gcc, http://gcc.gnu.org
Naishlos, D.: Autovectorization in gcc. In: GCC Summit, pp. 105–118 (2004)
Nuzman, D., Rosen, I., Zaks, A.: Auto-vectorization of interleaved data for simd. In: Schwartzbach, M.I., Ball, T. (eds.) PLDI, pp. 132–143. ACM, New York (2006)
Nuzman, D., Zaks, A.: Autovectorization in gcc - two years later. In: GCC Summit, pp. 145–158 (2006)
Rosen, I., Nuzman, D., Zaks, A.: Loop-aware slp in gcc. In: GCC Summit, pp. 131–142 (2007)
Novell Corporation. Mono, Simd. Namespace, http://www.mono-project.com/
Intel Corporation. IA-32 Intel Architecture Optimiztion Refernce Manual. Copyright (1999-2003)
Pedro, V., et al.: Automatic loop transformations and parallelization for Java. In: ICS 2000: 14th Int. Conf. on Supercomputing, pp. 1–10 (2000)
Allen, R., Kennedy, K.: Optimizing Compilers for Modern Architectures: A Dependence-based Approach. Morgan Kaufmann, San Francisco (2001)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2010 IFIP International Federation for Information Processing
About this paper
Cite this paper
Nie, J., Cheng, B., Li, S., Wang, L., Li, XF. (2010). Vectorization for Java. In: Ding, C., Shao, Z., Zheng, R. (eds) Network and Parallel Computing. NPC 2010. Lecture Notes in Computer Science, vol 6289. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-15672-4_3
Download citation
DOI: https://doi.org/10.1007/978-3-642-15672-4_3
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-642-15671-7
Online ISBN: 978-3-642-15672-4
eBook Packages: Computer ScienceComputer Science (R0)