An approach for non-intrusively adding malleable fork/join parallelism into ordinary JavaBean compliant applications

Motivated by the advent of powerful hardware such as SMP machines and execution environments such as Grids, research in parallel programming has gained much attention within the distributed computing community. There is a substantial body of efforts in the form of parallel libraries and frameworks that supply developers with programming tools to exploit parallelism in their applications. Still, many of these efforts prioritize performance over other important characteristics such as code invasiveness, ease of use and independence of the underlying executing hardware/environment. In this paper, we present EasyFJP, a new approach for semi-automatically injecting parallelism into sequential Java applications that offers a convenient balance to these four aspects. EasyFJP is based upon the popular fork/join parallel pattern, and combines implicit, application-level parallelism with explicit, non-invasive application tuning. Experiments performed with several classic CPU-intensive benchmarks and a real-world application confirm that EasyFJP effectively addresses these problems while delivers very competitive performance.

[1]  Peter Kilpatrick,et al.  Behavioural Skeletons in GCM: Autonomic Management of Grid Components , 2008, 16th Euromicro Conference on Parallel, Distributed and Network-Based Processing (PDP 2008).

[2]  Rajkumar Buyya,et al.  Parallel Programming Models and Paradigms , 1998 .

[3]  Marcelo R. Campo,et al.  A survey on approaches to gridification , 2008, Softw. Pract. Exp..

[4]  Rohit Chandra,et al.  Parallel programming in openMP , 2000 .

[5]  Ronald A. Olsson,et al.  Generic operations and capabilities in the JR concurrent programming language , 2009, Comput. Lang. Syst. Struct..

[6]  Tomàs Margalef,et al.  Design and implementation of a dynamic tuning environment , 2007, J. Parallel Distributed Comput..

[7]  Frédéric Desprez,et al.  Algorithms And Tools for Parallel Computing on Heterogeneous Clusters , 2006 .

[8]  Geoffrey C. Fox,et al.  MPJ: MPI-like message passing for Java , 2000, Concurr. Pract. Exp..

[9]  Marco Danelutto,et al.  Skeleton-based parallel programming: Functional and parallel semantics in a single shot , 2007, Comput. Lang. Syst. Struct..

[10]  Vivek Sarkar,et al.  X10: an object-oriented approach to non-uniform cluster computing , 2005, OOPSLA '05.

[11]  Chao-Tung Yang,et al.  G-BLAST: a grid-based solution for mpiBLAST on computational grids , 2007, TENCON 2007 - 2007 IEEE Region 10 Conference.

[12]  João Luís Sobral,et al.  Enabling JaSkel skeletons for clusters and computational Grids , 2007, 2007 IEEE International Conference on Cluster Computing.

[13]  Stéphane Ducasse,et al.  Runtime bytecode transformation for Smalltalk , 2006, Comput. Lang. Syst. Struct..

[14]  Chuck Pheatt,et al.  Intel® threading building blocks , 2008 .

[15]  Wu-chun Feng,et al.  A Pluggable Framework for Parallel Pairwise Sequence Search , 2007, 2007 29th Annual International Conference of the IEEE Engineering in Medicine and Biology Society.

[16]  Charles E. McDowell,et al.  Debugging concurrent programs , 1989, ACM Comput. Surv..

