a Productive Parallel Programming Language
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 Cray Inc. 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.
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.
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.
Existing code from other languages can be integrated into Chapel programs (or vice-versa) via interoperability features.
Chapel 2019 Projects
Concurrent-Safe Memory Reclamation SystemsCurrently Chapel has support for ‘shared’ lifetime-managed objects, which is implemented using reference-counting. Unfortunately reference counting...
Distributed Sparse Linear Algebra Library in ChapelThis project includes adding BLAS, Sparse linear algebra and iterative solvers into Chapel.
Improvements to Chapel LLVM BackendThe Chapel compiler optionally can produce LLVM IR and use LLVM optimizations with –llvm. Going forward, Chapel will use LLVM more and more because...
Unit Test FrameworkDeployment is the last stage in the application development process and before that, any application undergoes a comprehensive testing process to...