Chapel: A parallel language for productive scalable computing

This is a past event

18 people went

Details

Presenter: Brad Chamberlain. Brad led the early efforts to define Chapel's syntax and semantics, and is the technical lead for the Chapel group at Cray.

Chapel (http://chapel.cray.com) is an open-source language for general parallel computing at scale whose design and development are being led by Cray Inc. Chapel is designed for portability and can be run on laptops, commodity clusters, and the cloud, in addition to supercomputers from Cray and other vendors.

As a teaser, the following two (complete) programs demonstrate ways of spinning up parallelism across all the processor cores of a distributed system in Chapel using implicit vs. explicit styles of parallelism:

implicit (data parallel):

use CyclicDist;
config const n = 100;
const ProblemSpace = {1..n} dmapped Cyclic(startIdx=1);

forall i in ProblemSpace do
writeln("Hello from iteration ", i, " running on node ", here.id);

explicit (task parallel):

coforall loc in Locales do
on loc do
coforall tid in 0..#here.numPUs() do
writeln("Hello from task ", tid, " running on node ", here.id);

As a parallel language, Chapel has concepts for creating parallelism, data-centric synchronization, and direct access to variables whether they are stored locally or remotely. As a productive language, Chapel supports type inference, iterators, generic programming, meta-programming, and OOP. As a language developed by Cray, Chapel is statically typed, compiles down to the metal, and can generate performance that competes with C + Pthreads/OpenMP + MPI.

In this session, I'll give an overview of Chapel, take questions and follow audience whims as we go, demonstrate Chapel live, and give an indication of recent performance and scalability results. If you have any specific requests or topics of interest, please feel free to send them in ahead of time.