[17]  Jason Maassen,et al.  Satin++: Divide-and-Share on the Grid , 2006, 2006 Second IEEE International Conference on e-Science and Grid Computing (e-Science'06).

[18]  Ian Foster,et al.  The Grid 2 - Blueprint for a New Computing Infrastructure, Second Edition , 1998, The Grid 2, 2nd Edition.

[19]  Brad Fitzpatrick,et al.  Distributed caching with memcached , 2004 .

[20]  Denis Caromel,et al.  Programming, Composing, Deploying for the Grid , 2006, Grid Computing: Software Environments and Tools.

[21]  Rajkumar Buyya,et al.  High Performance Cluster Computing: Programming and Applications , 1999 .

[22]  Edward A. Lee The problem with threads , 2006, Computer.

[23]  Gregor Kiczales,et al.  Aspect-oriented programming , 1996, CSUR.

[24]  Marcelo R. Campo,et al.  Extending movilog for supporting Web services , 2007, Comput. Lang. Syst. Struct..

[25]  Hong Zhu,et al.  Java Annotated Concurrency Based on the Concurrent Package , 2006, 2006 Seventh International Conference on Parallel and Distributed Computing, Applications and Technologies (PDCAT'06).

[26]  Mikel Luján,et al.  Introducing Aspects to the Implementation of a Java Fork/Join Framework , 2008, ICA3PP.

[27]  Jonathan Schaeffer,et al.  From patterns to frameworks to parallel programs , 2002, Parallel Comput..

[28]  Ratan K. Guha,et al.  VCluster: a thread‐based Java middleware for SMP and heterogeneous clusters with thread migration support , 2008, Softw. Pract. Exp..

[29]  Jeffrey G. Gray,et al.  GAUGE: Grid Automation and Generative Environment , 2006, Concurr. Comput. Pract. Exp..

[30]  Clemens A. Szyperski,et al.  Component technology - what, where, and how? , 2003, 25th International Conference on Software Engineering, 2003. Proceedings..

[31]  José C. Cunha,et al.  Grid Computing: Software Environments and Tools , 2005 .

[32]  Aart J. C. Bik,et al.  javar: A Prototype Java Restructuring Compiler , 1997, Concurr. Pract. Exp..

[33]  Doug Lea,et al.  The java.util.concurrent synchronizer framework , 2005, Sci. Comput. Program..

[34]  Enrique Alba,et al.  Optimization Techniques for Solving Complex Problems , 2009 .

[35]  Phillip Colella,et al.  Parallel Languages and Compilers: Perspective From the Titanium Experience , 2007, Int. J. High Perform. Comput. Appl..

[36]  Klaus-Peter Löhr,et al.  JAC: declarative Java concurrency , 2006, Concurr. Comput. Pract. Exp..

[37]  Bradley C. Kuszmaul,et al.  Cilk: an efficient multithreaded runtime system , 1995, PPOPP '95.

[38]  O. Gotoh An improved algorithm for matching biological sequences. , 1982, Journal of molecular biology.

[39]  Jason Maassen,et al.  Fault-Tolerant Scheduling of Fine-Grained Tasks in Grid Environments , 2006, Int. J. High Perform. Comput. Appl..

[40]  Wolfgang Blochinger,et al.  Aspect‐oriented component assembly—a case study in parallel software design , 2009, Softw. Pract. Exp..

[41]  Acm Sigsoft,et al.  International Conference on Aspect-Oriented Software Development : AOSD ... , 2002 .

[42]  Tim Brecht,et al.  Babylon: middleware for distributed, parallel, and mobile Java applications , 2008, Concurr. Comput. Pract. Exp..

[43]  Tarek A. El-Ghazawi,et al.  UPC: unified parallel C , 2006, SC.

[44]  Bradford L. Chamberlain,et al.  Parallel Programmability and the Chapel Language , 2007, Int. J. High Perform. Comput. Appl..

[45]  Christoph W. Kessler,et al.  Crosscutting Concerns in Parallelization by Invasive Software Composition and Aspect Weaving , 2006, Proceedings of the 39th Annual Hawaii International Conference on System Sciences (HICSS'06).

[46]  Mark Kambites,et al.  JOMP—an OpenMP-like interface for Java , 2000, JAVA '00.

[47]  Jonathan Schaeffer,et al.  Deferring design pattern decisions and automating structural pattern changes using a design-pattern-based programming system , 2009, TOPL.

[48]  Florian Schintke,et al.  On Adaptability in Grid Systems , 2004, Future Generation Grids.

[49]  Boleslaw K. Szymanski,et al.  The Internet Operating System: Middleware for Adaptive Distributed Computing , 2006, Int. J. High Perform. Comput. Appl..

[50]  Martin Bichler,et al.  Service-oriented computing , 2006, Computer.

[51]  W. Walker,et al.  Mpi: a Standard Message Passing Interface 1 Mpi: a Standard Message Passing Interface , 1996 .

[52]  Jameela Al-Jaroodi,et al.  An Overview of Parallel and Distributed Java for Heterogeneous Systems: Approaches and Open Issues , 2002, Scalable Comput. Pract. Exp..

[53]  Iyad Alshabani,et al.  Service oriented adaptive Java applications , 2008, MW4SOC '08.

[54]  Rod Johnson,et al.  J2EE Development Frameworks , 2005, Computer.

[55]  Thomas Fahringer,et al.  JavaSymphony, a programming model for the Grid , 2005, Future Gener. Comput. Syst..

[56]  Matteo Frigo,et al.  The implementation of the Cilk-5 multithreaded language , 1998, PLDI.

[57]  Marcelo R. Campo,et al.  GMAC: An overlay multicast network for mobile agent platforms , 2008, J. Parallel Distributed Comput..

[58]  Jim Dowling,et al.  Self-managed decentralised systems using K-components and collaborative reinforcement learning , 2004, WOSS '04.

[59]  James Reinders,et al.  Intel® threading building blocks , 2008 .

[60]  Vincent W. Freeh,et al.  A Comparison of Implicit and Explicit Parallel Programming , 1996, J. Parallel Distributed Comput..

[61]  Baden Hughes Building computational grids with apple's Xgrid middleware , 2006, ACSW.

[62]  João Luís Sobral,et al.  Reusable aspect-oriented implementations of concurrency patterns and mechanisms , 2006, AOSD.

[63]  Philip J. Hatcher,et al.  Cluster computing with Java , 2005, Computing in Science & Engineering.

[64]  I. Foster,et al.  The grid: computing without bounds. , 2003, Scientific American.

[65]  Jack Dongarra,et al.  PVM: Parallel virtual machine: a users' guide and tutorial for networked parallel computing , 1995 .

[66]  Frank Piessens,et al.  A programming model for concurrent object-oriented programs , 2008, TOPL.

[67]  Guangwen Yang,et al.  Dynamic Load-Balancing and High Performance Communication in Jcluster , 2007, 2007 IEEE International Parallel and Distributed Processing Symposium.

[68]  Cesare Stefanelli,et al.  Policy-based dynamic reconfiguration of mobile-code applications , 2004, Computer.

[69]  Patrizio Dazzi,et al.  Scalable Computing: Practice and Experience WSSP, Warsaw, Poland, 2007. To appear. MUSKEL: AN EXPANDABLE SKELETON ENVIRONMENT∗ , 2007 .

[70]  Wei-Ming Lin,et al.  Performance modeling and analysis of correlated parallel computations , 2008, Parallel Comput..

[71]  Marco Danelutto,et al.  Algorithmic skeletons meeting grids , 2006, Parallel Comput..

[72]  Chao-Tung Yang,et al.  G-BLAST: a Grid-based solution for mpiBLAST on computational Grids , 2009 .

[73]  Wolfgang Blochinger,et al.  Aspect-Oriented Parallel Discrete Optimization on the Cohesion Desktop Grid Platform , 2006, Sixth IEEE International Symposium on Cluster Computing and the Grid (CCGRID'06).

[74]  Jean-Louis Roch,et al.  Athapascan : an API for Asynchronous Parallel Programming User's Guide , 2003 .

[75]  László Gulyás,et al.  Complex System Simulations with QosCosGrid , 2009, ICCS.

[76]  Al Geist,et al.  PVM (Parallel Virtual Machine) , 2011, Encyclopedia of Parallel Computing.

[77]  C. H. Flood,et al.  The Fortress Language Specification , 2007 .

[78]  Marcelo R. Campo,et al.  Grid-Enabling Applications with JGRIM , 2009, Int. J. Grid High Perform. Comput..

[79]  Ralf Lämmel,et al.  Google's MapReduce programming model - Revisited , 2007, Sci. Comput. Program..

[80]  Charles E. Leiserson,et al.  Programming with exceptions in JCilk , 2006, Sci. Comput. Program..

[81]  Muga Nishizawa,et al.  An Easy-to-Use Toolkit for Efficient Java Bytecode Translators , 2003, GPCE.

[82]  Verdi March,et al.  Survey on Parallel Programming Model , 2008, NPC.