High-level parallel programming using Chapel

Presented by David Bunde and Kyle Burke.
Educator program session at SC 2013.


Chapel is a parallel programming language that provides a wide variety of tools to exploit different kinds of parallelism. It is flexible, supporting both OO programming and a low-overhead style similar to scripting languages. Of particular note is its expressiveness; a single keyword launches an asynchronous task or performs a parallel reduction. Data parallelism is easily expressed using domains, index sets that can be grown, translated, or intersected. The availability of high-level parallel operations such as these makes Chapel well-suited for students since concise examples help them focus on the main point and students can quickly try different parallel algorithms. This session presents Chapel modules we have used to teach parallel programming concepts.