What is Chapel?
Chapel is a programming language designed for productive parallel computing at scale.
Why Chapel? Because it simplifies parallel programming through elegant support for:
- distributed arrays that can leverage thousands of nodes' memories and cores
- a global namespace supporting direct access to local or remote variables
- data parallelism to trivially use the cores of a laptop, cluster, or supercomputer
- task parallelism to create concurrency within a node or across the system
- GPU programming in a vendor-neutral manner using the same features as above
- productive: code tends to be similarly readable/writable as Python
- scalable: runs on laptops, clusters, the cloud, and HPC systems
- fast: performance competes with or beats C/C++ & MPI & OpenMP
- portable: compiles and runs in virtually any *nix environment
- open-source: hosted on GitHub, permissively licensed
New to Chapel?
As an introduction to Chapel, you may want to...- watch an overview talk or browse its slides
- read a chapter-length introduction to Chapel
- learn about projects powered by Chapel
- check out performance
highlights like these:
- read about GPU programming in Chapel, or watch a recent talk about it>
- browse sample programs or learn how to write distributed programs like this one:
use CyclicDist; // use the Cyclic distribution library config const n = 100; // use --n=<val> when executing to override this default forall i in Cyclic.createDomain(1..n) do writeln("Hello from iteration ", i, " of ", n, " running on node ", here.id);
What's Hot?
- Chapel 1.32 is out—read its announcement and release notes, or download it!
- Video links and presentation slides from CHIUW 2023 are now available online
- View recent talks
from PASC, LinuxCon, CUG, WAMTA, PNW PLSE, ...
- Read a new article by Marjan Asgari et al. in Environmental Modelling & Software
- Also see: What's New?