Chapel
The Cascade High-Productivity Language
Overview:
Chapel is a new parallel programming language being developed by Cray Inc. under the Cascade program, part of DARPA's HPCS program, which has the goal of increasing supercomputer productivity by a factor of ten for the year 2010. Chapel strives to improve the programmability of parallel computers in general, and the Cascade system in particular, by providing a higher level of expression than current parallel languages do and by improving the separation between algorithmic expression and data structure implementation details.
Chapel supports a multithreaded parallel programming model at a high level by supporting abstractions for data parallelism, task parallelism, and nested parallelism. It supports optimization for the locality of data and computation in the program via abstractions for data distribution and data-driven placement of subcomputations. It supports code reuse and generality via object-oriented concepts and generic programming features. While Chapel borrows concepts from many preceding languages, its parallel concepts are most closely based on ideas from ZPL, High-Performance Fortran (HPF), and the Cray MTA's extensions to Fortran/C.
Status:
We have a current draft of the language specification available below. It is neither complete nor perfect, but serves as a good snapshot of where we are and an indication of where we are going. We are interested in feedback on Chapel's specification, particularly from the HPC user community and our mission partners. Please let us know if you would be interested in learning more about Chapel and/or working together to discuss how your computational paradigms might be expressed in Chapel.
We are also developing a prototype implementation of Chapel that will be made available on an open-source basis once we have made more progress. See the "Obtaining Chapel" section below for more detail.
Papers and Presentations:
- Chapel Specification (version 0.775)
- This is our current release of the Chapel language specification. Older versions of the specification are also available: version 0.4, version 0.702, version 0.750, version 0.760
- Bradford L. Chamberlain, David Callahan, Hans P. Zima. Parallel Programmability and the Chapel Language. 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 HPCC Benchmarks in Chapel: STREAM Triad, Random Access, and FFT
Chapel Tutorial Using Global HPCC Benchmarks: STREAM Triad, Random Access, and FFT
- This pair of papers studies three of the HPC Challenge benchmarks as written in Chapel, originally submitted to the SC06 HPCC class 2 competition. The first paper is an overview of the Chapel implementations of the benchmarks with a discussion of performance-related topics. The second walks through the codes in a tutorial-based style as a gentle introduction to Chapel. The papers are best read in combination, but either can be read separately as well.
- Roxana E. Diaconescu and Hans P. Zima. An Approach to Data Distributions in Chapel International Journal of High Performance Computing Applications, August 2007, 21(3): 313-335.
- This paper represents the most up-to-date public description of our general approach and philosophy to providing data distributions in Chapel.
- Steven J. Deitz, David Callahan, Bradford L. Chamberlain, Lawrence Snyder. Global-view Abstractions for User-Defined Reductions and Scans. In Proceedings of the Eleventh ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming
- This paper outlines the strategy for supporting user-defined reductions and scans in Chapel.
- David Callahan, Bradford L. Chamberlain, Hans P. Zima. The Cascade High Productivity Language. 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 paper written on Chapel which lays out some of our motivation and foundations for exploring the language. Details have changed since this paper was published, but it remains a good (if dense) starting point for learning about Chapel.
- An Introduction to Chapel: Cray's High-Productivity Language
- These slides were presented at the AHPCRC PGAS Conference 2005, held on September 12-14, 2005.
(an earlier version of this talk appeared at the Language Runtimes 2004 Workshop (LaR 2004) and is available there).- Chapel: Compiler Challenges
- These are slides from a panel presentation between the HPCS vendors held at LCPC 2005 on October 21, 2005. They give a brief overview of the language and then enumerate some of the compilation challenges that we anticipate (or are currently dealing with), given our language choices.
Obtaining Chapel:
Chapel is not yet available for a public download. We currently have an initial limited release available for early evaluation by users from the HPC and parallel programming communities. If you are interested in obtaining an early copy of the release, please contact at the address below with a statement of your interest.
You can also grab an open-source copy of the iterative flow analysis engine that was developed during phase II at http://sourceforge.net/projects/ifa/ (sourceforge), available under the MIT license.
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.
- UIUC - We have an ongoing research collaboration with Vikram Adve and Robert Bocchino to study Software Transactional Memory (STM) concepts for distributed memory architectures (see Software Transactional Memory for Large-Scale Cluters at PPoPP'08 for some initial results: paper, slides).
- ORNL - We work with scientists in the Computer Science Research and Future Technologies groups to evaluate Chapel for applications of interest such as MADNESS.
- CMU - We are working with Franz Franchetti to study the suitability of Chapel as a portable parallel back-end language for the SPIRAL program generation system.
- EPCC / U. Edinburgh - We are kicking off a study with Michele Weiland and Thom Haddow to evaluate the performance of Chapel's task-parallel features on a single locale.
Enabling Technologies:
We are using the following technologies to implement Chapel:
Personnel:
Current team:
- Brad Chamberlain
- Steve Deitz
- Samuel Figueroa
- David Iten
Alumni:
- Robert Bocchino
- David Callahan
- Roxana Diaconescu
- Jim Dinan (summer intern)
- Shannon Hoffswell
- Mary Beth Hribar
- Mark James
- Mackale Joyner
- 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