JConqurr - A Multi-Core Programming Toolkit for Java

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.





References:
[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.