Chapel
The Cascade High-Productivity Language
Overview:
Chapel is a new parallel programming language being developed by Cray Inc. as part of the DARPA-led High Productivity Computing Systems program (HPCS). Chapel is designed to improve the productivity of high-end computer users while also serving as a portable parallel programming model that can be used on commodity clusters or desktop multicore systems. Chapel strives to vastly improve the programmability of large-scale parallel computers while matching or beating the performance and portability of current programming models like MPI.
Chapel supports a multithreaded execution model via high-level abstractions for data parallelism, task parallelism, concurrency, and nested parallelism. Chapel's locale type enables users to specify and reason about the placement of data and tasks on a target architecture in order to tune for locality. Chapel supports global-view data aggregates with user-defined implementations, permitting operations on distributed data structures to be expressed in a natural manner. In contrast to many previous higher-level parallel languages, Chapel is designed around a multiresolution philosophy, permitting users to initially write very abstract code and then incrementally add more detail until they are as close to the machine as their needs require. Chapel supports code reuse and rapid prototyping via object-oriented design, type inference, and features for generic programming.
Chapel was designed from first principles rather than by extending an existing language. It is an imperative block-structured language, designed to be easy to learn for users of C, C++, Fortran, Java, Perl, Matlab, and other popular languages. While Chapel builds on concepts and syntax from many previous languages, its parallel features are most directly influenced by ZPL, High-Performance Fortran (HPF), and the Cray MTA's extensions to C and Fortran.
Downloads:
Version 1.0 of our prototype Chapel compiler was released on October 15th, 2009 with the following release notes. It can be downloaded and used under the terms of the BSD license and a user agreement. Please note that this implementation is a work-in-progress, with all that implies. We are interested in receiving constructive feedback on the Chapel language and compiler, with the goal of improving its utility to the parallel programming community. To obtain a copy of the release, please visit our SourceForge project page.
Community:
The Chapel user community and development team communicate through a chapel users mailing list hosted by SourceForge. Interested users are invited to join the mailing list or browse the archives.
Documents, Papers, Articles:
- Chapel Specification (version 0.785)
- This is the current version of the Chapel language specification. (older versions are also available: v0.4, v0.702, v0.750, v0.760, v0.775, v0.780, v0.782)
- Parallel Programmability and the Chapel Language (preprint version). Bradford L. Chamberlain, David Callahan, Hans P. Zima. International Journal of High Performance Computing Applications, August 2007, 21(3): 291-312.
- This paper serves as a good introduction to Chapel's themes and main language concepts.
- Global HPC Challenge Benchmarks in Chapel (version 2.1) [slides]
Chapel Tutorial Using Global HPCC Benchmarks: STREAM Triad, Random Access, and FFT (version 1.6)
- This pair of papers studies the class 2 HPC Challenge benchmarks as written in Chapel. The first presents our status on the benchmarks as presented at the 2008 HPC Challenge competition at SC08 where we tied for "most elegant" implementation. The second is a tutorial that walks through a slightly older version of the codes in detail, providing a gentle introduction to Chapel. The papers are best read in combination, but either can be read separately as well.
- Closing the Parallelism Gap with the Chapel Language
- An interview about Chapel conducted by HPCwire for SC08
- Multiresolution Languages for Portable yet Efficient Parallel Programming
- This is a position paper written in Q&A format that serves as the first written description of Chapel's multiresolution language design philosophy.
- An Approach to Data Distributions in Chapel (preprint). Roxana E. Diaconescu and Hans P. Zima. International Journal of High Performance Computing Applications, August 2007, 21(3): 313-335.
- This paper presents early exploratory work in developing a philosophy and foundation for Chapel's user-defined distributions.
- Global-view Abstractions for User-Defined Reductions and Scans. Steven J. Deitz, David Callahan, Bradford L. Chamberlain, Lawrence Snyder. In Proceedings of the Eleventh ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming
- This paper outlines our general strategy for supporting user-defined reductions and scans in Chapel.
- The Cascade High Productivity Language. David Callahan, Bradford L. Chamberlain, Hans P. Zima. In 9th International Workshop on High-Level Parallel Programming Models and Supportive Environments (HIPS 2004), pages 52-60. IEEE Computer Society, April 2004.
- This is the original Chapel paper which lays out some of our motivation and foundations for exploring the language. The language has evolved greatly since this paper was published, but it remains a good starting point for learning about Chapel.
Presentations:
- Chapel: the Cascade High Productivity Language, from the SC08 workshop: Bridging Multicore's Programmability Gap, November 17, 2008.
- These slides give an overview of Chapel with an emphasis on the emergence of multicore processors in the mainstream and HPC.
- Introduction to Chapel: the Cascade High-Productivity Language, SC08 tutorial
- These slides provide a tutorial introduction to Chapel and provide an in-depth overview of its features.
- Chapel: Productive Parallel Programming at Scale (video), from the Google Seattle Conference on Scalability, June 14, 2008
- This is an abridged Chapel overview talk, aimed at more of a mainstream technical audience, possibly with datacenter leanings, rather than the HPC community
- Chapel: the Cascade High Productivity Language, presented at UT Austin, June 3, 2008.
- This is a Chapel overview talk that has more code examples and coverage of ZPL than the presentations above.
Research Collaborations:
We are currently involved in the following collaborations related to Chapel. If you would like to discuss a new collaboration possibility, please contact us at the email address below.
- Notre Dame/ORNL - We are involved in a study with Peter Kogge, Srinivas Sridharan, and Jeffrey Vetter to look at asynchronous software transactional memory (STM) on distributed memory architectures in the context of Chapel.
- OSU - We are working with Gagan Agrawal and Bin Ren, looking at using Chapel's user-defined reductions to target data-intensive computations using their FREERIDE technology as a back-end.
- UIUC - We are working with Albert Sidelnik to investigate the use of Chapel to program GPU accelerators.
- PNNL (CASS-MT) - We are pursuing a collaboration with the CASS-MT project at PNNL to support the execution of a Chapel program across hybrid compute platforms.
- ORNL - We work with a number of scientists in the Computer Science Research, Extreme Scale Systems Center, and Future Technologies groups to evaluate Chapel for applications of interest such as MADNESS.
Enabling Technologies:
We are using the following technologies to implement Chapel:
Personnel:
Current team:
- Brad Chamberlain
- Sung-Eun Choi
- Steve Deitz
- David Iten
- Lee Prokowich
Interns:
- Robert Bocchino (UIUC, 2006)
- Jim Dinan (OSU, 2007)
- Mackale Joyner (Rice, 2005)
- Jacob Nelson (U Washington, 2009)
- Albert Sidelnik (UIUC, 2009)
- Andy Stone (Colorado State, 2008)
Alumni:
- David Callahan
- Roxana Diaconescu
- Samuel Figueroa
- Shannon Hoffswell
- Mary Beth Hribar
- Mark James
- John Plevyak
- Wayne Wong
- Hans Zima
Support:
The Chapel project is supported primarily by the Defense Advanced Research Projects Agency under its Agreement No. HR0011-07-9-001. Additional support for Chapel hosting and evaluation has been provided by a grant from the Washington Technology Center.
Contact:
For more information on Chapel, contact us at: chapel_info@cray.com