Towards an Adaptable Middleware for Parallel Computing in Heterogeneous Environments

The adoption of the multi-core processor design has spawned a wide variety of CPU configurations, namely in the number and nature of the hosted cores. The cluster organization of such CPUs is particularly sensitive to this issue, since applications must be aware of such heterogeneity in order to fully exploit the potential of the underlying hardware. The existing frameworks for cluster computing do not fully address this issue, relying on the programmer to handle many of the concerns associated to the aforesaid heterogeneity, burdening him with non-functional details. To this extent, we propose an adaptable middleware for Java High-Performance Computing in heterogeneous clusters. Adaptability is obtained by trusting the runtime system with the management of thread and data placement, and by equipping it with a layer able to adjust its implementation to the particularities of the underlying software and hardware stacks. In this paper we address both the middleware's programming model and runtime system, as well as some initial performance results that attest the validity of the approach.

[1]  Katherine A. Yelick,et al.  Titanium: A High-performance Java Dialect , 1998, Concurr. Pract. Exp..

[2]  Vivek Sarkar,et al.  Habanero-Java: the new adventures of old X10 , 2011, PPPJ.

[3]  Hervé Paulino,et al.  Single Operation Multiple Data - Data Parallelism at Subroutine Level , 2012, 2012 IEEE 14th International Conference on High Performance Computing and Communication & 2012 IEEE 9th International Conference on Embedded Software and Systems.

[4]  William J. Dally,et al.  Sequoia: Programming the Memory Hierarchy , 2006, International Conference on Software Composition.

[5]  Michael Factor,et al.  cJVM: a single system image of a JVM on a cluster , 1999, Proceedings of the 1999 International Conference on Parallel Processing.

[6]  L.A. Smith,et al.  A Parallel Java Grande Benchmark Suite , 2001, ACM/IEEE SC 2001 Conference (SC'01).

[7]  Christoforos E. Kozyrakis,et al.  Evaluating MapReduce for Multi-core and Multiprocessor Systems , 2007, 2007 IEEE 13th International Symposium on High Performance Computer Architecture.

[8]  Alan Kaminsky Parallel Java: A Unified API for Shared Memory and Cluster Parallel Programming in 100% Java , 2007, 2007 IEEE International Parallel and Distributed Processing Symposium.

[9]  Juan Touriño,et al.  Java for high performance computing: assessment of current research and practice , 2009, PPPJ '09.

[10]  Sanjay Ghemawat,et al.  MapReduce: Simplified Data Processing on Large Clusters , 2004, OSDI.

[11]  Georg Hager,et al.  Hybrid MPI/OpenMP Parallel Programming on Clusters of Multi-Core SMP Nodes , 2009, 2009 17th Euromicro International Conference on Parallel, Distributed and Network-based Processing.

[12]  Geoffrey C. Fox,et al.  MPJ: MPI-like message passing for Java , 2000 .

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

[14]  Vijay Saraswat,et al.  GPU programming in a high level language: compiling X10 to CUDA , 2011, X10 '11.

[15]  Philip C. Pratt-Szeliga,et al.  Rootbeer: Seamlessly Using GPUs from Java , 2012, 2012 IEEE 14th International Conference on High Performance Computing and Communication & 2012 IEEE 9th International Conference on Embedded Software and Systems.

[16]  Victor Luchangco,et al.  Fortress (Sun HPCS Language) , 2011, Encyclopedia of Parallel Computing.

[17]  Vivek Sarkar,et al.  Hierarchical Place Trees: A Portable Abstraction for Task Parallelism and Data Movement , 2009, LCPC.

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

[19]  David Padua,et al.  Encyclopedia of Parallel Computing , 2011 .

[20]  Douglas C. Schmidt,et al.  Active object: an object behavioral pattern for concurrent programming , 1996 .

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

[22]  Geoffrey C. Fox,et al.  HP Java: Programming Support for High-Performance Grid-Enabled Applications , 2004, Parallel Algorithms Appl..

[23]  Nobuko Yoshida,et al.  Session-Based Compilation Framework for Multicore Programming , 2009, FMCO.