The Chapel Parallel Programming Language


What is Chapel?

Chapel is a programming language designed for productive parallel computing on large-scale systems. Chapel's design and implementation have been undertaken with portability in mind, permitting Chapel to run on multicore desktops and laptops, commodity clusters, and the cloud, in addition to the high-end supercomputers for which it was designed. Chapel's design and development were kicked off at Cray Inc. in collaboration with contributors from academia, computing centers, industry, and the open-source community. Ongoing development is led by the Chapel team at Hewlett Packard Enterprise (HPE).

Chapel is being developed in an open-source manner at GitHub under the Apache v2.0 license. The implementation makes use of other third-party open-source packages under their own licenses. Chapel was initiated as part of Cray's entry in the DARPA High Productivity Computing Systems program (HPCS). We are currently undertaking a multi-year effort to turn that prototype into a product-grade implementation.

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 and affinity. 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. Existing code can be integrated into Chapel programs (or vice-versa) via interoperability features.

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 Python, C, C++, Fortran, Java, Matlab, and the like. 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/Cray XMT extensions to C and Fortran.