CSE590o: Parallel Programming Environments

Course Description:

This quarter's parallel programming seminar will focus on reviewing Chapel, a new parallel programming language being developed in Seattle by Cray Inc. Cray is undertaking Chapel as part of its entry in the government's High Productivity Computing Systems program (HPCS) which has the goal of raising user productivity on high-end parallel systems by 10x for the year 2010. Chapel aims to support general parallel programming including data parallelism (based on features developed at UW in the ZPL programming langauge), task parallelism, and nested parallelism. Chapel also strives to narrow the gap that currently exists between high-end and mainstream languages by supporting OOP, generics, and type inference. For more information on Chapel, please refer to: http://chapel.cs.washington.edu

The main goals of this seminar are to introduce the UW community to the Chapel language, to solicit feedback on the language from the academic community, and to identify opportunities for future collaboration. The seminar will be led by members of the Chapel team from Cray, and will be loosely structured around a set of language features each week followed by open discussion. The draft Chapel language specification will serve as the basis for readings.

This seminar is targeted toward those whose interests include programming languages, compilers, parallel programming, multicore programming, scientific computation, and tools/programming environments. This seminar has the potential to lead to quals projects for students interested in the topics covered.

For more information, please contact Brad Chamberlain at: bradc@cray.com

Mailing List:


The CSE 590o blog is a completely optional way for people to continue in-class discussions on their own time.


Date Topics Reading Sample Codes Facilitator Co-facilitator(s) Presentation Materials
Sep 26 Chapel Context
Seminar Organization/Goals
--   Chamberlain -- slides
Oct 3 Chapel Motivation
Language Overview
IJHPCA article:
Parallel Programmability and the Chapel Language
  Chamberlain -- slides
related slides from a recent Google talk
Oct 10 Chapel Basics:
  • basic types
  • variable declarations
  • expressions/statements
  • type conversions
  • function delarations/calls
  • modules
  • tuples
  • Language Spec, Sections 6-13, 17 01decls.chpl
    Chamberlain -- --
    Oct 17 Chapel OOP & Generics:
  • records and classes
  • unions
  • generic classes/functions
  • function resolution
  • Language Spec, Sections 14-16, 21   Deitz Ylvisaker (generics) Ben's slides
    Oct 24 Chapel Ranges, Domains, Arrays:
  • arithmetic, associative, sparse, opaque
  • domain operations
  • array operations
  • reductions and scans
  • Language Spec, Sections 18-19, 24   Chamberlain --  
    Oct 31 Catch up:
  • topics we didn't get to
  • unanswered questions
  • quals project/collaborations brainstorming
  • --   Chamberlain --  
    Nov 7 Iterators and Promotion
  • user-level semantics
  • use in language concepts
  • implementation strategies
  • relation to promotion
  • Language Spec, Section 20   Deitz --  
    Nov 14 Task Parallelism, Synchronization, Locality
  • begin, cobegin, coforall
  • sync, single variables
  • atomic sections?
  • locale type, on clauses
  • Language Spec, Section 22   Deitz Kimball (synchronization)  
    Nov 21 NO MEETING (Thanksgiving week) -- -- -- -- --
    Nov 28 Locality, Distributions
  • locale type and array
  • on clauses
  • distributed task parallelism
  • plan for distribution
  • Language Spec, Sections 23   Chamberlain --  
    Dec 5 Open Issues/Grab-Bag
  • Exceptions?
  • Memory Management?
  • I/O?
  • Interoperability?
  • Libraries/Standard Modules?
  • Tools? (IDE, Debugger, Performance)
  • X10/Fortress?
  • other related work?
  • TBD, if any   Chamberlain --