JConqurr - A Multi-Core Programming Toolkit for Java
Authors: G.A.C.P. Ganegoda, D.M.A. Samaranayake, L.S. Bandara, K.A.D.N.K. Wimalawarne
Abstract:
With the popularity of the multi-core and many-core architectures there is a great requirement for software frameworks which can support parallel programming methodologies. In this paper we introduce an Eclipse toolkit, JConqurr which is easy to use and provides robust support for flexible parallel progrmaming. JConqurr is a multi-core and many-core programming toolkit for Java which is capable of providing support for common parallel programming patterns which include task, data, divide and conquer and pipeline parallelism. The toolkit uses an annotation and a directive mechanism to convert the sequential code into parallel code. In addition to that we have proposed a novel mechanism to achieve the parallelism using graphical processing units (GPU). Experiments with common parallelizable algorithms have shown that our toolkit can be easily and efficiently used to convert sequential code to parallel code and significant performance gains can be achieved.
Keywords: Multi-core, parallel programming patterns, GPU, Java, Eclipse plugin, toolkit,
Digital Object Identifier (DOI): doi.org/10.5281/zenodo.1083041
Procedia APA BibTeX Chicago EndNote Harvard JSON MLA RIS XML ISO 690 PDF Downloads 2110References:
[1] C. T. yang, S.S. Tseng, M. C. Hsiao, S. H. Kao, "Portable Parallelizing Compiler with Loop Partitioning", Proc. Natl. Sci. Counc ROC(A), Vol. 23, No. 6, 1999. pp.751-756
[2] B. Chapman, L. Huang, "Enhancing OpenMP and Its Implementation for Programming Multicore Systems." Invited Paper, Proc. PARCO, 2007: pp. 3-18.
[3] R. D. Blumofe, C. F. Joerg, B. C. Kuszmaul, C. E. Leiserson, K. H. Randall, and Y. Zhou, "CILK: An efficient multithreaded runtime system", in Proc. 5th ACM SIGPLAN Symp. on Principles and Practices of Parallel Programming, pages 207216, Jul 1995.
[4] J. Reinders, Intel Threading Building Blocks: Outfitting C++ for Multicore Processor Parallelism, 1st ed, O-Reilly, Jul 2007.
[5] J. S. Danaher, "The JCilk-1 Runtime System", Masters thesis, Massachusetts Institute of Technology Department of Electrical Engineer-ing and Computer Science, Jun 2005.
[6] M. Bull, S. Telford. "Programming Models for Parallel Java Applications", Edinburgh Parallel Computing Centre, Edinburgh, EH9 3JZ, 2000.
[7] F. Otto, V. Pankratius, W. F.Tichy. "High-level Multicore Programming with XJava", 31st ACM/IEEE International Conference on Software Engineering (ICSE 2009), New Ideas and Emerging Results, May 2009.
[8] T. G. Mattson, B. A. Sanders, B. L. Massingill, Patterns for Parallel Programming, Addison-Wesley Professional, Sept 2004.
[9] M.Danelutto, M.Pasi, M.Vanneschi, P.Dazzi, D.Laforenza and L.Presti, "PAL: Exploiting Java annotations for parallelism", in European Research on Grid Systems, pp.83-96. Springer US 2007.
[10] "Eclipse.org home". (Online). Available: http://www.eclipse.org/. (Accessed: 30/04/2010).
[11] Y. Yan, M. Grossman, V. Sarkar, "JCUDA: A Programmer-Friendly Interface for Accelerating Java Programs with CUDA", Europar, 2009.
[12] "Notes on the Eclipse Plug-in Architecture". Azad Bolour and Bolour Computing. (Online). Available: http://www.eclipse.org/articles/Article- Plugin- architecture/plugin architecture.html. (Accessed: 30/04/2010).
[13] "Eclipse Java development tools (JDT)" (Online) Available: http://www.eclipse.org/jdt/ (Accessed: 30/04/2010).
[14] L. Nemtiu, J. S. Foster, M. Hicks, "Understanding Source Code Evolution Using Abstract Syntax Tree Matching", in Proc. International Workshop on Mining Software Repositories (MSR), pages 1-5, Saint Louis, Missouri, USA, May 2005.
[15] "JDT Core Component" (Online) Available: http://www.eclipse.org /jdt/core/index.php (Accessed: 30/04/2010).
[16] "JDK 5.0 Developers Guide: Annotations Sun Microsystems". (Online).Available: http://java.sun.com/j2se/1.5.0/docs/ guide/language/annotations.html. (Accessed: 30/04/2010).
[17] M, Herlihy, N, Shavit. The Art of Multiprocessor Programming. Morgan Kaufmann, 2008.
[18] K. F. Faxen, K, Popov, S, Janson, L, Albertsson, "Embla data dependence profiling for parallel programming," in Complex, Intelligent and Software Intensive Systems, 2008.
[19] C. Ball, M. Bull, "Barrier Synchronization in Java", Tech.Rep High-End Computing programme (UKIEC), 2003.
[20] R. Rugina, M. Linard, "Automatic Parallelization of Divide and Conquer Algorithms", in Proc. 7th ACM SIGPLAN symposium on Principles and practice of parallel programming, pp.72-83, 1999.
[21] D. Lea, "Overview of package util.concurrent Release 1.3.4." (Online). Available: http://g.oswego.edu/dl/classes/EDU/oswego/cs/dl/ util/concurrent/intro.html. Accessed: 20/10/2009.
[22] D. Lea, "A Java Fork/Join Framework," in Proc. of the ACM 2000 conference on Java Grande, pp.36-43, 2000.
[23] M. I. Gordon, W. Thies, S. Amarasinghe, "Exploiting Course-Grained Task, Data and Pipeline Parallelism in Stream Programs", in Proc. of the 2006 ASPLOS Conference, pp.151-162, 2006.
[24] B. Thies, M. Karczmarek, S. Amarasinghe, "StreaMIT: A language for Streaming Applications", International Conference on Compiler Construction, Grenoble, France. Apr, 2002.
[25] "NVIDIA CUDA Programming Guide". (Online). Available: http://developer.download.nvidia.com/compute/cuda/3 0/toolkit/docs/ NVIDIA CUDA ProgrammingGuide.pdf. Accessed: 30/04/2010.