ABSTRACT
In this paper, we present the Habanero-Java (HJ) language developed at Rice University as an extension to the original Java-based definition of the X10 language. HJ includes a powerful set of task-parallel programming constructs that can be added as simple extensions to standard Java programs to take advantage of today's multi-core and heterogeneous architectures. The language puts a particular emphasis on the usability and safety of parallel constructs. For example, no HJ program using async, finish, isolated, and phaser constructs can create a logical deadlock cycle. In addition, the future and data-driven task variants of the async construct facilitate a functional approach to parallel programming. Finally, any HJ program written with async, finish, and phaser constructs that is data-race free is guaranteed to also be deterministic.
HJ also features two key enhancements that address well known limitations in the use of Java in scientific computing --- the inclusion of complex numbers as a primitive data type, and the inclusion of array-views that support multidimensional views of one-dimensional arrays. The HJ compiler generates standard Java class-files that can run on any JVM for Java 5 or higher. The HJ runtime is responsible for orchestrating the creation, execution, and termination of HJ tasks, and features both work-sharing and work-stealing schedulers. HJ is used at Rice University as an introductory parallel programming language for second-year undergraduate students. A wide variety of benchmarks have been ported to HJ, including a full application that was originally written in Fortran 90. HJ has a rich development and runtime environment that includes integration with DrJava, the addition of a data race detection tool, and service as a target platform for the Intel Concurrent Collections coordination language
- COMP 322: Fundamentals of Parallel Programming. URL https://wiki.rice.edu/confluence/display/PARPROG/COMP322.Google Scholar
- Shivali Agarwal, Rajkishore Barik, Dan Bonachea, Vivek Sarkar, Rudrapatna K. Shyamasundar, and Katherine Yelick. Deadlock-free scheduling of x10 computations with bounded resources. In SPAA '07: Proceedings of the nineteenth annual ACM symposium on parallelism algorithms and architectures, pages 229--240, New York, NY, USA, 2007. ACM. ISBN 978-1-59593-667-7. Google ScholarDigital Library
- Shivali Agarwal, Rajkishore Barik, Vivek Sarkar, and Rudrapatna K. Shyamasundar. May-happen-in-parallel analysis of x10 programs. In PPoPP '07: Proceedings of the 12th ACM SIGPLAN symposium on Principles and practice of parallel programming, pages 183--193, New York, NY, USA, 2007. ACM. ISBN 978-1-59593-602-8. Google ScholarDigital Library
- Eric Allan, David Chase, Joe Hallett, Victor Luchangco, Jan-Willem Maessen, Sukyoung Ryu, Guy L. Steele Jr., and Sam Tobin-Hochstadt. The Fortress language specification version 1.0. Technical report, Sun Microsystems, April 2005.Google Scholar
- Rajkishore Barik and Vivek Sarkar. Interprocedural load elimination for dynamic optimization of parallel programs. In PACT'09, Proceedings of the 18th International Conference on Parallel Architectures and Compilation Techniques, pages 41--52, Washington, DC, USA, Sep 2009. IEEE Computer Society. ISBN 978-0-7695-3771-9. Google ScholarDigital Library
- Robert D. Blumofe and Charles E. Leiserson. Scheduling multithreaded computations by work stealing. In Proceedings of the 35th Annual Symposium on Foundations of Computer Science (FOCS), pages 356--368, 1994. Google ScholarDigital Library
- Zoran Budimlić, Michael Burke, Vincent Cavé, Kathleen Knobe, Geoff P. Lowney, Ryan Newton, Jens Palsberg, David Peixotto, Vivek Sarkar, Frank Schlimbach, and Saǧnak Taşirlar. The CnC Programming Model. Journal of Scientific Programming, 2010.Google Scholar
- Vincent Cavé, Zoran Budimlić, and Vivek Sarkar. Comparing the usability of library vs. language approaches to task parallelism. In Evaluation and Usability of Programming Languages and Tools, PLATEAU '10, pages 9:1--9:6, 2010. ISBN 978-1-4503-0547-1. Google ScholarDigital Library
- B. L. Chamberlain, D. Callahan, and H. P. Zima. Parallel programmability and the chapel language. Int. J. High Perform. Comput. Appl., 21(3):291--312, 2007. ISSN 1094-3420. Google ScholarDigital Library
- P. Charles et al. X10: an object-oriented approach to non-uniform cluster computing. In OOPSLA'05, pages 519--538, New York, NY, USA, 2005. ISBN 1-59593-031-0. Google ScholarDigital Library
- Joe Duffy. Concurrent Programming on Windows. Addison-Wesley, 2008. ISBN 9780321434821. Google ScholarDigital Library
- Alejandro Duran et al. Barcelona OpenMP Tasks Suite: A Set of Benchmarks Targeting the Exploitation of Task Parallelism in OpenMP. In ICPP'09, pages 124--131, 2009. Google ScholarDigital Library
- Mingdong Feng and Charles E. Leiserson. Efficient detection of determinacy races in cilk programs. Theory Comput. Syst., 32(3):301--326, 1999.Google ScholarCross Ref
- Matteo Frigo, Charles E. Leiserson, and Keith H. Randall. The implementation of the Cilk-5 multithreaded language. In PLDI '98: Proceedings of the ACM SIGPLAN 1998 conference on Programming language design and implementation, pages 212--223, New York, NY, USA, 1998. ACM. ISBN 0-89791-987-4. Google ScholarDigital Library
- Max Grossman, Alina Simion Sbrlea, Zoran Budimli, and Vivek Sarkar. CnC-CUDA: Declarative Programming for GPUs. In 2010 Workshop on Languages and Compilers for Parallel Computing (LCPC), volume 6548 of Lecture Notes in Computer Science, pages 230--245. Springer Berlin/Heidelberg, 2011. Google ScholarDigital Library
- Yi Guo. A Scalable Locality-aware Adaptive Work-stealing Scheduler for Multi-core Task Parallelism. PhD thesis, Rice University, Aug 2010. Google ScholarDigital Library
- Yi Guo, Jisheng Zhao, Vincent Cavé, and Vivek Sarkar. SLAW: a Scalable Locality-aware Adaptive Work-stealing Scheduler. In IPDPS '10: Proceedings of the 2010 IEEE International Symposium on Parallel&Distributed Processing, pages 1--12, Washington, DC, USA, Apr 2010. IEEE Computer Society.Google ScholarCross Ref
- R. Gupta. The fuzzy barrier: a mechanism for high speed synchronization of processors. In ASPLOS-III, pages 54--63, New York, USA, 1989. ACM. ISBN 0-89791-300-0. Google ScholarDigital Library
- Habanero. Habanero Multicore Software Research Project web page. http://habanero.rice.edu, January 2008.Google Scholar
- Java Grande Forum. The Java Grande Forum Benchmark Suite. http://www.epcc.ed.ac.uk/javagrande/javag.html.Google Scholar
- Mackale Joyner, Zoran Budimlic, and Vivek Sarkar. Subregion Analysis and Bounds Check Elimination for High Level Arrays. In 20th International Conference on Compiler Construction. Springer-Verlag, 2011. Google ScholarDigital Library
- K Key. One-dimensional inversion of multi-component, multi-frequency marine CSEM data: Methodology and synthetic studies for resolving thin resistive layers: Geophysics. in review, 2008.Google Scholar
- James R. Larus and Ravi Rajwar. Transactional Memory. Morgan & Claypool, 2006.Google Scholar
- Roberto Lublinerman, Jisheng Zhao, Zoran Budimlic, Swarat Chaudhuri, and Vivek Sarkar. Delegated Isolation. In Proceedings of OOPSLA 2011, 2011. Google ScholarDigital Library
- Alex Miller. Set your Java 7 Phasers to stun. http://tech.puredanger.com/2008/07/08/java7-phasers/, 2008.Google Scholar
- Nathaniel Nystrom, Michael R. Clarkson, and Andrew C. Myers. Polyglot: An Extensible Compiler Framework for Java. In 12th International Conference on Compiler Construction, pages 138--152. Springer-Verlag, 2003. Google ScholarDigital Library
- OpenMP. OpenMP Application Program Interface, Version 3.0, May 2008. http://www.openmp.org/mp-documents/spec30.pdf.Google Scholar
- Jarred Payne, Vincent Cavé, Raghavan Raman, Mathias Ricken, Robert Cartwright, and Vivek Sarkar. Tool Demonstration: DrHJ --- a lightweight pedagogic IDE for Habanero Java. In PPPJ'11: Proceedings of 9th International Conference on the Principles and Practice of Programming in Java, 2011. Google ScholarDigital Library
- Tim Peierls, Joshua Bloch, Joseph Bowbeer, Doug Lea, and David Holmes. Java Concurrency in Practice. Addison-Wesley Professional, 2006. ISBN 0321349601. Google ScholarDigital Library
- Raghavan Raman, Jisheng Zhao, Vivek Sarkar, Martin Vechev, and Eran Yahav. Efficient Data Race Detection for Async-Finish Parallelism. In RV'10, Proceedings of the 1th International Conference on Runtime Verification. Springer, Nov 2010. Google ScholarDigital Library
- James Reinders. Intel threading building blocks. O'Reilly & Associates, Inc., Sebastopol, CA, USA, 2007. ISBN 9780596514808. Google ScholarDigital Library
- J. Shirako, D. M. Peixotto, V. Sarkar, and W. N. Scherer. Phaser accumulators: A new reduction construct for dynamic parallelism. In Proceedings of the 2009 IEEE International Symposium on Parallel&Distributed Processing, pages 1--12, Washington, DC, USA, 2009. IEEE Computer Society. ISBN 978-1-4244-3751-1. Google ScholarDigital Library
- J. Shirako et al. Phasers: a unified deadlock-free construct for collective and point-to-point synchronization. In ICS '08, pages 277--288, New York, NY, USA, 2008. ACM. ISBN 978-1-60558-158-3. Google ScholarDigital Library
- Jun Shirako and Vivek Sarkar. Hierarchical Phasers for Scalable Synchronization and Reduction. In IPDPS '10: Proceedings of the 2010 IEEE International Symposium on Parallel&Distributed Processing, pages 1--12, Washington, DC, USA, 2010. IEEE Computer Society.Google Scholar
- Jun Shirako, Jisheng Zhao, V. Krishna Nandivada, and Vivek Sarkar. Chunking parallel loops in the presence of synchronization. In ICS '09: Proceedings of the 23rd international conference on Supercomputing, pages 181--192, New York, NY, USA, 2009. ACM. ISBN 978-1-60558-498-0. Google ScholarDigital Library
- Sagnak Tasirlar and Vivek Sarkar. Data-driven tasks and their implementation. In Proceedings of International Conference on Parallel Processing (ICPP), 2011. Google ScholarDigital Library
- R. Vallée-Rai et al. Soot - a Java Optimization Framework. In Proceedings of CASCON 1999, pages 125--135, 1999. URL www.sable.mcgill.ca/publications.Google ScholarDigital Library
- Vijay Saraswat and Bard Bloom. Report on the Programming Language X10, Version 2.0.5, July 2010. http://x10.codehaus.org.Google Scholar
- Yonghong Yan, Max Grossman, and Vivek Sarkar. Jcuda: A programmer-friendly interface for accelerating java programs with cuda. In Euro-Par '09: Proceedings of the 15th International Euro-Par Conference on Parallel Processing, pages 887--899, Berlin, Heidelberg, 2009. Springer-Verlag. ISBN 978-3-642-03868-6. Google ScholarDigital Library
- Yonghong Yan, Jisheng Zhao, Yi Guo, and Vivek Sarkar. Hierarchical Place Trees: A Portable Abstraction for Task Parallelism and Data Movement. In Languages and Compilers for Parallel Computing, 22nd International Workshop, LCPC 2009, volume 5898 of Lecture Notes in Computer Science. Springer, 2009. ISBN 978-3-642-13373-2. Google ScholarDigital Library
- K. Yelick et al. Productivity and performance using partitioned global address space languages. In PASCO'07, pages 24--32, New York, NY, USA, 2007. ACM. ISBN 978-1-59593-741-4. Google ScholarDigital Library
- Jisheng Zhao, Jun Shirako, V. Krishna Nandivada, and Vivek Sarkar. Reducing Task Creation and Termination Overhead in Explicitly Parallel Program. In PACT'10, Proceedings of the 19th International Conference on Parallel Architectures and Compilation Techniques. IEEE Computer Society, Sep 2010. Google ScholarDigital Library
Index Terms
- Habanero-Java: the new adventures of old X10
Recommendations
Habanero-Java library: a Java 8 framework for multicore programming
PPPJ '14: Proceedings of the 2014 International Conference on Principles and Practices of Programming on the Java platform: Virtual machines, Languages, and ToolsWith the advent of the multicore era, it is clear that future growth in application performance will primarily come from increased parallelism. We believe parallelism should be introduced early into the Computer Science curriculum to educate students on ...
DrHJ: a lightweight pedagogic IDE for Habanero Java
PPPJ '11: Proceedings of the 9th International Conference on Principles and Practice of Programming in JavaThe Java language and runtime environment has had a profound worldwide impact on computer software since its introduction nearly two decades ago. It has enabled the creation of a rich ecosystem of libraries, frameworks, and tools that promises to ...
The design and implementation of the habanero-java parallel programming language
OOPSLA '11: Proceedings of the ACM international conference companion on Object oriented programming systems languages and applications companionThe Habanero-Java language extends sequential Java with a simple but powerful set of constructs for multicore parallelism. Its implementation includes a compiler that generates standard Java classfiles, a runtime system that builds on the ...
Comments