A Productive Parallel Programming Language

Technologies
c, python, c++, chapel, high performance computing
Topics
compilers, programming languages, distributed computing, high performance computing, parallel computing
A Productive Parallel Programming Language

About Chapel

Chapel is an open-source programming language designed for productive parallel computing at scale. Chapel is implemented 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 are being led by HPE in collaboration with academia, computing centers, and industry. Chapel offers a unique experience for students to work on projects involving high-performance computing, parallel programming, and compiler development.

Core features

Native Parallelism

Chapel supports parallelism at the language level. For instance, Chapel provides a "coforall" loop, which is similar to a "for" loop and creates a separate task per iteration of the loop body. These explicit parallelism features make it easier to reason about the parallelism in your algorithm and program.

Data and Task Locality

When working on a large machine, the location of some data relative to the task which uses it or other data with which it must work plays a key role in performance. Chapel provides features which allow you to control that placement, both within a data structure and outside it.

Multiresolution Philosophy

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.

Modern Language Features

Chapel supports code reuse and rapid prototyping via object-oriented design, type inference, and features for generic programming.

Interoperability

Existing code from other languages can be integrated into Chapel programs (or vice-versa) via interoperability features.

2021 Program

Successful Projects

Contributor
Divye Nayyar
Mentor
Michael Ferguson, Aniket Mathur
Organization
Chapel
Go-Style Channels
This project aims to add support of Go-Style Channels to the Chapel language. In Go, a channel is used to synchronize and communicate between...
Contributor
Prasanth Duvvuri
Mentor
Lydia Duncan, Garvit Dewan, Nikhil Padmanabhan, Engin Kayraklioglu
Organization
Chapel
Matrix Exponentials
Matrix Exponentials are used in solving systems of linear differential equations. It is also widely used in Quantum Mechanics (Schrodinger's...
Contributor
Lakshya Singh
Mentor
Michael Ferguson, Krishna Dey, Ankush Bhardwaj
Organization
Chapel
Socket Library
The Proposal contains details for implementation of Socket Module to be completed within the timeline of GSOC in the summers. Key elements of the...